운영체제

[OS] 페이징으로 가상 메모리 관리하기, 페이지 테이블, TLB

3o14 2023. 4. 23. 09:01
728x90
반응형

페이징으로 가상 메모리 관리하기



프로세스를 메모리에 연속적으로 할당하는 방식의 문제점 두 가지

1. 외부 단편화
2. 메모리보다 큰 프로그램은 적재할 수 없음

첫 번째는 이전 포스팅에서 다룬 외부 단편화 문제입니다. 두 번째는 4GB 메모리가 설치된 컴퓨터로는 4GB 이상의 프로그램을 실행할 수 없다는 문제입니다.

이러한 문제들은 가상 메모리(virtual memory)라는 것을 이용하면 해결할 수 있습니다. 오늘은 이 가상 메모리 관리 기법으로 대표적인 페이징에 대해서 알아볼게요. 🧐





🍊 페이징이란

메모리와 프로세스를 일정한 단위로 잘라서 적재하는 방식을 말합니다. 아래 그림에서 프로세스B와 같이 불연속적으로도 적재가 가능하기 때문에 외부 단편화는 발생하지 않습니다.



페이징은 프로세스의 논리 주소 공간을 페이지page 라는 일정 단위로 자르고, 메모리 물리 주소 공간을 프레임frame 이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법입니다.





🍊 페이징 스와핑

페이징을 사용하는 시스템에서는 프로세스 전체가 아닌 페이지 단위로 스왑 아웃/스왑 인됩니다.


위 그림처럼 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃되고, 실행에 필요한 페이지들은 메모리로 스왑 인됩니다. 페이징 시스템에서는 이를 페이지 아웃(page out), 페이지 인(page in)이라고 부릅니다.




 

🍊 페이지 테이블

프로세스가 메모리에 불연속적으로 배치되어 있으면 CPU 입장에서 순차적으로 실행하기에 어려움을 겪을 수 있습니다. 이를 해결하기 위해 페이징 시스템은 물리 주소에는 프로세스가 불연속적으로 배치되더라도 CPU가 바라보는 주소인 논리 주소에는 연속적으로 배치되도록 페이지 테이블page table 을 이용합니다.


페이지 테이블은 프로세스마다 따로 있는데, 각 프로세스의 페이지 테이블들은 메모리에 적재되어 있습니다. 그리고 CPU 내의 페이지 테이블 베이스 레지스터(PTBR: Page Table Base Register)는 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있습니다.



🍊 페이지 테이블의 문제점과 해결법

문제점

페이지 테이블을 메모리에 두면 메모리 저근 시간이 두 배로 늘어난다는 문제가 발생합니다. 메모리에 있는 페이지 테이블을 보기 위해 한 번, 그렇게 알게 된 프레임에 접근하기 위해 한 번, 총 두 번의 메모리 접근이 필요하게 됩니다.


해결법

CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우(TLB hit) 페이지가 적재된 프레임을 알기 위해 메모리에 접근할 필요가 없기 때문에 메모리 접근을 한 번만 하면 됩니다. 하지만 페이지 번호가 TLB에 없을 경우(TLB miss)에는 어쩔 수 없이 페이지가 적재된 프레임을 알기 위해 메모리 내의 페이지 테이블에 접근해야 합니다.

LIST