cs

OS - 페이징 기법

joepasss 2022. 5. 11. 14:16

페이징 기법


* 기억공간을 동일한 고정크기의 페이지로 나누어 페이지 단위의 기억공간 할당을 한다.
* 가상주소는 페이지 번호와 페이지 내의 변위로 구성된다
* 주소변환을 위해 페이지 매핑 테이블이 필요해서 추가적인 기억공간 낭비가 발생한다

1. 직접사상에 의한 페이징 기법

  • 직접 페이지 사상표를 참고해서 페이지를 찾는 방법이다
  • 페이지 사상표의 내용
    페이지 존재 비트 보조기억장치 주소 페이지 프레임 번호
    i s p'
  • 페이지 사상표는 참조된 페이지가 주기억장치에 존재하는지의 여부를 나타내야 하며 있다면 그 위치를 반환하고 존재하지 않는다면 보조기억장치의 어디에 있는지를 지시해야 한다
  • 참조한 페이지가 주기억장치에 없는 현상을 페이지 부재(page fault)라 한다
  • 페이지 사상표의 시작주소 b
  • 가상주소 V=(p,d)
  • 실주소 r=p'+d

직접 페이지 사상

  1. 운영체제가 수행 전에 페이지 사상표의 주소 b를 페이지 사상표 시작점에 기록한다
  2. 수행 중인 프로세스가 가상주소 V=(p,d)를 참조한다
  3. 페이지 사상표의 시작주소 b와 가상주소의 페이지 번호(p)를 더해 페이지 사상표 내의 페이지에 대한 항목을 지정한다
  4. 지정하는 항목을 읽어 페이지 p에 대응하는 페이지 프레임 번호(p')를 읽는다
  5. 페이지 프레임 번호에 가상주소의 변위값(d)를 더하여 실주소(r)을 찾는다

/ 평균 페이지 단편화는 일반적으로 페이지 크기의 절반이다.

2. 연관사상에 의한 페이징 기법

위치지정이 아닌 내용지정의 연관 기억장치에 페이지 사상표를 위치시켜 동적 주소변환을 빠르게 할 수 있는 방법이다. (주기억장치보다 빠른 연관기억장치에 페이지 사상표를 위치시키는 방법)

 

연관사상

 

  1. 수행 중인 프로그램 가상주소 V=(p,d)를 참조한다
  2. 페이지 p를 찾기 위해 연관 기억장치 내의 모든 항목을 동시에 조사하여 페이지 프레임을 찾는다
  3. 페이지 프레임 번호에 가상주소의 변위값을 더하여 가상주소 v=(p,d)에 사상하는 실주소 r을 생성하여 주기억장치에 접근한다

3. 연관/직접 사상에 의한 페이징 기법

* 연관사상과 직접사상을 동시에 하는 것
* 국부성의 특징에 따라 최근에 가장 많이 참조된 페이지는 연관사상표에 넣어두고 연관사상표에서 제외된 나머지 페이지는 직접 페이지 사상표에 넣어 둔 후 두 가지 기능을 모두 사용한다
* 페이지를 참조할 떄 먼저 연관사상표를 참조한 후 연관사상표에 없을 때 직접 페이지 사상표를 참조해서 실주소를 구한다

 

 

연관 / 직접사상

 

  1. 실행프로그램은 가상주소 V=(p,d)를 참조하여 연관사상표를 먼저 탐색한다
  2. 페이지 p가 연관사상표에 있다면 가상 페이지 p에 해당하는 프레임 p'을 반환하고 변위 d와 합쳐져서 p'+ d 로 가상주소 V=(p,d)에 사상하는 실주소 r을 생성하여 주기억장치에 접근
  3. 연관사상표에 페이지 p가 없으면, 직접사상표를 탐색하여 직접사상 방식으로 실주소 r을 생성한 후 주기억장치에 접근
  4. 직접사상표를 사용한 경우 연관기억장치 업데이트
* 운영체제가 연관사상표와 페이지 사상표를 잘못 유지하면 연관사상표를 1차 탐색하고 페이지 사상표를 2차 탐색해야 하므로 오히려 속도가 느려저 성능을 저하시킬 수 있다.
* 부분적 연관 사상표의 성능을 높이기 위해 반드시 크기를 크게 해야 하는 것은 아니다.
* 프로세스의 국부성 특징에 따라 8에서 17개 정도의 연관사상표를 가지면 90% 정도의 성능을 기대할 수 있다