이야기박스

운영체제) 메모리 관리4 (Memory Management) 본문

Computer & Data/Operating System

운영체제) 메모리 관리4 (Memory Management)

박스님 2017. 6. 7. 18:26
반응형

§ 페이징 시스템의 설계

지역 / 전역 할당 정책

- 각 프로세스의 실행에 따라 작업 크기가 변하는 경우, 전역 알고리즘이 효율적

- 지역 알고리즘

; 작업 집합이 커지면 --> 다른 가용 페이지 존재하더라도 해당 프로세스 스래싱 발생

- 전역 알고리즘

; 히스토리 정보에 근거, 프로세스 시작 초기에 운영체제가 페이지 프레임 할당을 결정

; 실행된 후, 동적으로 추가 할당/반납 --> PFF 알고리즘

- PFF (Page Fault Frequency)

; 페이지 할당 세트의 크기만을 제어




▣ 부하 제어 (Load Control)

- 최선의 교체 알고리즘 / 최선의 전역 페이지 할당 알고리즘 사용해도 스래싱 발생할 수 있다

--> 서로 경쟁하는 프로세스 수 줄임

--> "스와핑"

--> 메모리의 부하를 줄이는 효과

- 단, 다중 프로그래밍의 효율도 고려해야 한다





▣ 페이지 크기  (Page Size)

- 최적의 페이지 크기 결정

; 내부 단편화 (internal fragmentation) 해결

; 최적 적합 (better fit)

; 더 많은 페이지를 필요 --> 페이지 테이블 크기의 증가

; 페이지 테이블 엔트리의 개수 증가 --> 페이지 테이블 적재시간 증가




▣ 명령어와 데이터 공간 분리

- I-space와 D-space라는 서로 다른 주소 공간에 유지

- 각 주소 공간은 독립적으로 페이징

- 각 공간은 서로 다른 페이지 테이블을 가지며, 독립적인 매핑 정보를 유지




▣ 공유 페이지

- 대규모 다중 프로그래밍 시스템 --> 페이지 공유가 효율적

- 각 프로세스는 2개의 포인터를 가짐 (I-space, D-space)

- 고려해야 할 점 

; 두 개 이상의 프로세스들이 페이지 공유하는 경우

--> 한 프로세스에서 제거하려고 해도 다른 프로세스에서 사용중일 수 있음




▣ 공유 라이브러리

- 정적 링킹(static linking)의 문제점 해결

- 공유 라이브러리의 사용 ~> Dynamic Linking -> .DLL

; 위치 정보를 가지는 스텁(stub) 루틴을 추가

; 페이지 단위로 필요 부분만 적재

- 장점

a. 메모리 절약

b. 라이브러리 함수의 갱신 용이

- 단점

; 주소 변환 문제

--> 해결 방안 : 위치 독립 코드 (Position Independent Code)




▣ 클리닝 정책

- 페이징 데몬 (paging daemon)

- 프레임들을 항상 깨끗하게 유지 ~ m bit




▣ 가상 메모리 인터페이스

- 적은 물리적 주소 공간을 커다란 가상 주소 공간으로 보이게

- 프로그래머의 제한적 메모리 맵 제어

- 분산 공유 메모리






§ 구현 이슈

▣ 운영체제 작업

- 프로세스 생성할 때 : program size 결정 , page table 생성

- 프로세스 실행할 때 : MMU reset, TLB flushed

- 페이지 폴트 발생할 때 : fault를 야기한 가상 주소 결정, swapping

- 프로세스 종료할 때 : release page table, pages



▣ 페이지 폴트 처리

1. hardware traps to kernel

2. general registers saved

3. OS determines which virtual page needed

4. OS checks validity of address, seeks page frame

5. if selected frame is dirty, write it to disk

6. OS brings schedules new page in from disk

7. page tables updated

8. faulting instruction backed up to when it began

9. faulting process scheduled

10. registers restored

11. program continues




▣ 명령 백업

- 페이지 폴트 시 명령 실행은 중단, 운영체제로 트랩

- 운영체제가 필요한 페이지를 취한 후, 트랩을 야기한 명령의 재시작

- 프로그램 카운터를 각 명령어가 실행되기 전 레지스터에 복사




▣ 페이지 락 ( locking pages in memory)

- 가상 메모리와 입출력의 상호 작용

- 입출력 중인 페이지가 스와핑될 경우

- 입출력 중인 페이지의 메모리 잠금 -> pinning




▣ 백킹 스토어 ( Backing store ; 예비 저장소 )

- swap out 되는 페이지의 디스크 저장 공간




▣ 정책과 메커니즘

- 복잡한 시스템을 효과적으로 관리하는 방법 --> 정책 메커니즘의 분리


반응형