[Pintos-Kaist] Project 3 : Virtual Memory

문건우·2024년 5월 20일
post-thumbnail

메모리는 한정적이다. 하지만 프로세스는 이 한정된 메모리를 인식해서는 안 된다.

운영체제는 실제 메모리의 일부를 커널 영역과 사용자 영역으로 나누어 프로세스에게 할당한다. 더 정확히 말하자면, 운영체제는 프로세스에게 실제 메모리를 할당하는 것이 아니라, 주소 범위를 할당한다.

사용자 프로세스는 자신에게 주어진 주소 범위 내에서 해당 주소에 값을 저장한다고 믿는다. 하지만 실제로는 그렇지 않다. 이 주소는 "가상" 주소이며, 이는 "가상" 주소 공간에 속한다.

운영체제의 동작 방식

프로세스가 특정 주소로 접근하면, 운영체제는 페이지 테이블을 통해 해당 주소가 메모리에 할당되어 있는지 확인한다. 만약 페이지가 메모리에 존재한다면 이를 HIT라고 함. 반면에 페이지가 메모리에 없으면 page fault가 발생.

페이지 크기 결정

주소 공간의 비트 크기에 따라 페이지의 크기가 결정.

32비트 주소 공간에서 4KB 페이지 크기의 이유

32비트 중 20비트는 페이지 번호를 나타내는 데 사용되고, 나머지 12비트는 페이지 내 오프셋을 관리하는 데 사용된다.

  • 12비트는 2^12 = 4KB 크기의 페이지를 관리할 수 있다.
    따라서 운영체제는 페이지 단위로 메모리를 관리한다.

메모리 관리의 예: Demand Paging

  • Demand Paging은 필요할 때만 페이지를 메모리에 로드하는 방식. 프로세스가 필요로 하는 페이지가 메모리에 없을 경우, page fault가 발생하고, 운영체제는 해당 페이지를 디스크에서 메모리로 로드.
  • 이 방식은 메모리 사용의 효율성을 높이고, 실제 메모리보다 더 큰 가상 메모리를 사용하는 것처럼 보이게 한다.

    이와 같이 운영체제는 제한된 물리적 메모리를 효과적으로 관리하기 위해 가상 메모리와 페이지 테이블을 활용한다.
    페이지 단위의 메모리 관리 방식은 메모리 사용의 효율성을 높이고, 프로세스가 무한한 메모리 공간을 사용하는 것처럼 보이게 함.


Anonymous Page

기존에 파일에 있지 않고(file mapping 되지 않고), 프로그래밍 도중 생성된 페이지들은 이름이 없다. 우리는 이러한 페이지들을 anonymous page라고 부른다. 이 페이지들은 파일로부터 생성된 것이 아니다. 이후에 RAM에서 디스크로 이동하는 순간, 이 페이지들은 디스크와 처음 조우하게 된다.

이와 같이, anonymous page는 파일과 연관되지 않은 페이지로, 프로그램 실행 중에 동적으로 생성되며 처음에는 메모리에만 존재하다가 필요 시 디스크로 스와핑된다.

profile
반드시 해내야지

0개의 댓글