New World
[운영체제#9, 10] 가상 메모리 본문
01 가상 메모리의 개념
가상 메모리 필요성 : 메모리 크기보다 더 큰 기억공간이 필요한 프로세스를 실행할 수 있게 하는 방법
연속 메모리 할당 시, 프로세스 실행 불가
가상 메모리 할당 시, 프로세스 실행 가능
가상 메모리
- 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리
- 현재 필요한 일부만 메모리에 적재
사상 : 프로세스 실행을 위해 가상주소를 실주소로 변환
- DAT(동적 주소 변환) : 프로세스가 실행되는 동안 사상
- 인위적 연속성 : 가상주소 공간에서는 연속, 실주소 공간은 연속 X
02 블록 단위 주소
블록 단위 주소 변환
- 블록 단위로 분류, 각 블록이 메모리의 어디에 위치하는지 관리
- 크기 작으면 사상정보가 많고, 크기가 크면 블록 전송 시간이 크며 적재할 프로세스 수가 적음
- 페이징 기법 : 블록의 크기가 동일한 페이지로 구성
- 세그먼트 기법 : 블록의 크기가 서로 다른 세그먼트로 구성
페이징 기법
- 페이지 단위 : 가상 메모리를 고정된 크기의 블록
- 페이지 프레임 : 메모리 영역을 페이지와 동일한 크기의 블록인 페이지 프레임으로 나눔
- 페이지 사상표 : 가상주소를 실주소로 동적 변환, 가상주소의 페이지 번호에 대한 실주소의 페이지 프레임 번호를 저장
- 직접 사상 : 페이지 사상표를 이용
- 연관 사상 : 연관기억장치(저장된 값으로 데이터를 액세스하는 고속 메모리 장치)에 저장한 연관 사상표를 이용
- 특징
-- 논리적 의미와 무관하게 동일 크기의 페이지로 가상 메모리를 나눔
-- 프로세스 사이의 메모리 보호는 페이지 단위로
-- 내부 단편화 발생(외부 단편화 X)
세그먼트 기법
- 가상 메모리를 논리적 의미에 맞는 다양한 크기의 세그먼트 단위로 나누어 관리
페이징/세그먼테이션 혼용기법
- 세그먼테이션 기법의 논리적 장점 + 페이징 기법의 메모리 관리 장점
- 가상 메모리를 세그먼트 단위로, 각 세그먼트를 다시 페이지 단위로 분할
- 메모리는 페이지 프레임으로 분할
03 변환 페이지 호출기법
페이지를 어느 지점에 메모리에 적재할 것인지 결정
요구 페이지 호출 기법
- 한 프로세스의 페이지 요구가 있을때, 요구된 페이지를 메모리로 이동
- 명령어나 데이터가 실제로 참조되면 해당 페이지를 메모리에 적재
- 옮길 페이지를 결정하는데 오버헤드를 최소화
- 메모리에 옮겨진 페이지는 모두 프로세스에 의해 실제로 참조된 것임
- 프로세스 시작 시점에는 프로세스 진행에 따라 연속적으로 페이지 부재 발생 (성능 저하)
예상 페이지 호출 기법
- 현재 요구되지는 않지만 곧 사용될 것으로 예상되는 페이지를 미리 메모리로 이동
- 실제 필요한 시점이 되었을때 프로세스 실행 단절 X
- 예상이 잘못된 경우 메모리 공간 낭비
- 프로세스 시작 시점에 적용하면 성능이 개선됨
정답 : 3 | |
정답 : 2 | |
정답 : 4 1. 같은 컴퓨터 메모리 사용 2. 메모리 크기 < 용량 큰 프로세스 실행 가능 3. 프로세스가 참조하는 주소와 메모리에서 사용되는 주소 무관 |
|
정답 : 4 | |
정답 : 3 | |
정답 : 3 1. 크기는 모두 다름 2. 외부 단편화 발생 가능 4. 사상표에 세그먼트 비트, 주소 |
|
정답 : 2 |
01 다양한 페이지 교체기법
페이지 교체기법 : 모든 페이지 프레임이 사용되고 있을때 새로 적재되어야 할 페이지를 위해 어느 페이지를 교체할 것인가 결정
교체 대상 선택 -> 보조기억장치에 보관 -> 새로운 페이지 적재
최적화의 원칙 : 앞으로 가장 오랫동안 사용 X 페이지 교체 대상으로 선택, 실현 불가
선택을 위한 기본 정채 : 대체로 좋은 결론을 내리면서 시간 및 공간의 오버헤드가 적은 방법
교체 제외 페이지 : 페이징을 위한 슈퍼바이저 코드 영역, 보조기억장치 드라이버 영역, 입출력장치를 위한 데이터 버퍼 영역 등
FIFO 페이지 교체기법 | LRU 페이지 교체기법 | LFU 페이지 교체기법 |
- 메모리 내에 가장 오래 있었던 페이지 교체 - FIFO 큐 이용 |
- 가장 오랫동안 사용되지 않은 페이지 교체 - 참조시간 이용 or 리스트 이용 특징 - Belady 이상현상 발생 X - 최적화 원칙에 근사한 선택 - 국부성에 기반 (어느 순간 특정 부분을 집중 참조) 시간 국부성 : 가까운 미래에 계속 참조 공간 국부성 : 근처 기억장소가 참조 |
- 참조된 횟수가 가장 적은 페이지 교체 - 참조횟수 이용 |
단점 - Belady의 이상현상 발생 오래 전 적재되어 반복적으로 사용되는 페이지가 교체될 가능성 |
단점 - 경험적 판단이 맞지 않는 상황 존재 - 막대한 오버헤드 |
단점 - 가장 최근 메모리로 옮겨진 페이지가 교체 - 초기에 매우 많이 사용된 이후 더이상 사용이 없는데 교체 X - 막대한 오버헤드 |
NUR 페이지 교체기법 | 2차 기회 페이지 교체기법 | 클럭 페이지 교체기법 |
- 참조 여부와 수정 여부에 따른 우선순위에 따라 적합한 페이지 교체 - 페이지마다 참조 비트 r과 수정 비트 m 이용 |
- FIFO 페이지 교체기법과 참조 여부에 따른 우선순위를 고려해 적합한 페이지 교체 - FIFO 큐와 참조 비트 이용 |
- 2차 기회 페이지 교체를 원형 큐를 이용 - 교체가 필요한 경우 큐의 삭제 및 삽입 대신 포인터 이동으로 구현 |
특징 - 적은 오버헤드로 적절한 성능 - LRU와 유사하면서 실제로 자주 사용 - 동일 그룹 내에서 선택은 무작위 - 모든 참조 비트 r을 주기적으로 0으로 변경 |
교체 대상 선택 방법 1. 큐의 선두를 꺼내 참조 비트 조사 2. 참조 비트가 0 -> 교체 대상 3. 참조 비트가 1 -> 0으로 바꿔 큐 뒤 |
02 프로세스별 페이지 집합 관리
프로세스별 페이지 집합 : 프로세스마다 페이지 프레임에 적재된 페이지들의 집합
프로세스별 페이지 집합의 크기가 적은 경우
- 메모리에 적재 프로세스 수 많아짐 -> 시스템 처리량 증대
- 각 프로세스별 페이지 부재가 많아짐 -> 성능 저하
페이지 집합 관리 알고리즘 : 워킹세트 알고리즘, PFF 알고리즘
워킹세트 알고리즘 | PFF 알고리즘 |
- 하나의 프로세스가 자주 참조하는 페이지 집합 - 위킹세트 W(t, w) : 시간 t-w 로부터 시간 t까지의 프로세스 시간 간격동안 참조된 페이지 집합 |
- 프로세스의 상주 페이지 세트를 변경하며 관리 - 페이지 부재가 발생할 때, 빈도를 계산해 상한과 하한을 벗어나는 경우에만 변경 페이지 부재 빈도 : 두 페이지 부재가 일어난 사이 시간의 역수 |
- 데닝(Denning)이 제안 - 페이지 부재 비율을 감소시키기 위한 방법 - 원칙: 실행 중인 프로그램의 워킹세트를 메모리에 유지(국부성) - 프로세스가 실행됨에 따라 워킹세트의 크기는 변함 |
|
문제점 - 과거를 통해 미래를 예측하는 것이 정확하지 않음 - 워킹세트를 정확히 알아내고 이를 계속적으로 업데이트하는 것이 현실적으로 어려움 - 워킹세트 윈도의 크기 w의 최적 값을 알기 어려우며 이 역시 변화할 수 있음 |
정답 : 1 정답 : 1 |
|
정답 : 1 정답 : 2 |
|
정답 : 3 | |
정답 : 1 | |
정답 : 4 | |
정답 : 3 | |
정답 : 1 |
'Self-Study > Study' 카테고리의 다른 글
[운영체제#12] 저장장치 및 관리 (0) | 2022.06.01 |
---|---|
[운영체제#11] 장치 관리 (0) | 2022.06.01 |
[운영체제#8] 메모리 관리 (0) | 2022.06.01 |
[운영체제#6, 7] 교착상태 (0) | 2022.06.01 |
[운영체제#4,5] 병행 프로세스 (0) | 2022.06.01 |