ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 페이징 기법이란 무엇인가
    CS지식/운영체제 2021. 6. 21. 22:03

    페이징 기법은 고정 분할 방식으로 메모리를 분할하여 가상 주소를 물리 주소로 변환하는 방법이다.

    위 그림을 보면 가상 메모리는 프로세스 입장에서 바라본 메모리 공간으로 항상 0번지부터 시작한다.

    가상 메모리의 분할된 영역은 페이지(page)라고 하며 첫 번째 영역을 페이지 0으로 번호를 매겨 아래로 순차적으로 번호를 매긴다.

    물리 메모리의 각 영역은 가상 메모리와 구분하기 위해 프레임(frame)이라고 한다.

    프레임도 페이지와 마찬가지로 번호를 매기고 페이지와 프레임의 크기는 같다.

    페이지와 프레임의 크기가 같기 때문에 페이지가 물리 메모리에 매핑이 될 때 어느 위치에나 올라갈 수 있다.

    어떤 페이지가 어느 프레임에 있는지에 대한 매핑 정보는 페이지 테이블에 저장을 한다.

     

    페이지 테이블은 하나의 열(column)으로 구성되어 모든 페이지의 정보를 순서대로 가지고 있다.

    즉, 위에서부터 차례대로 페이지 0의 위치, 페이지 1의 위치, ...로 프레임 번호를 저장했기때문에 하나의 열로 관리할 수 있다.

    만약, 페이지가 물리 메모리에 올라가 있지 않다면 invalid로 표시한다.

    위 그림에서는 페이지 테이블을 간략하게 페이지 번호와 그에 매칭한 프레임 번호로만 나타냈지만 정확히 말하면 페이지 번호, 플래그 비트, 프레임 번호로 구성된다.

    플래그 비트접근 비트, 변경 비트, 유효 비트, 읽기 비트, 쓰기 비트, 실행 비트 등으로 이루어져 있다.

    - 접근 비트: 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트

    - 변경 비트: 페이지가 메모리에 올라온 후 데이터의 변경이 있었는지 알려주는 비트

    - 유효 비트: 페이지가 물리 메모리에 있는지를 나타내는 비트

    - 읽기, 쓰기, 실행 비트: 페이지에 대한 읽기, 쓰기, 실행 권한을 나타내는 비트 (접근을 차단하는 데 사용)

     

     

    시스템에는 여러 개의 프로세스가 존재하고 하나의 프로세스마다 각자의 페이지 테이블이 존재해야하기 때문에 페이지 테이블 관리는 복잡하다.

    메모리 관리자는 특정 프로세스가 실행될 때마다 해당 페이지 테이블을 참고하여 가상 주소를 물리 주소로 변환하는 작업을 시행한다.

    이러한 작업을 위해서는 메모리 관리자가 페이지 테이블을 자주 접근해야하고 사용해야하므로 빨리 접근할 수 있어야한다.

    그래서 페이지 테이블은 물리 메모리 영역 중 운영체제 영역의 일부분에 모아 놓는다.

    여기서 페이지 테이블 관리의 가장 큰 문제점이 발생한다.

    프로세스의 갯수에 비례하여 페이지 테이블의 갯수가 증가하는데 페이지 테이블이 늘어날수록 물리 메모리를 차지하는 비중은 커지게 되어 실제로 프로세스가 사용할 수 있는 영역이 매우 작아질 것이다.

    이를 방지하기 위해 페이지 테이블의 크기를 적절하게 유지하는 것이 중요하다.

    우리는 프로세스에서 필요한 부분은 물리 메모리에 올라오고 그렇지 않은 부분은 스왑영역(하드디스크)에 있다고 배웠다.

    페이지 테이블도 마찬가지로 물리 메모리의 크기가 작을 때에는 페이지 테이블의 일부도 스왑영역으로 옮겨진다.

    이렇게 페이지 테이블의 일부가 스왑영역으로 옮겨지기도 하고 페이지 테이블의 전체가 물리 메모리에 있을 수 있는 경우가 생기기때문에 주소 변환 방법(페이지 테이블 매핑 방식)이 달라진다.

    매핑방식에는 직접 매핑, 연관 매핑, 집한-연관 매핑, 역매핑이 있다.

     

    위에서 말한 페이지 테이블의 직접적인 관리 이외에 메모리 관리자는 주소 변환을 위해서 페이지 테이블의 위치를 빨리 파악할 필요가 있는데 이를 위해서 각 페이지 테이블의 시작 주소를 저장하고 있는 PTBR(Page Table Base Register)응 사용한다.

    (PTBR은 각 프로세스의 PCB에 저장되는 데이터로 물리 메모리 내에 페이지 테이블의 시작 주소를 가지고 있다.)

     

     

    댓글

Designed by Tistory.