본문 바로가기
개인 공부/OS (쉽게 배우는 운영체제)

쉽게 배우는 운영체제 : 가상 메모리 관리 (9장)

by 희조당 2021. 10. 29.
728x90

■ 요구 페이징

 · Process가 요청할 때 메모리로 가져오는 것

   → 메모리를 효율적으로 관리, 응답 속도 향상의 이유로 process 일부만 가져옴 (나머지는 필요할 때)

 

 가상 메모리

 · 물리 메모리 + 스왑 영역 (Harddisk or 메모리 관리자의 영역)

   → 스왑-in : 메모리로 data를 가져오는 것 ↔ 스왑-out

 

 Flag Bit (Access-Modifed-Valid-Read-Write-Excute bit)

 · 접근 비트(참조 비트) : 페이지의 사용 여부 

 · 변경 비트 : 페이지의 변경 여부

 · 유효 비트(현재 비트) : 요구하는 페이지의 위치를 표시

   → 0 : 메모리에 위치, frame num 저장 / 1 : 스왑 영역에 위치, page의 주소 저장

 · 읽기, 쓰기, 실행 비트(권한 비트) : 권한 제어

 

 Page fault(페이지 부재)

 · 요구한 페이지가 메모리에 없는 경우

   → Page Table을 갱신 / 만약 빈 프레임이 없다면 프레임 중 하나를 스왑 영역으로 보냄 → 지역성 기반

 

 지역성 

 · 공간 지역성 : 더 가까운 data가 사용 확률이 높음

 · 시간 지역성 : 더 최근에 쓴 data가 사용 확률이 높음

 · 순차적 지역성 : 순차적으로 작업하는 경향이 있음

 

 페이지 교체 알고리즘

 · 스왑 영역으로 보낼 페이지를 결정하는 방법 (Page Fault의 최소화)

 1. 무작위 : 무작위로 선정한 page OUT / 간단 but 효율 ×

 2. FIFO : 가장 먼저 들어온 page OUT / 시간 지역성만 따짐

 3. 최적 : 앞으로 사용하지 않을 page OUT / 미래를 예측할 수 없어 구현 불가

 4. LRU(Least Recently Used) : 가장 오랫동안 사용하지 않은 page OUT / 연산이 이루어진 시간이 기준

   → 카운터 기반 : 추가적인 메모리가 필요 → 공간 낭비

   → 참조 비트 쉬프트 : 1B 공간에서 사용 여부를 매번 갱신 → 약간의 공간 낭비

 5. LFU(Least Frequently Used) : 가장 적게 사용한 page OUT / 추가적인 공간이 필요 → 공간 낭비

 6. NUR(Not Used Recently) : LRU, LFU와 비슷한 성능 그러나 적은 메모리 낭비(2bit)

   → 참조 비트(접근 비트, 변경 비트) 이용 : (0, 0) → (0, 1) → (1, 0) → (1, 1) 순서로 OUT

   → 모두 (1, 1)이라면 모두 (0, 0)으로 초기화

 7. FIFO 변형

   → 2차 기회 : Page Fault가 없으면 큐의 맨 뒤로 보냄 / 추가적인 작업을 요구

   → 시계 : 원형 큐 사용(pointer의 순회) + 참조 bit / 추가 작업이 복잡, 많은 계산양

         성공 시 참조 bit = 1 / 실패 시 pointing 하는 page의 bit가 1이면 0으로 초기화하고 넘어간다, 아니면 OUT

 

 스레싱(Threshing)

 · 잦은 페이지 부재로 작업이 멈춘 것 같은 상태

   ※ 메모리가 일정 크기 이상이면 아무리 커져도 속도의 변화 ×

 

 정적 할당

 · process 실행 초기에 프레임 배부 후 크기 조정 

 · 균등 할당 : process 크기 상관없이 동일한 프레임 배부 / 균등해서 문제

 · 비례 할당 : process 크기 비례 / 유동적인 반영 ×, 미리 공간을 확보해 낭비가 생김

 

 동적 할당

 · 유동성 있게 프레임 배부 및 크기 조정

 · 작업 집합(Working-Set) : 공간 지역성 기반 / 최근 참조된 페이지들의 집합, 집합을 메모리에 유지

   → 작업 집합의 크기 : 메모리에 들어갈 최대 page의 수 (얼마나 자주 작업할 것인지)

   → WSW(작업집합 윈도우) : 선정할 페이지의 범위

 · 페이지 부재 빈도 : Page Fault의 회수를 기록해 부재 비율을 계산 → 상한선과 하한선을 설정

   → 상한선 : 프레임 할당의 기준 / 하한선 : 프레임 회수의 기준

댓글