페이징-메모리처리

조영상·2024년 1월 4일

CS

목록 보기
2/3
post-thumbnail

페이징(paging)

  • 프로세스의 논리 주소 공간을 페이지(Page)라는 일정 단위로 자르고,

  • 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정 단위로 자른 뒤

  • 페이지를 프레임에 할당하는 가상 메모리 관리 기법

페이징에서의 스와핑

  • 프로세스 단위의 스왑 인, 스왑 아웃이 아닌 페이지 단위의 스왑 인(페이지 인), 스왑아웃 (페이지 아웃)

  • 메모리에 적재될 필요가 없는 페이지들은 보조기억장치로 스왑 아웃

  • 실행에 필요한 페이지들은 메모리로 스왑 인

  • 어떤 프로세스를 실행하기 위해서 모든 페이지가 메모리에 있지 않아도 된다는 점을 시사함. 때문에 물리 메모리보다 큰 프로세스도 실행될 수 있다.

그런데 여기까지 설명에서는 문제점이 있다.

  1. 프로세스를 이루는 페이지가 어느 프레임에 적재되어 있는지 CPU가 일일이 알기 어렵다.

  2. 프로세스가 메모리에 불연속적으로 배치되어 있다면 CPU입장에서 이를 순차적으로 실행할 수 없다.

  3. CPU입장에서 '다음에 실행할 명령어 위치'를 찾기가 어려워진다.

    이를 해결하기 위해 "페이지 테이블" 을 사용한다.

페이지 테이블

  • (실제 메모리 내의 주소인) 물리 주소에 불연속적으로 배치되더라도

  • (CPU)가 바라보는 논리 주소에는 연속적으로 배치되도록 하는 방법.

  • 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표.

  • 따라서 CPU는 그저 논리 주소를 순차적으로 실행하면 된다

  • 프로세스마다 페이지 테이블이 있고, 각 페이지 테이블은 CPU 내의 프로세스 테이블 베이스 레지스터(PTBR)가 가리킨다.

PTBR

  • 페이지 테이블이 메모리에 있다면? 메모리 접근 시간이 두배로 증가한다.

  • 페이지 테이블 참조하기 위해 한번,

  • 페이지 참조하기 위해 한번.

  • 때문에 TLB라는 특별한 캐시 메모리를 사용한다.

TBL

  • 페이지 테이블의 일부를 가져와 저장하는 특별한 캐시 메모리

  • CPU가 접근하려는 논리 주소가 TLB 에 있다 : TLB 히트

  • CPU가 접근하려는 논리 주소가 TLB 에 없다 : TLB 미스

profile
프론트엔드 개발자입니다.

0개의 댓글