가상 메모리란?

프로세스를 메모리에 연속적으로 할당하는 방식은 외부 단편화, 물리 메모리보다 큰 프로세스를 실행할 수 없다는 문제점이 있었다.

가상 메모리(virtual memory)는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다.

페이징(paging)

메모리의 물리 주소 공간을 프레임(frame) 단위로 자르고, 프로세스의 논리 주소 공간을 페이지(page) 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법이다.

페이징을 사용하는 시스템에서는 프로세스 전체가 스왑 아웃(페이지 아웃: page out) / 스왑 인(페이지 인: page in)되는 것이 아닌 페이지 단위로 스왑이 이루어진다.

때문에 한 프로세스를 실행하기 위해 프로세스 전체가 메모리에 적재될 필요가 없다. 프로세스를 이루는 페이지 중 실행에 필요한 일부 페이지만 메모리에 적재하고, 당장 실행에 필요하지 않은 페이지들은 보조기억장치에 남겨둘 수 있다. 이러한 방식을 통해 물리 메모리보다 더 큰 프로세스를 실행할 수 있다.

페이지 테이블(page table)

프로세스를 메모리에 불연속적으로 배치되면 CPU 입장에서 '다음에 실행할 명령어 위치'를 찾기 어려워진다. 이를 해결하기 위해 페이징 시스템은 프로세스가 (실제 메모리 내의 주소인)물리 주소에 불연속적으로 배치되더라도 (CPU가 바라보는)논리 주소에는 연속적으로 배치되도록 페이지 테이블을 이용한다.

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

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

그래서 CPU 곁에(일반적으로 MMU 내에) TLB(Translation lookaside Buffer)라는 페이지 테이블의 캐시 메모리를 둔다. TLB는 페이지 테이블의 캐시이기 때문에 페이지 테이블의 일부 내용을 저장한다. 참조 지역성에 근거해 주로 최근에 사용된 페이지 위주로 가져와 저장한다.

  • TLB 히트: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우
  • TLB 미스: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없을 경우

페이징에서의 주소 변환

페이징 시스템에서는 모든 논리 주소가 페이지 번호(page number)와 변위(offset)로 이루어져 있다.

  • 페이지 번호: 말 그대로 접근하고자 하는 페이지 번호로 페이지 테이블에서 해당 페이지 번호를 찾으면 어떤 프레임에 할당되었는지 알 수 있다.
  • 변위: 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지를 알기 위한 정보

페이지 테이블 엔트리

페이지 테이블의 각각의 행들을 페이지 테이블 엔트리(PTE: Page Table Entry)한다.

페이지 테이블 엔트리에는 페이지 번호, 프레임 번호 외에도 유효 비트, 보호 비트, 참조 비트, 수정 비트 등에 대한 정보가 있다.

유효 비트(valid bit)

  • 해당 페이지가 메모리에 적재되어 있는지 여부
  • 메모리에 적재: 1, 메모리에 없음: 0
  • 유효 비트가 0인 페이지로 접근 하려고 하면 페이지 폴트(page fault)라는 예외 발생

보호 비트(protection bit)

  • 페이지에 접근할 권한을 제한하여 페이지를 보호
  • 1: 읽고 쓰기 가능, 0: 읽기만 가능
  • 읽기(Read)는 r, 쓰기(Write) w, 실행(eXecute) x의 조합으로 더 복잡하게 구현 가능

참조 비트(reference bit)

  • CPU가 이 페이지에 접근한 적이 있는 여부

수정 비트(modified bit)

  • 해당 페이지의 수정 여부
  • 더티 비트(dirty bit)라고도 부름
  • 페이지가 메모리에서 사라질 때 보조기억장치에 쓰기 작업 여부를 판단하기 위해 존재

0개의 댓글