운영체제 소프트웨어
운영체제 메모리관리 설계 시 의존하는 영역
하드웨어 플랫폼에 의존(지원 필요)
- 가상메모리 기술 사용 여부
- 페이징, 세그멘테이션, 세그멘테이션/페이징 결합의 사용
딱히 의존하지 않는 경우
성능면에서의 이슈
- 페이징에서의 페이지폴트 발생을 최소화 하기 위한 노력
- 페이지폴트가 초래하는 소프트웨어 오버헤드가 매우 크기 때문
- 어떤 페이지를 교체 / 페이지 내보내기 및 들여오기 입출력 등이 오버헤드로 작용
- 입출력 진행동안 수행될 다른 프로세스 스케줄 과정에서 프로세스 문맥 교환이 수반됨
가상메모리를 위한 운영체제 정책
정책 | 방식 |
---|
반입정책(Fetch Policy) | 요구 페이징(Demand Paging) 선페이징(Prepaging) |
배치정책(Placement Policy) | |
교체정책(Replacement Policy) | 알고리즘 - 최적(Optimal) - LRU(Least Recently Used) - FIFO(First-In-First-Out) - 클록(Clock) 페이지 버퍼링(Page buffering) |
적재집합(Resident Set) 관리 | 적재집합 크기 - 고정(Fixed) - 가변(Variable) 교체범위(Replacement Scope) - 전역(Global) - 지역(Local) |
클리닝 정책(Cleaning Policy) | 요구 클리닝(Demand) 선클리닝(Precleaning) |
부하제어(Load Control) | 멀티프로그래밍의 차수 |
반입정책
각 페이지를 언제 주기억장치로 적재할지 결정
- 요구페이징(demand Paging)
- 해당 페이지의 일부가 참조될 때
- 선페이징(PrePaging)
- 페이지폴트에 의해 요구된 페이지들 이외의 페이지들도 반입
배치정책
적재될 블록이 주기억장치의 어디에 위치할 것인지 결정
교체정책
고려 대상 페이지들 중에 어떤 페이지를 교체 대상으로 선택할 것인가 결정
- 교체 정책은 교체되는 페이지가 가까운 미래에 참조될 가능성이 가장 적은 페이지여야 함.
프레임 잠금(Frame Locking)
- 운영체제는 일부 페이지 프레임을 잠가두어 해당 프레임에 적재된 페이지가 교체되지 않도록 표시해둠
기본 알고리즘
- 최적(Optimal)
- 미래에 참조될 때까지의 시간이 가장 긴 페이지를 교체
- 운영체제가 미래에 일어날 사건들에 대해 완벽하게 알 수 없기 때문에 정책의 구현이 현실적으로 불가능
- LRU(Least Recently Used)
- 가장 오랜 동안 참조되지 않은 주기억장치 상의 페이지를 교체
- 지역성의 원리에 따르면 가까운 미래에 참조될 가능성이 가장 적을 것으로 예상됨
- 정책의 구현이 어려움
- 가능한 구현 방법: 각 페이지에 대한 최종 참조 시간을 해당 페이지의 태그로 설정
- 매번 참조될 때마다 갱신되어야 해서 오버헤드가 큼
- FIFO(First-In-First-Out)
- 프로세스에 할당된 페이지프레임들은 순환버퍼처럼 다루어, 라운드로빈(Round-Robin)스타일로 프레임 상의 페이지들을 제거
- 가장 쉽게 구현 가능
- 프로그램 수행 과정 내내 집중적으로 이용되는 코드나 데이터 영역이 제거될 가능성이 높음
- 클록(Clock)
- 각 프레임에 대해 사용비트(use bit)라 불리는 한 비트를 연계
- 페이지 폴트로 인해 어떤 페이지가 메모리 프레임에 처음 반입될 때, 그 프레임의 사용 비트를 1로 설정
- 해당 페이지가 참조될 때마다 사용비트는 1로 설정
- 사용비트가 0인 프레임을 찾아 교체, 1인 경우 0으로 바꾸고 다음 프레임으로 진행
교체 알고리즘의 성능 비교
페이지 버퍼링(Page Buffering)
페이징 성능을 향상시키는 동시에 단순한 페이지 교체 정책을 허용하는 전략
- 단순 FIFO 정책을 적용해 교체 대상을 선정하지만 선정된 페이지를 바로 교체하지 않고 그 페이지가 변경되지 않은 페이지인 경우 가용페이지 리스트에, 변경된 페이지인 경우 변경페이지 리스트에 연결시켜 관리
교체정책과 캐시 크기
페이지버퍼링과 유사한 전략을 사용하는 시스템에서 페이지 교체정책을 페이지 버퍼 상에 페이지 배치정책으로 보완함으로써 캐시 성능을 개선
적재집합 관리
적재집합의 크기
프로세스에게 얼마나 많은 주기억장치를 할당할지 결정
고려사항
- 한 프로세스에게 할당된 메모리 양이 적을수록, 임의 시점에 주기억장치에 존재 가능한 프로세스가 많아짐
- 주기억장치 상에 적재된 한 프로세스의 페이지 수가 상대적으로 작으면 페이지폴트 발생률이 더 높아짐
- 적재된 페이지 수가 어느 정도 이상이 되면, 해당 프로세스에 대해 주기억장치를 추가 할당 하더라도 지역성의 원리에 의해 그 프로세스의 페이지폴트 발생률에 큰 영향이 없음
이러한 고려사항들을 반영한 두 종류의 정책
- 고정할당(fixed-allocation)
- 각 프로세스에게 고정 개수의 페이지프레임을 주고 수행
- 초기 적재 시점에 결정(프로세스의 타입이나 지침 등)
- 프로세스 수행 중에 페이지폴트가 발생할 경우 그 프로세스에 할당된 페이지 중 하나가 새로운 페이지로 교체됨
- 가변할당(variable-allocation)
- 프로세스 생존 기간 동안 각 프로세스에 할당된 페이지프레임 수의 변경을 허용
교체범위
교체 전략의 범위는 전역과 지역으로 분류
구분 | 지역 교체 | 전역 교체 |
---|
고정 할당 | - 프로세스에게 할당된 프레임 수 고정 - 해당 프로세스에게 할당된 프레임 중에서 교체될 페이지 선택 | - 불가 |
가변 할당 | - 프로세스에게 할당된 프레임 수는 프로세스의 작업집합을 유지하기 위해 수시로 변경 가능 - 해당 프로세스에게 할당된 프레임 중에서 교체될 페이지 선택 | - 주기억장치의 모든 프레임 중에 교체될 페이지 선택. 이로 인해 프로세스의 적재집합 크기가 변경됨 |