페이징(Paging)

OS/Theory 2016. 4. 17. 09:30

<페이징(Paging)>

모든 프로세스들이 같은 크기의 조각들로 나뉘어야 하는데, 이때 한 조각을 페이지라 부른다. 메모리 역시 프레임이라 불리는 페이지와 같은 크기로 나누어져 있으며 일련의 번호가 매겨져 있다.

한 프로세스의 전체 페이지들은 디스크에 저장되고, 이 중 몇 개가 메모리에 비연속적으로 다른 프로세스들의 페이지들과 섞여 적재되는데, 프로세스의 실행이 진행되는 과정에 따라 메모리를 오가며 교체되는 단위가 페이지이며, 이것은 곧 사상의 단위가 된다.

운영체제는 가상주소를 실주소로 변환하기 위해 프로세스당 하나의 페이지 테이블을 만들어야 하는데 이것을 페이지 사상 테이블이라 부르며, 테이블 크기는 해당 프로세스의 페이지 개수에 비례한다.

n개의 페이지를 가지는 프로세스의 페이지 테으블은 n개의 엔트리로 구성되고, 엔트리 하나의 크기는 보통 4byte이다.


엔트리에 들어있는 정보중에 중요한 것은 페이지가 메모리에 적재되어 있는가를 나타내는 존재 비트(메모리에 적재:1, 아닐경우:0)를 갖는다.

 



 

실행시 참조되는 가상주소는 페이지 번호(p)와 페이지 내에서의 위치(d)로 표시된다.

실행 중인 프로세스의 페이지 테이블 시작주소는 페이지 테이블 기준 레지스터에 들어있다. 먼저, 기준 레시즈터의 값에 p를 더해 페이지 테이블에서 페이지 p의 사상 정보를 갖고 있는 엔트리를 찾은 후, 존재비트를 확인하게 될 것이다.

존재비트가 1일 경우, p가 적재되어 있는 프레임 번호 f를 알 수 있으므로, 이 번호 값에 페이지 크기를 곱하면 메모리에서 이 프레임의 시작주소를 얻게 되고 여기에 d를 더하면 프레임 내에서 접근해야 할 워드의 주소(실주소)로 접근하게 된다.

존재비트가 0일 경우, 페이지가 메모리에 없음을 의미하고 먼저 디스크 주소로부터 이 페이지를 메모리에 적재할 것이다.




Copyright2014 By 휴먼사이언스

 

'OS > Theory' 카테고리의 다른 글

페이지의 보호와 공유  (0) 2016.04.19
TLB(Translation Lookaside Buffer)  (2) 2016.04.18
가상 메모리(Virtual Memory)  (0) 2016.04.17
메모리 관리  (0) 2016.04.16
교착상태 해결방법  (0) 2016.04.15
posted by 경원구