Virtual Memory

  • (메인 메모리 크기) < (프로세스 크기)를 위해 나왔다.
  • 필요한 부분만 메모리에 올림으로써 메인 메모리에 올라가는 프로세스의 크기를 줄인다.

  • 페이징 과정을 걸쳐 필요한 페이지만 메모리에 적재 "요구 페이징(Demand Paging)"

 

Demand Paging

  • 프로세스의 이미지를 backing store에 저장(swap device)

  • valid bit를 페이지 테이블에 추가(1 - memory에 적재 중, 0 - memory에 없음)
  • valid bit가 0인데 해당 페이지를 부르면 Page Fault 발생

  • pure demand paging : 처음부터 모든 페이지를 적재시키지 않고 CPU가 요구할 때 valid를 바꾸어 페이지를 적재
  • prepaging : 우선 필요할 것 같은 페이지를 적재시키고 필요할 때 다른 페이지를 적재

 

Page Replacement

FIFO

  • First-In First-Out
  • 메모리에 먼저 올라온 페이지를 먼저 내보낸다.
  • victim page의 대상은 가장 먼저 메모리에 올라온 페이지
  • 처음에 프로세스가 실행 될 때 최초 초기화를 시키는 역할만 진행
  • 프레임의 수가 많을수록 page fault가 감소 (Belady's Anomaly)

 

OPT

  • Optimal
  • 가장 사용하지 않을 페이지를 가장 우선적으로 내보낸다.
  • 미래를 알 수 없기 때문에 실질적으로 수행하기 어렵다.

 

LRU

  • Least-Recently-Used
  • 최근에 사용하지 않은 페이지를 가장 먼저 내보낸다.
  • 과거를 보고 판단, 실질적으로 사용 가능!

  • Global 교체 : 메모리상의 모든 프로세스 페이지에 대해 교체
  • Local 교체 : 메모리상의 자기 프로세스 페이지에서만 교체

'Computer Science > Operating System' 카테고리의 다른 글

[개념] File System 1  (0) 2021.08.12
[개념] Storage Management  (0) 2021.08.12
[개념] Memory Management 4(Segmentation)  (0) 2021.08.12
[개념] Memory Management 3(Paging)  (0) 2021.08.12
[개념] Memory Management 2  (0) 2021.08.12

Paging

  • 최초 적합과 최적 적합(1/3정도 메모리 낭비) → Compaction(메모리 계산 부담) → Paging
  • 프로세스를 일정 크기인 페이지로 잘라 메모리에 적재하는 방식
  • hole과 프로세스를 모두 특정 페이지 단위로 잘라서 관리
  • 프로세스를 나눈 페이지 마다 relocation register를 만들어 놓으면 CPU는 마치 프로세스가 연속된 메모리 공간에서 동작하고 있다고 생각...

  • MMU ⇒ page table
  • CPU가 내는 주소 : Logical Address / page table을 거쳐 Physical Address

ex) logical address = 50, page size = 16byte

50 = 110010(2)

하위 4bit(0010)은 n비트

상위 2bit(11)가 '3'의 값이 페이지 번호 → 이에 해당하는 페이지 테이블 숫자를 읽는다. 8이라 가정하면

8 = 1000(2)

8과 n비트를 합쳐 10000010(2)라는 물리적 주소로 간다. 10진수로 바꾸면 130!

 

  • 페이징 과정을 진행하면 내부 단편화가 발생할 수 있다.
  • 프로세스의 크기가 페이지 크기의 배수가 아니라면 마지막 프로세스의 페이지는 한 프레임을 다 채울 수 없다.
  • 하지만 외부 단편화에 비하면 낭비가 적다!

+ Recent posts