본문 바로가기

컴퓨터공학/운영체제

다중페이징시스템

반응형

다중페이지시스템이란 ? 프로세스마다 페이지를 나누어서 메모리에 할당하게 되면 많은 공간이 낭비하게 된다

가령 실제 프로그램은 10KB 밖에 안되는데 4GB를 다 4KB로 나눌 필요가 없다. 고로 필요한 부분만 페이지를 나눠서 할당하게 되면 공간의 활용을 높일 수 있다. 이를 통해 페이지를 단계별로 나누어 페이지 디렉토리 개념을 써서 필요한 부분만 쓰는 방법

요약 : 모든 부분을 페이지로 나눌 필요 없이 단계적으로 나누어서 필요한 부분만 페이지로 나누어서 페이지 테이블에 두고 이것을 페이지 디렉터리에 저장해둔다.

 

다중페이지시스템 구조

기존 페이지는 32bit(4KB) 0~11bit : 변위 , 12~31bit : 페이지 번호로 썼지만, 0~11bit : 변위, 12~21bit : 페이지 번호, 22~31bit : 페이지 디렉터리로 나눈다. 

CR3 레지스터가 페이지 디렉터리 baseAddress로 접근하여 페이지 디렉터리 정보를 찾아내서 페이지 테이블로 접근하여 변위로 접근하여 물리주소를 구한다.

다중페이지시스템의 페이지 구조

 

CPU,MMU,RAM 구조로 보는 페이징시스템

 

이렇게 접근하게 되면 가상주소에서 물리주소를 찾기 위해 MMU 에서 RAM에 두번 접근하게 된다. 메모리 속도가 CPU에 비해 속도 차이가 많이 나기때문에 TLS를 도입

TLS가 있으면 MMU가 TLS에 먼저 접근하여 기존에 저장되어 있는 주소가 있는지 확인하고 있으면 바로 접근하여 Page Table에 접근하지 않고 바로 Page로 접근할 수 있다.

페이징 시스템과 공유메모리

프로세스마다 커널의 영역 1GB를 가지고 있는데 그 공간은 실제 메모리에 다 따로 할당되는게 아닌 각 프로세스의 페이지 테이블이 같은 위치를 가리키고 있어 실제적으로는 하나만 만들면된다. 공유 메모리(IPC에 나온 내용)도 마찬가지이다. 

리눅스에는 fork 될때 동일한 프로세스가 생성되는데 이때 페이지 테이블이 기존의 실제 메모리 공간과 동일한 위치를 가리키고 있다가 수정이 될때 그 부분만 페이지 테이블이 다른 위치를 가리킨다. 이러면 효율적인 메모리 공간 활용과 빠른 프로세스 생성을 할 수 있다.

 

반응형

'컴퓨터공학 > 운영체제' 카테고리의 다른 글

페이지교체 알고리즘  (0) 2019.11.27
페이지폴트  (0) 2019.11.27
가상메모리의 이해 - 페이징 기법  (0) 2019.11.25
가상메모리  (0) 2019.11.25
교착상태와 기아상태  (0) 2019.11.25