가상 메모리

  • 실행하고자 하는 프로그램의 일부만 메모리에 적재하여 실제 물리 메모리보다 더 큰 프로세스를 실행할 수 있게 하는 기술
    • 한 프로세스를 실행하기 위해 프
      로세스 전체가 메모리에 적재될 필요 x
  • 가상 메모리 관리 기법에는 페이징, 세그멘테이션 존재
  • 현대 운영체제는 대부분 페이징 사용

페이징

  • 메모리의 물리 주소 공간을 프레임 단위, 프로세스의 논리 주소 공간을 페이지 단위로 잘라 각 페이지를 프레임에 할당하는 기법
  • 일정한 단위로 잘라 할당시키기 때문에 프로세스 전체가 연속적으로 할당될 필요 없음

페이지 테이블

  • 프로세스가 메모리에 불연속적으로 배치되면 다음에 실행할 명령어 위치를 찾기 어려움
  • 페이지 테이블의 페이지 번호를 이용해 페이지가 할당된 프레임을 찾아감을 통해 논리 주소에는 연속적으로 배치될 수 있음
  • 페이지를 통해 어떤 프레임에 어떤 페이지가 할당되었는지 알 수 있다.

Page Table Base Register - PTBR

그럼 프로세스마다 프로세스 페이지 테이블을 가져야 할 것임

이 프로세스 페이지 테이블은 메모리에 적재되어 있다.

그리고 CPU 내부의 PTBR이 각 프로세스 페이지 테이블이 적재된 주소를 가리킨다.


페이지 테이블을 메모리에 뒀을 때의 문제점

  1. CPU가 페이지 테이블에 접근하고
  2. 접근한 페이지 테이블에서 프레임 번호를 얻어 프레임 접근

총 2번의 메모리 접근이 필요
이를 해결하기 위해 TLB가 존재


Translation Lookaside Buffer - TLB

  • CPU 곁에(일반적으로는 MMU 내에) 존재
    • MMU: 논리 주소를 물리 주소로 변환하는 하드웨어, CPU와 주소 버스 사이에 위치
  • 페이지 테이블의 캐시 메모리 역할
  • 페이지 테이블의 일부를 저장. 최근에 사용된 페이지 위주로 저장해 둔다.
    • 참조 지역성 - 시간 지역성
  • CPU가 발생한 논리 주소의 페이지 번호가 TLB에 있을 경우 → TLB Hit
  • CPU가 발생한 논리 주소의 페이지 번호가 TLB에 없을 경우 → TLB miss

페이지 테이블 엔트리 Page Table Entry - PTE

  • 페이지 테이블의 행을 의미
  • 페이지 번호, 프레임 번호, 유효 비트, 보호 비트, 참조 비트, 수정 비트 등이 존재

유효 비트 (valid bit)

  • 일부 페이지들은 스왑되어 보조 기억 장치에 존재할 수 있음
  • 따라서 현재 해당 페이지에 접근이 가능한지, 즉 메모리에 존재하는지를 알려줌
  • 접근 가능 1 / 접근 불가능 0
  • 메모리에 적재되어 있지 않은 페이지로 접근하려 할 시 page fault 발생

보호 비트 (protection bit)

  • 페이지 보호 기능
  • 해당 페이지의 read/write, read-only 여부를 알려줌을 통해, read-only 페이지에 쓰기를 시도할 시 이를 막아 페이지를 보호
  • read/write/execute 3개의 조합으로도 나타낼 수 있다.

참조 비트 (reference bit)

  • CPU가 이 페이지에 접근한 적이 있는지 여부를 나타냄
  • 적재 이후 읽거나 쓴 적이 있다면 1 / 없다면 0

수정 비트 (modified bit)

  • 해당 페이지에 데이터를 쓴 적이 있는지 여부
  • 수정된 적이 있다면 1 / 없다면 0
  • 페이지 스왑을 할 때, 보조 기억 장치에서 쓰기 작업을 해야 하는지에 대한 여부 판단
    • 페이지에 데이터를 써서 수정된 적이 있다면 보조 기억 장치에도 기록 필요


계층적 페이징 - hierarchical paging

  • multilevel paging이라고도 불림
  • 프로세스 페이지 테이블을 다시 페이지로 나누고, 이를 가리키는 페이지 테이블을 하나 더 두는 방식
    • 기존 페이징 기법을 한번 더 수행한다고 생각하면 된다.
    • 2개 이상의 여러 계층으로도 구성 가능
  • 메모리에서 페이지 테이블이 가지는 공간을 줄일 수 있음
  • 메모리 참조 횟수가 많아지는 단점

Reference

혼자 공부하는 운영체제

0개의 댓글

Powered by GraphCDN, the GraphQL CDN