OS #26 페이징 시스템

underlier12·2020년 4월 7일
0

OS

목록 보기
26/35

26. 페이징 시스템

페이징 개념

크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리하는 것이다. 하드웨어의 지원이 필요하며 페이지 번호를 기반으로 가상 주소/물리 주소 매핑 정보를 기록하고 사용한다.

Intel x86(32bit) -> 4KB, 2MB, 1GB 지원
리눅스 -> 4KB Paging

페이징 구조

프로세스(4GB)의 PCB에 Page Table 구조체를 가리키는 주소가 들어 있다. Page Table에는 가상 주소와 물리 주소간 매핑 정보가 있다.

페이징 활용

page 또는 page frame을 고정된 크기의 block(4KB)로 사용하며 다음과 같이 활용한다.

  • 가상 주소 v = (p, d)
    • p : 가상 메모리 페이지
    • d : p 안에서 참조하는 위치

예를 들어 페이지 크기가 4KB일 때 가상 주소의 0~11 bit가 변위(d)를 나타내고 12bit부터 페이지 번호가 될 수 있다.

페이징 테이블

Page table은 물리 주소에 있는 페이지 번호와 해당 페이지의 첫 물리 주소 정보를 매핑한 표이다. 가상 주소르 다시 해석하자면,

  • 가상 주소 v = (p, d)
    • p : 페이지 번호
    • d : 페이지 처음으로부터 떨어진 위치

라고도 볼 수 있다.

페이징 시스템 동작

해당 프로세스에서 특정 가상 주소에 접근하려면

  • 해당 프로세스의 페이지 테이블에 가상 주소가 포함된 페이지 번호 확인
  • 있다면 페이지가 맵핑된 첫 물리 주소 확인 (p')
  • 물리 주소 계산 (p' + d)

의 순서로 진행된다.

예를 들어 다음과 같이 프로세스와 메모리가 존재 할 때 aspect라는 부분에 접근하기위해서는

  • 해당 페이지인 page3를 테이블로부터 찾아내며, (0000005h)
  • 해당하는 물리주소를 확인하고, (1000h)
  • 물리주소를 계산하여 접근한다. (1000h + 2)

프로세스가 생성이 되어 가상/물리 주소가 할당되었지만 실질적으로 메모리에 올렸는지 여부를 판가름하는 valid-invalid bit가 존재한다(사용 여부 결정)

페이징 시스템과 MMU

이전 시간에 확인했듯 CPU는 가상 주소에 접근 할 때 MMU 하드웨어를 통해 물리 메모리에 접근한다. 프로세스 생성 시 테이블 정보를 생성하며 다음과 같이 절차를 밟는다.

  • PCB 등에서 해당 페이지 테이블이 접근 가능하고 관련 정보는 물리 메모리에 적재
  • 프로세스 구동 시 해당 페이지 테이블 base 주소가 별도 레지스터에 저장(CR3)
  • CPU가 가상 주소 접근 시 MMU가 페이지 테이블 base 주소를 접근해서 물리주소 가져 옴
profile
logos and alogos

0개의 댓글