티스토리 뷰

CS/OS

페이징과 스와핑

bool-flower 2022. 8. 18. 20:55

페이징(Paging)


페이징은 어떤 프로세스의 메모리 공간을 연속되지 않게 쪼개어서 관리하는 것을 의미한다. 

 

  • frame - 물리 메모리를 고정된 크기로 쪼갠 것
  • page - 논리 메모리를 동일한 크기의 블록으로 쪼갠 것

페이징 방법

페이지 번호와 페이지 오프셋을 통해 논리 메모리 주소를 표현한다. 아래 그림의 페이지 테이블에서 p 값(페이지 번호)에 해당하는 f 값(프레임 번호)을 알 수 있다.

Free-Frame-List

리스트로 구현된 free-frame list에서 차례로 프로세스의 페이지를 매핑하는 방식으로 메모리를 할당한다.

PTBR (page-table base register)

PTBR에 페이지 테이블의 시작점 주소를 저장하여 CPU에서 페이지 테이블에 접근하는 시간을 줄인다.

TLB (Translation Look-aside Buffer)

페이지 테이블을 저장하는 캐시 메모리 공간이다. 메모리에 저장된 페이지 테이블보다 훨씬 빠르다.

 

  • TLB hit - 접근하려는 페이지 번호가 TLB에 존재하는 것
  • TLB miss - 접근하려는 페이지 번호가 TLB에 존재하지 않는 것
  • hit ratio - hit, miss 비율로 계산되는 메모리 접근 시간

 

페이징에서의 메모리 보호

valid-invalid bit 사용

유효성 비트(valid-invalid bit)를 추가해 legal, illegal을 판단한다.

Shared Pages 사용

다 같이 쓰는 공통적인 모듈이 있을 경우, 해당 모듈이 실행 중에 자기 자신을 바꿀 일이 없는 코드(Reentrant code)라면 공유될 수 있다.


페이지 테이블의 구조

계층적 페이징 (Hierarchical Paging) - 페이지 테이블의 페이지 테이블 만든 구조

해시드 페이지 테이블 (Hashed Page Tables) - 논리적 주소를 물리적 주소로 바꿀 때 해시함수를 사용하는 구조

역 페이지 테이블 (Inverted Page Tables) - 역으로 프로세스가 가지고 있는 페이지를 페이지 테이블에 저장한 구조

 

스와핑(Swapping)


프로세스의 명령어와 데이터를 필요할 때, 메모리에 로드하는 것스왑 인(swap in)이라 하고, 메모리에서 다시 backing store로 보내는 것스왑 아웃(swap out)이라고 한다. 이를 스와핑(Swapping)이라 한다.

페이징을 통한 스와핑

프로세스 전체를 스와핑하지 않고 프로세스의 페이지 단위로 스와핑하는 것을 의미한다. 오늘날 페이징은 페이징을 통한 스와핑을 의미한다.

 

  • 페이지 인(page in) - 페이지를 메모리로 로드하는 것
  • 페이지 아웃(page out) - 메모리의 페이지를 다시 backing store로 보내는 것

'CS > OS' 카테고리의 다른 글

스토리지와 입출력  (0) 2022.08.13
주 메모리  (0) 2022.08.13
프로세스 간 통신(IPC)  (0) 2022.08.08
프로세스  (0) 2022.08.08
CPU 스케쥴  (0) 2022.08.07
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday