개요
- 운영체제는 공간 관리 문제를 해결하기 위해 1)세그멘테이션 2)페이징 기법을 사용함
- 세그멘테이션은 공간을 다양한 크기로 분할 할때 공간 자체가 fragmentation 될 수 있고, 할당은 점점 어려워짐
- 페이징은 동일 크기의 조각으로 분할하여 메모리를 할당하고 상응하는 물리메모리도 페이지 프레임이라고 불리는 고정 크기의 슬롯의 배열이라고 생각함
핵심 질문: 페이지를 사용하여 어떻게 메모리를 가상화 할 수 있을까
세그멘테이션의 문제점을 해결하기 위해 페이지를 사용하여 어떻게 메모리를 가상화 할 수 있는가
기본적인 기법은 무엇인가? 공간과 시간 오버헤드를 최소로 하면서 그 기법을 잘 동작하게 만들기 위한 방법은 무엇인가.
간단한 예제 및 개요
- 총 크기가 64 바이트며 16바이트 페이지로 구성된 작은 주소 공간의 예시
- 실제 주소공간은 32비트의 경우 4GB, 64비트의 경우 훨씬 큼
- 물리 메모리는 고정 크기의 슬롯들로 구성되며, 가상 주소 공간의 페이지들은 물리 메모리 전체에 분산 배치되어 있음
- 장점
- 프로세스의 주소 공간 사용 방식과 상관없이 효율적으로 주소 공간 개념을 지원할 수 있음
- 힙과 스택이 커지는 방향, 어떻게 사용되는가에 대한 가정을 하지 않아도 됨
- 주소 공간의 각 가상 페이지에 대한 물리 메모리 위치 기록을 위하여 운영체제는 프로세스마다 페이지 테이블이라는 자료구조를 유지함
- 페이지 테이블은 프로세스마다 존재함
페이지 테이블
페이지 테이블의 주요 역할은 주소 공간의 가상 페이지 주소 변환 정보를 저장하는 것, 각 페이지가 저장된 물리 메모리의 위치가 어디인지 알려줌. 페이지 테이블은 프로세스마다 존재한다는 사실을 숙지해야함
순서
프로세스가 생성한 가상 주소의 변환을 위해 가상 페이지 번호와 페이지 내의 오프셋 2개의 구성요소로 분할함
가상 주소 공간의 크기가 64바이트일때 가상 주소는 log2 64 가 필요함
페이지 크기는 64바이트의 주소 공간에서 16바이트이며 4페이지를 선택할 수 있어야하고 주소의 최상위 2비트가 그 역할을 함 나머지 비트는 페이지 내에서 원하는 바이트의 위치를 나타냄
프로세스가 가상 주소를 생성하면 운영체제와 하드웨어가 의미있는 물리주소로 변환함
mov 21, %eax
페이지 테이블은 어디에 저장되는가
- 페이지 테이블은 매우 커질수 있음 4KB 크기의 페이지를 가지는 전형적인 32비트 주소 공간을 생각해볼때
해당 가상주소는 20비트 VPN과 12비트 오프셋으로 구성됨 (1KB 페이지를 위해 10비트가 필요하며 4KB는 두비트만 추가) - 20비트 VPN 는 운영체제가 각 프로세스를 위해 관리해야 하는 변환의 개수가 2^20 이라는 것을 의미함
- 물리주소로의 변환 정보와 다른 필요한 정보를 저장하기 위해 PTE 마다 4바이트가 필요
- 각 페이지 테이블을 저장하기 위해서 4MB가 필요
- 실행 중인 프로세스의 페이지 테이블을 저장할 수 있는 회로를 MMU안에 유지할 수 없음
- 페이지 테이블은 운영체제가 관리하는 물리 메모리에 상주한다고 가정
페이지 테이블에는 실제 무엇이 있는가
- 가상 주소를 물리 주소로 매핑하는데 사용되는 자료구조
- 가장 간단한 형태는 선형 페이지 테이블 (linear page table)
- 운영체제는 원하는 물리 프레임 번호를 찾기 위해 가상 페이지 번호로 배열의 항목에 접근하고 항목의 페이지 테이블 항목을 검색함
Page Table Entity bits
- Valid bit: 특정 변환의 유효 여부 프로세스가 무효 메모리에 접근하려고 할때 트랩을 발생시킴
- Protection bit: 페이지를 읽을 수 있는지, 쓸 수 있는지 또는 실행될 수 있는지
- Present bit: 이 페이지가 물리 메모리에 있는지 디스크(Swap out 되었는지) 에 있는지
- dirty bit: 메모리가 반입된 후 페이지가 변경 되었는지
- reference bit: 페이지가 접근되었는지, 어떤 페이지가 인기 있는지를 결정하여 메모리에 유지되어야 하는 페이지를 결정
페이징 : 너무 느림
- 페이지 테이블의 크기가 메모리 상에서 매우 크게 증가 할 수 있음. 페이지 테이블로 인해 처리 속도가 저하될 수 있음
- 하드웨어와 소프트웨어의 신중한 설계 없이는 페이지 테이블로 인해 시스템이 매우 느려질 수 있으며 너무 많은 메모리를 차지함
- 위의 두가지 문제를 해결해야함
- 모든 메모리 참조에 대해 페이지 테이블에서 변환 정보를 반입해야 하기 때문에 반드시 한 번의 추가적인 메모리 참조가 필요함 이 경우에 프로세스는 2배 이상 느려짐
'운영체제' 카테고리의 다른 글
[OSTEP-20] Advanced Page Tables (0) | 2023.12.27 |
---|---|
[OSTEP-19] Translation Lookaside Buffers (1) | 2023.12.27 |
[OSTEP-17] Free Space Management (0) | 2023.12.26 |
[OSTEP-16] Segmentation (1) | 2023.12.26 |
[OSTEP-15] Address Translation (1) | 2023.12.26 |