chhggg
article thumbnail
Published 2023. 2. 25. 23:41
[OS] Page table 이란? OS

운영체제는 하나의 물리 메모리(RAM)를 이용해 모든 프로세스를 관리한다.

→ 효율적으로 관리해야 함(특정 프로세스가 다른 프로세스가 로드한 데이터를 읽지 못하게 해야함)

 

 

페이징

⇒ 메모리를 고정된 크기의 페이지로 나누어 관리하는 것.

✔️ 레지스터에 시작주소를 담아서 사용하기에는 어찌됐든 그 내용을 담을 연속된 메모리 영역이 필요하다. 연속된 메모리 영역을 확보하는 것이 어렵기에 (외부 단편화) 프로세스의 물리 주소가 연속되지 않아도 되도록 하는 것.

페이지 테이블을 이용하여 논리메모리를 실제 메모리로 변환하여 실제 메모리에 접근.

(일반적으로 물리메모리는 동일한 크기의 프레임으로, 논리 메모리는 동일한 크기의 페이지로 나눔)

페이징을 통해 외부 단편화의 필요성을 피할 수 있음

 

  • 외부 단편화란?

메모리의 빈 공간이 불연속적으로 있어 다른 프로세스를 할당하기 충분한 크기임에도 할당하지 못하는 것.

프로세스 A,B,C를 할당하고 9k의 공간이 남아있지만 단편화가 일어나 프로세스 D를 할당할 수 없다

 

 


 

 

페이지 테이블

 

테이지 테이블의 인자 하나하나를 PTE (Page Table Entry) 라고 함

각 PTE의 20bit는 물리 메모리의 페이지 넘버 (PFN), 12bit는 flag로 사용

Present bit(P), 이 페이지에 쓰기가 허용되는지 결정하는 읽기/쓰기 비트 (R/W), 사용자 모드 프로세스가 페이지에 액세스 할 수 있는지를 결정하는 사용자/슈퍼바이저 비트 (U/S), 이 페이지에 대한 하드웨어 캐시의 동작을 결정하는 몇몇 비트 (PWT, PCD, PAT 및 G), reference bit(A)와 dirty bit(D), 그리고 마지막으로 페이지 프레임 번호 (PFN) 자체.

 

 

 


 

 

주소 변환

프로세스가 30번지의 내용을 읽으려고 할때...

  1. 가상주소 30번지가 어느 페이지에 있는지 확인 (30번지 = 페이지 3의 0번째 위치)
  2. 페이지 테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있다는 것을 확인
  3. 최종, 물리 메모리의 프레임 1의 0번째 위치에 접근

 

→ 속도 저하 문제, 용량 문제 존재

 

 

 


 

 

속도 저하 문제

: 데이터에 접근하기 위해서는 두번 참조를 거쳐야함

 

*TLB(Translation Look-aside Buffers)

간단하게 page table의 임시저장소를 TLB라고 한다. 자주 쓰는 page table을 TLB에 저장해두는 것.

가상주소를 물리 메모리 주소로 변환할 때, 제일 먼저 TLB를 검색. 만약 TLB에서 검색이 성공하면 (TLB hit) 즉시 물리 메모리 주소를 반환하고, 만약 검색에 실패하면 (TLB miss) 그때 페이지 테이블로 가서 검색을 하게 됨.

 

 

 

 


 

 

용량 문제

*Hierarchical Page Table ( → Two-level paging )

페이지 테이블만을 이용해 표현하기엔 양이 많기 때문에 page directory를 사용하기도 한다.

( 하나의 큰 page table을 선언하기보다는 2단계로 나누어 필요한 page table만을 할당 )

page directory의 각 entry는 page table의 page를 가리킨다.

'OS' 카테고리의 다른 글

[OS] Operating System Organization  (1) 2023.03.01
[xv6] Lab: Xv6 and Unix utilities  (0) 2023.02.01
profile

chhggg

@포뇨링

trivial하네요

검색 태그