가상 메모리 Flashcards
관리 기법
[정의] 주기억 장치의 물리적 한계 극복, 멀티 프로세스 환경의 관리 효율성 향상 위한 논리적 메모리 확장 및 관리 기법
[관리요소] 메모리 적재 시점(호출), 메모리 적재 장소(배치), 교체 대상 선정(교체), 메모리 분할 방식(할당)
[필요성]
- (문제) Application 크기 증가(개발시 프로그램 사용 영역 고려), 프로세스별 메모리 할당 어려움
- (방안) 가상 메모리 사용
- (효과) 논리적 주소 체계 통한 확장성, 병행성, 개발 편의성 향상
* 물리적 메모리 한계 극복하고 다수 사용자에 의한 메모리 공유를 위해 가상 메모리 사용
[가상 메모리 관리 기법]
- 호출기법 : 순수, 요구, 예측
- 배치기법 : Best, Worst, First, Next Fit
- 할당기법 : 페이지, 세그먼트
- 교체기법 : FIFO, SCR, LRU, OPT, LFU, MFU, NUR
호출 기법
[정의] 보조기억장치에서 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정하는 전략
[기법]
1. 요구호출(Demand Fetch)
- 요구시 제공
- 페이지 결정 부하 최소화, 효율성(요구=사용), 신규페이지 경우 연속적 Page Fault 발생 가능
2. 예상호출 (Anticipatory Fetch)
- 필요성 예측하여 미리 제공
- 신규 프로세스 시작 시점, 실행시간 감소 효과, 예측 정확도 중요
배치 기법
[리드] 빈공간 리스트 활용
[정의] 새로 반입된 프로그램이나 데이터를 메모리에 배치 하기 위한 최적 공간 선정 기법
[기법]
<속도중심>
1. First Fit : 적재 가능 최초 빈공간 배치 / 높은 효율성(속도), Fragmentation 발생, 빠른 배치 속도, 메모리 단편화 집중 발생
2. Next Fit : 이진 탐색 이후 최초 사용가능 공간 할당, First Fit 개선, Roving Pointer활용, 단편화 집중 개선, 빠른 검색 속도
<공간중심>
3. Best Fit : 적재 가능 공간중 최소크기 빈공간 탐색, 빈공간 스캐닝후 배치 / 큰사이즈 빈공간 확보 가능, 탐색 및 정렬 부하와 단편화 발생
4. Worst Fit : 적재 가능 공간 중 최대크기 빈공간 탐색 / 단편공간 최소화, 낭비 영역 발생, 스캐닝 시간
</공간중심></속도중심>
할당 기법
[정의] 프로세스 실행중 프로세스에 메모리 할당 방식, 할당 크기 관리 기술
[기법]
1. 연속 메모리 할당 : 필요한 만큼 연속적인 메모리 공간을 할당받아 메모리 적재(고정, 가변)
2. 분산 메모리 할당 : 연속되지 않는 별도 메모리 동간을 할당받아 적재(페이지, 세그먼트)
[종류]
1. 페이징(Paging) 기법 : 고정 분할
2. 세그먼트(Segmentation) 기법 : 가변 분할
3. 페이지 & 세그먼트기법 : 가변 분할
[비교] 페이징 vs 세그먼트
- 할당 단위 : 고정 크기 / 가변 크기
- 적재 단위 : 프로그램 일부 적재 / 프로그램 전체 적재
- 장점 : 외부 단편화 없음, 교체 시간 짧음 / 코드, 데이터 공유 용이, 내부 단편화 최소화
- 단점 : Thrashing 문제, 내부 단편화, 코드, 데이터 공유 논란 / 외부 단편화 심각, 교체시간 길어짐
- 논리주소 : 페이지 번호(p)와 변위(d) / 세그먼트 번호(s)와 변위(d)
페이징 기법
[정의] 메모리를 고정 크기의 프레임으로 나누어 할당하는 외부 단편화 해결하는 가상 메모리 할당 기법
[특징] 메모리 고정 크기 분할 방식, 빠른 읽기, 메모리 낭비 큼
[페이지 사상 기법] 직접.연관.직접/연관 사상법
[동작]
1. 논리 주소 page number
2. page table 에서 frame number 확보
3. frame number+page offset 물리 메모리 주소확인
[비교] 페이징 vs 세그먼트
- 메모리 할당 단위 : 고정 / 가변
- 적재 단위 : 프로그램 일부 / 프로그램 전체
- 장점 : 교체 시간 짧음, 외부 단편화 없음 / 내부 단편화 최소화, 코드 데이터 공유 용이
- 단점 : Thrashing 문제 심각, 내부 단편화, 코드 데이터 공유 논란 / 외부 단편화 심각, 긴 교체 시간, 메인 메모리 크기가 커야 함
페이지(주소) 사상 기법
[정의] 보관중인 프로그램이나 데이터를 언제 주기억 장치로 적재할 것인지 결정하는 전략 기법 종류
* 가상메모리 페이징 사상 기법을 통해 물리적인 메모리 부족 문제 해결과 CPU 이용률 향상 가능
[기법]
- 직접 사상(Direct Mapping) : PMT(Page Mapping Table)을 주기억장치에 위치, 주소 변환에 시간 소요
- 간접 사상(Associative Mapping)
- Page table을 Associative buffer에 저장
- TLB에 매핑 테이블 위치(고속 캐시), 높은 성능, 고 비용
- 직접/간접 사상(Direct/Associative Mapping) : Page table을 주기억 장치와 Associative buffer에 분산 저장
세그먼트 기법
[리드] 사용자 관점 메모리 할당
[정의] 메모리를 서브루틴, 프로시저, 함수 또는 모듈등의 다른 크기를 갖는 세그먼트로 분산 적재 기법
[특징] 메모리 할당 크기 가변, 프로그램 전체 적재
[동작]
1. 세그먼트 주소이용 세그먼트 number
2. segment table 에서 시작 주소(base), 길이(limit) 확보
3. segment + offset 물리메모리 주소확인
[문제점/해결방안] 외부 단편화 발생 /
메모리 분할 기법
[고정 분할] 메모리를 여라개 고정 크기영역 분할, 분할영역별 큐 또는 통합 큐 기반 프로세스 배치 통한 정적 파티션 생성 메모리 분할 기법 / 구현 간단, 제한된 성능 (내부 단편화 발생)
[동적 분할] 메모리 분할 경계 미고정, 각 프로세스 별 필요 크기 기반 파티션 분할 및 할당 통한 동적 파티션 생성 메모리 분할 기법 / 내부 단편화 해결 (외부 단편화 발생)
교체 기법
[정의] Page Fault 발생 시 필요 페이지의 주기억장치 적재를 위해 교체해야 할 페이지 프레임을 선택하는 매커니즘
[사용이유] 페이지 부재 발생시 page fault를 최소화, 메인메모리 공간 확보, 페이지 교체 순서 결정, 시스템 성능 향상,
[알고리즘]
- FIFO : 가장 먼저 들어온 페이지 교체
- LFU : 참조 횟수가 가장 적은 페이지 교체
- MFU : 참조횟수가 가장 많은 페이지 교체
- LRU : 참조시간 기준 가장 오래된 페이지 교체
- OPT : 가장 오랫동안 사용되지 않을 페이지 교체(이상적, 구현 불가)
- NUR : 최근에 사용하지 않은 페이지 교체
- SCR : FIFO 단점 개선, 2차 기회
페이지 교체 문제점
[문제점]
- Demand Paging : 필요한 프로그램만 메모리에 적재하는 방법
- Page Fault : Locality
- Thrashing : 페이지 교체 시간 > 실행 시간
FIFO
[정의] 페이지에 적재된 순서대로 가장 먼저 들어온 페이지 교체
[특징]
- 구현 용이, Timestamp 사용
- Belady’s Anomaly 발생 (3,4프레임)
LFU
[정의] 적재되어 있는 페이지 가운데 가장 참조 횟수가 적은 페이지를 교체하는 방식
[특징]
- 사용된 횟수가 가장 작은 페이지를 교체
- 동일시 LRU 기법 수행,
- 참조 횟수 기록/검색으로 인한 오버헤드 발생 가능
MFU
[정의] 참조 횟수가 가장 많은 페이지 교체
LRU
[정의] 적재되어 있는 페이지 가운데 참조된 시간 기준 가장 오래된(오랫돈안 사용되지 않은) 페이지 교체
[특징]
- 시간적으로 오랫동안 사용되지 않는 블록을 교체
- 지역성 휴리스틱 기법, 경험적 최소화, 참조시간 기록
- 시간 기록/검색으로 인한 오버헤드 발생 가능
* 많은 운영체제에서 채택되어 활용되는 증명된 알고리즘
SCR
[정의] FIFO 단점 보완 한번이라도 참조된 페이지에 한번더 머무를 수 있는 기회를 제공하는 교체 기법
[특징]
- 인입순서 기준, 참조비트 기반 추가 기회
- 프레임 마다 참조 비트 생성
- 교체 대상 페이지의 참조 비트가 0이면 바로 교체
- 교체대상 페이지의 참조 비트가 1인 경우 참조 비트를 0으로 만들고 큐의 맨 뒤로 이동(기회 제공)
[문제점] 모든 페이지의 참조 비트가 1인 경우 환형 큐를 생성 성능 하락