cs
OS - 페이징 기법
joepasss
2022. 5. 11. 14:16
페이징 기법
* 기억공간을 동일한 고정크기의 페이지로 나누어 페이지 단위의 기억공간 할당을 한다.
* 가상주소는 페이지 번호와 페이지 내의 변위로 구성된다
* 주소변환을 위해 페이지 매핑 테이블이 필요해서 추가적인 기억공간 낭비가 발생한다
1. 직접사상에 의한 페이징 기법
- 직접 페이지 사상표를 참고해서 페이지를 찾는 방법이다
- 페이지 사상표의 내용
페이지 존재 비트 보조기억장치 주소 페이지 프레임 번호 i s p' - 페이지 사상표는 참조된 페이지가 주기억장치에 존재하는지의 여부를 나타내야 하며 있다면 그 위치를 반환하고 존재하지 않는다면 보조기억장치의 어디에 있는지를 지시해야 한다
- 참조한 페이지가 주기억장치에 없는 현상을 페이지 부재(page fault)라 한다
- 페이지 사상표의 시작주소 b
- 가상주소 V=(p,d)
- 실주소 r=p'+d
- 운영체제가 수행 전에 페이지 사상표의 주소 b를 페이지 사상표 시작점에 기록한다
- 수행 중인 프로세스가 가상주소 V=(p,d)를 참조한다
- 페이지 사상표의 시작주소 b와 가상주소의 페이지 번호(p)를 더해 페이지 사상표 내의 페이지에 대한 항목을 지정한다
- 지정하는 항목을 읽어 페이지 p에 대응하는 페이지 프레임 번호(p')를 읽는다
- 페이지 프레임 번호에 가상주소의 변위값(d)를 더하여 실주소(r)을 찾는다
/ 평균 페이지 단편화는 일반적으로 페이지 크기의 절반이다.
2. 연관사상에 의한 페이징 기법
위치지정이 아닌 내용지정의 연관 기억장치에 페이지 사상표를 위치시켜 동적 주소변환을 빠르게 할 수 있는 방법이다. (주기억장치보다 빠른 연관기억장치에 페이지 사상표를 위치시키는 방법)
- 수행 중인 프로그램 가상주소 V=(p,d)를 참조한다
- 페이지 p를 찾기 위해 연관 기억장치 내의 모든 항목을 동시에 조사하여 페이지 프레임을 찾는다
- 페이지 프레임 번호에 가상주소의 변위값을 더하여 가상주소 v=(p,d)에 사상하는 실주소 r을 생성하여 주기억장치에 접근한다
3. 연관/직접 사상에 의한 페이징 기법
* 연관사상과 직접사상을 동시에 하는 것
* 국부성의 특징에 따라 최근에 가장 많이 참조된 페이지는 연관사상표에 넣어두고 연관사상표에서 제외된 나머지 페이지는 직접 페이지 사상표에 넣어 둔 후 두 가지 기능을 모두 사용한다
* 페이지를 참조할 떄 먼저 연관사상표를 참조한 후 연관사상표에 없을 때 직접 페이지 사상표를 참조해서 실주소를 구한다
- 실행프로그램은 가상주소 V=(p,d)를 참조하여 연관사상표를 먼저 탐색한다
- 페이지 p가 연관사상표에 있다면 가상 페이지 p에 해당하는 프레임 p'을 반환하고 변위 d와 합쳐져서 p'+ d 로 가상주소 V=(p,d)에 사상하는 실주소 r을 생성하여 주기억장치에 접근
- 연관사상표에 페이지 p가 없으면, 직접사상표를 탐색하여 직접사상 방식으로 실주소 r을 생성한 후 주기억장치에 접근
- 직접사상표를 사용한 경우 연관기억장치 업데이트
* 운영체제가 연관사상표와 페이지 사상표를 잘못 유지하면 연관사상표를 1차 탐색하고 페이지 사상표를 2차 탐색해야 하므로 오히려 속도가 느려저 성능을 저하시킬 수 있다.
* 부분적 연관 사상표의 성능을 높이기 위해 반드시 크기를 크게 해야 하는 것은 아니다.
* 프로세스의 국부성 특징에 따라 8에서 17개 정도의 연관사상표를 가지면 90% 정도의 성능을 기대할 수 있다