개발 공부

(OS) 페이징 본문

CS 스터디

(OS) 페이징

아이셩짱셩 2021. 6. 28. 12:26

노션에서 보기

바로가기

한마디로

메모리 효율을 향상시키기 위한 가상메모리를 운용하는 기법 중 하나로

프로세스를 고정 크기로 분할하여 가상메모리에 할당하고 물리메모리를 이와 동일한 크기인 프레임으로 나누어 프로세스에 필요한 페이지만 프레임에 적재하여 사용하는 기법

 


가상메모리 (Virtual Memory)

 

  • 주기억장치(물리메모리) 메모리의 용량을 확장하기 위해 보조기억장치를 마치 주기억장치인 것처럼 활용하는 방법
  • 가상메모리는 프로세스마다 논리적 주소공간을 가지고 이 주소공간의 일부는 물리적 메모리에 적재되고 일부는 스왑영역에 존재한다.
  • 장점
    • 프로세스의 일부만 올리기 때문에 메모리 사용량이 감소한다.
    • 디스크에서 일부의 데이터만 입출력하기 때문에 입출력 오버헤드가 감소한다.
    • 시스템이 더 많은 프로세스를 수용할 수 있다.
    • 프로그램이 물리적 메모리의 용량 제약에서 자유롭다 (메모리보다 큰 프로그램 실행 가능)
  • 가상메모리 기법은 프로세스의 주소공간을 적재하는 단위에 따라 요구 페이징 기법과 요구 세그멘테이션 기법 두개로 나눌 수 있다.

 

페이지와 프레임

  • 정의
    • 프로세스를 가상메모리의 주소공간에 페이지 단위로 나누어 놓고 당장 사용될 페이지만을 물리메모리에 적재하는 기법
    • 가상메모리를 나눈 영역을 페이지,물리메모리를 나눈 영영을 프레임이라고 한다.
    • 페이지와 프레임은 크기는 동일하게 관리된다.
    • 페이징은 고정 분할 분산 메모리 할당 기법이다. (세그멘테이션은 가변 분할 분산)
    • 페이징 기법을 통해 컴퓨터의 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없으며, 반대로 연속적으로 존재하지 않는 물리적 메모리라도 페이징 기법을 통해 연속적으로 존재하는 것처럼 이용될 수 있다.
  • 장점
    • 페이지를 사용하면 외부단편화가 발생하지 않는다.
    • 메모리를 효율적으로 사용할 수 있다.
    • 공유 페이지 이용 가능
    • 메모리 압축 및 통합 기법 사용하지 않아도 됨
  • 단점
    • 페이지의 갯수가 많아지기 때문에 페이지 단위의 입출력이 자주 발생하게 된다.
    • 프로세스의 여러 페이지를 메모리에 분산 적재하기 때문에 운영체제의 관리 부담이 크다.
    • 내부단편화 문제는 해결되지 않는다.
    • 페이지 단위를 작게하면 내부 단편화 문제도 해결할 수 있겠지만 대신 page mapping 과정이 많아지므로 오히려 효율이 떨어질 수 있다.
  • 페이지 테이블
    • 페이징 기법에서 페이지는 페이지테이블(Page Table) 이라는 자료구조 형태로 관리된다.
    • 페이지테이블은 프로세스의 페이지 정보를 저장하고 있으며, 하나의 프로세스는 하나의 페이지 테이블을 가진다.
    • 페이지테이블은 Index 를 키로 해당 페이지에 할당된 메모리(Frame)의 시작 주소를 Value 로 저장하고 있다.
    • 페이지 테이블 엔트리(Page Table Entry)는 페이지 테이블의 레코드를 말한다.
      • 페이지 기본 주소
      • 플래그 비트
      • 여러 상태 비트
      • 보호 비트

페이지 부재 (page fault)

  • CPU에서 요청한 페이지가 현재 메모리에 없어 유효-무효 비트가 무효로 세팅되어 있는 경우를 말한다.
  • 페이지 부재 발생 시 페이지를 디스크에서 읽어와야 하는데 이 과정에서 막대한 overhead가 발생한다. 따라서 요구 페이징 기법은 페이지 부재 발생률이 성능에 큰 영향을 끼친다.
  • 페이지 부재 시 동작 과정 
    1. MMU(Memory Management Unit)가 페이지 부재 트랩을 발생시킨다. (트랩=소프트웨어 인터럽트)
    2. 인터럽트로 인해 커널모드로 전환되어 OS의 페이지 부재 처리 루틴이 호출된다.
    3. 해당 부재 페이지의 보호비트를 참조해 접근이 가능한지 체크한다.
    4. 물리메모리에 비어있는 프레임을 할당받고 그곳에 페이지를 읽어온다.
    5. 페이지를 읽어오는 동안 프로세스는 wait상태가 된다.
    6. 디스크 입출력 완료시 인터럽트를 발생시키고 해당 페이지의 유효-무효 비트를 유효로 세팅한다
    7. 참고) MMU는 CPU코어 안에 탑재되어 가상주소를 실제 메모리 주소로 변환해주는 장치

페이지 교체

  • 페이지 부재 발생시 메모리에 해당 페이지를 적재해야 하는데 이때 메모리가 꽉찼다면 어떡해야 할까?
  • 이때 메모리에 있는 페이지중 가장 쓸모 없어보이는 것을 골라 스왑 영역으로 쫒아내고 그 자리에 페이지 부재된 페이지를 적재해야 한다. 이 과정이 페이지 교체이다.
  • 교체할 페이지를 선정할 때 교체 대상이 될 프레임의 범위에 따라 전역 교체와 지역 교체로 나눌 수 있다.
  • 전역교체 방법은 모든 페이지 프레임이 교체 대상이 될 수 있는 방법이다. 지역 교체 방법은 현재 수행중인 프로세스에게 할당된 페이지 프레임 내에서만 페이지 교환을 하는 방법이다.
  • 페이지 교체 알고리즘
    • 최적 교체(OPT) 알고리즘
    • FIFO
    • LRU(Least Recently Used)
    • LFU(Least Frequently Used)
    • NUR(Not Used Recently)

 

참고 :

가상 메모리(virtual memory) (1.. : 네이버블로그

페이징(paging) (1) 페이지 크기와 내부 단편화의 관계 : 네이버 블로그

가상 메모리(Virtual Memory)와 페이징(Paging)에 대한 정리 :: Jins' Dev Inside

페이징 - 위키백과, 우리 모두의 백과사전

[OS기초] 메모리 관리(가상 메모리, 페이지 부재, 페이지 교채, 스레싱)

메모리 단편화(Memory Fragmentation)가 무엇이고 왜 발생하는가?

https://slideplayer.com/slide/17004367/

https://velog.io/@yuhyerin/메모리관리2

 

'CS 스터디' 카테고리의 다른 글

(데이터베이스) sql vs nosql  (0) 2021.07.19
(네트워크) TCP 3ways, 4ways handshake  (0) 2021.07.07
Comments