0.🚶들어가며

지난 글들에서 살펴보았던 페이징과 세그멘테이션 기법은 MMU의 역할 중 배치(Placement)에 대한 내용이었습니다.

 

이번 글에서는 가져오기(Fetch) 정책에 대한 내용을 다뤄보도록 하겠습니다.


1.📖Demand Paging (요구 페이징)이란?

이전 글에서도 살펴보았듯 프로세스는 자신이 필요한 모든 데이터를 메모리 위에 올려두지 않는 경우가 많습니다. 가상 메모리 시스템을 사용하여 메모리와 스왑 영역을 가지고 작업을 진행시키죠. 이러한 방식으로 얻을 수 있는 장점들에 대해서는 아래 글에서 다루어 보았습니다.

 

[운영체제(OS)] 가상 메모리 - (1) 가상 메모리와 페이징 기법

0.🚶들어가며 이번 글에서는 가상 메모리가 무엇인지에 대해 알아보고 가상 메모리를 구현하는 방법 중 하나인 페이징 기법에 대해 알아보도록 하겠습니다. 1.💻가상 메모리..? 컴퓨터마다 메

kjhoon0330.tistory.com

이러한 환경 아래 프로세스가 자신이 필요한 페이지를 메모리에 올려놓으라고 요구하는 것을 요구 페이징이라고 합니다. 스왑 영역에 있는 페이지를 메모리에 올려달라고 요청하는 것입니다.


2.📚페이지 테이블 엔트리(PTE)의 구조

이전 글에서 가상 메모리 시스템을 운영하기 위해서 페이지 테이블을 사용한다고 배웠습니다. 하지만 페이지 테이블에 어떤 요소가 있는지에 대해서는 간략하게만 알아보았었는데요. 요구 페이징과 페이지 부재에 대해 더 알아보기 위해서는 페이지 테이블 엔트리가 어떤 정보들을 담고 있는지부터 확인해봐야 합니다.

페이지 테이블 엔트리

위 사진은 페이지 테이블 엔트리의 구성을 나타낸 것입니다. 이전에 살펴보았던 것과 비교하면 플래그 비트라는 것이 추가되었네요. 플래그 비트는 CPU에 따라 몇몇이 추가되거나 빠질 수도 있지만 위 플래그 비트를 기준으로 각각 어떤 내용인지 알아보겠습니다.

  • 접근 비트(참조 비트) : 페이지가 메모리에 올라온 후 사용한 적이 있는지 알려주는 비트입니다. 
  • 변경 비트(더티 비트) : 페이지가 메모리에 올라온 후 변경된 적이 있는지 알려주는 비트입니다.
  • 유효 비트 : 페이지가 실제 메모리에 있는지를 나타내는 비트입니다.
  • 읽기, 쓰기, 실행 비트 : 접근 권한 비트입니다. 각 항목에 대한 사용 권한이 있는지 알려주는 비트이죠.

각 비트에 대한 쓰임새는 앞으로 나올 주제들에서 나오는 내용이니 기억하고 있으면 좋습니다.


3.📃페이지 부재(Page Fault)

가상 메모리의 페이지 테이블에는 페이지가 메모리에 있는지, 스왑 영역에 있는지 표시하기 위해 유효 비트를 사용합니다. 유효 비트가 0 일 때는 메모리에 있다는 뜻이고, 1일 때는 스왑 영역에 있다는 뜻입니다. 페이지 테이블 엔트리 유효 비트에 따라 주소 필드에 있는 값의 의미가 달라집니다. 메모리에 있을 경우 주소 필드는 프레임 번호를 의미하고 스왑 영역에 있을 경우 주소 필드는 스왑 영역 주소가 됩니다. 

 

아무튼,, 이런 상황에서 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황을 페이지 부재라고 합니다. 페이지 부재가 일어나면 해당 페이지를 스왑 영역에서 메모리로 옮겨야 하는 것이죠. 만약 이때 메모리에 빈 프레임이 없다면 기존에 있던 프레임 중 하나를 쫓아내고 해당 페이지를 메모리에 가져와야 합니다. 이 과정에서 쫓겨난 페이지를 대상 페이지(Victim Page)라고 부릅니다. 페이지 부재 처리는 스왑 영역에 다녀와야 하는 작업이기 때문에 최소화시키는 것이 성능상 좋습니다.

 

페이지 부재 최소화를 위한 페이지 교체 알고리즘은 다음 글에서 알아보도록 하고 관련 개념인 지역성에 대해 먼저 알아보도록 하겠습니다.


4.📦지역성

페이지 부재는 일어나지 않을수록 시스템 성능에 좋고, 페이지 부재 최소화를 위해서는 대상 페이지 선택을 잘해야 합니다. 스왑 영역으로 내보낸 페이지가 금방 메모리로 다시 올라와야 한다면 당연히 성능 저하를 일으킬 것입니다. 그럼 이제 대상 페이지 선택에 대한 이론적 가정이 되는 지역성에 대해 알아보도록 하겠습니다.

 

지역성은 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 성질을 말합니다. 지역성에는 크게 공간 지역성, 시간 지역성, 순차적 지역성이 있습니다.

1) 공간 지역성

공간 지역성은 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높다는 것입니다.

2) 시간 지역성

시간 지역성은 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 더 먼 시간에 접근한 데이터보다 사용될 확률이 높다는 것입니다.

3) 순차적 지역성

순차적 지역성은 여러 작업이 순서대로 진행되는 경향이 있다는 것을 의미합니다. 일반적인 프로그래밍은 처음부터 마지막 순서로 진행되는 경향이 있죠. 


5.💨나가며

지역성에 대해 배운 김에 바로 다음 글에서 이를 고려하여 만든 페이지 교체 알고리즘에 대해 알아보러 가봅시다.

반응형
복사했습니다!