Virtual Memory

김형준 Kim Hyeong Jun·2023년 3월 20일
0

Virtual Memory(가상 메모리)

가상메모리란 실제의 물리 메모리 개념과 개발자 입장의 논리 메모리 개념을 분리한 것입니다. 이렇게 함으로써 개발자가 메모리 크기에 관련한 문제를 염려할 필요 없이 쉽게 프로그램을 작성할 수 있게 해줍니다.
운영체제는 가상메모리 기법을 통해 프로그램의 논리적주소 영역에 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장하게 됩니다.

Demand Paging(요구 페이징)

당장 사용될 주소 공간을 Page 단위로 메모리에 적재하는 방법을 요구 페이징(Demand Paging)이라고 합니다. 요구 페이징 기법에서는 특정 Page에 대해 CPU의 요청이 들어온 후에 해당 Page를 메모리에 적재합니다.
당장 실행에 필요한 Page만을 메모리에 적재하기 떄문에 메모리 사용량이 감소하고, 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점이 있습니다.

Page Fault

CPU가 무효 비트(Invalid Bit)로 표시된 Page에 접근하는 상황을 Page Fault라고 합니다.

  1. CPU가 페이지 N을 참조
  2. Page Table에서 페이지 N이 Invalid 상태입을 확인
  3. MMU에서 Page Fault Trap을 발생시킴
  4. 디스크에서 페이지 N을 빈 프레임에 적재하고 Page Table을 업데이트(Invalid -> Valid)

모든 페이지 테이블에는 Valid-Invalid Bit가 존재합니다. 이때 Valid Bit는 페이지가 메모리에 존재한다는 뜻이고, Invalid Bit는 페이지가 메모리에 존재하지 않는다는 뜻입니다.

Page Replacement Alogorithm(페이지 교체 알고리즘)

Page Fault가 발생하면, 요청된 Page를 디스크에서 메모리로 가져옵니다.
이때, 물리적 메모리에 공간이 부족할 수 있는데, 그럴 경우에는 메모리에 올라와 있는 Page를 디스크로 옮겨 메모리 공간을 확보해야 합니다.
이러한 동작을 페이지 교체라고 하고, 어떤 페이지를 교체할 것이냐를 결정하는 알고리즘을 페이지 교체 알고리즘이라고 합니다.
교체 알고리즘은 최대한 Page Fault가 적게 일어나도록 도와야하기 때문에, 앞으로 참조될 가능성이 적은 Page를 선택해 교체하는 것이 성능을 향상시키는 방법입니다.

  • FIFO : First In First Out
  • 최적 페이지 교체 : 앞으로 가장 오랫동안 사용되지 않을 Page를 찾아 교체.(실제 구현은 어려움)
  • LRU : Least Recently Used, 가장 오랜동안 사용되지 않은 Page를 교체.
  • LFU : Least Frequently Used, 참조 횟수가 가장 적은 Page를 교체.

Reference

개발남노씨 - CS 완전정복 강의
[운영체제] 가상메모리(Virtual Memory)와 요구 페이징(Demand Paging), Valid-Invalid Bit, 페이지 부재(Page Fault)과정

profile
I want be a developer🙂

0개의 댓글