스물두줄

컴퓨터시스템응용기술사 · 컴퓨터 구조 및 운영체제

가상 메모리

가상 메모리는 프로세스에게 물리 메모리와 분리된 논리 주소 공간을 제공하는 기법이다. 프로그램은 실제 쓰는 부분만 주기억장치에 올려 실행하므로 물리 메모리 크기의 제약을 넘는다. 이번에는 주소 분할, 주소 변환, 페이지 폴트, 장단점 순서로 정리한다. 프로그램이 쓰는…

주요 장면

  1. 0:02 가상 메모리란
  2. 0:25 페이지와 프레임
  3. 0:48 주소 분할 예
  4. 1:22 주소 변환 흐름
  5. 2:03 페이지 폴트 처리
  6. 2:31 유효 접근 시간 계산
  7. 3:22 헷갈리는 점과 정리

대본

가상 메모리란

가상 메모리는 프로세스에게 물리 메모리와 분리된 논리 주소 공간을 제공하는 기법이다.

프로그램은 실제 쓰는 부분만 주기억장치에 올려 실행하므로 물리 메모리 크기의 제약을 넘는다.

이번에는 주소 분할, 주소 변환, 페이지 폴트, 장단점 순서로 정리한다.

페이지와 프레임

프로그램이 쓰는 주소는 논리 주소이며, 이를 같은 크기의 조각인 페이지로 나눈다.

물리 메모리도 페이지와 같은 크기의 프레임으로 나눈다. 페이지를 어느 프레임에 올릴지가 변환 대상이다.

페이지 번호만 프레임 번호로 바뀌고 오프셋은 그대로 쓰이므로, 변환은 번호 대응으로 충분하다.

주소 분할 예

페이지 크기가 4KB 이면 가상 주소의 하위 12비트가 오프셋이 된다.

가상의 예로 주소 0x00403A7C 를 보자. 하위 12비트 0xA7C 가 오프셋 d이다.

상위 비트 0x403 이 가상 페이지 번호 p 이고, 이 번호로 페이지 테이블을 찾는다.

가정한 항목에서 프레임 번호 0x0A5 를 얻고, 같은 오프셋을 붙이면 물리 주소가 된다.

주소 변환 흐름

CPU가 만든 가상 주소는 MMU가 먼저 TLB에서 페이지 번호를 찾는다.

TLB에 있으면 적중이라 바로 프레임 번호를 얻는다. 없으면 미스다.

미스이면 페이지 테이블을 조회해 프레임 번호를 얻고, 그 결과를 TLB에 채운다.

유효비트가 1이면 물리 주소를 만들고, 0이면 페이지 폴트가 발생한다.

정답은 생략된다. 적중하면 TLB에서 프레임 번호를 바로 얻어 테이블 접근을 건너뛴다.

페이지 폴트 처리

유효비트가 0이면 페이지 폴트 인터럽트가 발생한다.

운영체제가 디스크에서 페이지를 적재한 뒤, 같은 명령을 다시 실행한다.

보호 비트도 함께 검사하며, R/W/X 권한을 위반하면 예외가 발생한다.

폴트는 디스크 I/O를 동반해 지연이 크므로, 페이지 폴트를 줄이는 것이 중요하다.

유효 접근 시간 계산

메모리 접근 시간 100 ns, 폴트 처리 시간 8 ms, 폴트 확률 0.001 로 가정해 보자.

정상 접근은 0.999 의 확률로 99.9 ns 가 걸리고, 폴트 기여는 8 ms 에 0.001 을 곱한 8 µs 다.

두 값을 더하면 유효 접근 시간은 약 8.1 µs 가 된다.

폴트 확률 0.1%만으로도 접근 시간이 약 80배 늘어나므로, 폴트 감소가 성능의 핵심이다.

정답은 8 µs다. 폴트 기여는 폴트 확률에 폴트 처리 시간을 곱한 값이다.

헷갈리는 점과 정리

페이지 폴트는 미적재 접근 한 번의 사건이고, 스래싱은 폴트가 빈발해 CPU 이용률이 급락하는 상태다.

스래싱을 줄이려면 작업 집합을 기준으로 적재 페이지 수를 조절한다.

장점은 물리 메모리 초과 실행, 다중 프로그래밍, 격리와 보호다.

단점은 폴트 오버헤드와 스래싱, TLB 미스 비용, 페이지 테이블 메모리다.

같은 장의 영상