Computer Science/운영체제

[운영체제] 가상 메모리

excited-hyun 2021. 5. 16. 00:09
반응형

가상 메모리

다중 프로그래밍의 실현에 있어서는 많은 프로세스들을 동시에 메모리에 올릴 수 있어야 한다. 가상 메모리는 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이며, 프로그램이 물리 메모리 보다 커도 된다.

가상 메모리 개발 배경

이전에는 실행되는 코드를 전부 물리 메모리에 올려둬야 했으며, 메모리의 용량 보다 큰 프로그램의 경우엔 실행이 불가능 했음.

여러 프로그램을 동시에 메모리에 올리기 힘든 용량의 한계, 페이지 교체등의 성능 이슈가 발행.

프로그램의 일부만 메모리에 올릴 수 있다면?

- 물리 메모리의 크기에 제약 받지 않게 됨

- 더 많은 프로그램들을 동시에 시행할 수 있게 됨. -> 응답시간은 유지되고 CPU 이용률과 처리율은 높아짐.

- swap에 필요한 입출력이 줄어들기 때문에 프로그램들이 빠르게 실행됨.

 

가상 메모리가 하는 일

이는 실제 물리 메모리 개념과 사용자의 논리 메모리 개념을 분리한 것으로 정의된다. 따라서 작은 메모리로도 얼마든지 큰 가상 주소 공간을 프로그래머에게 제공할 수 있다.

가상 주소 공간

- 한 프로세스가 메모리에저장되는 논리적은 모습을 가상 메모리에 구현한 공간. 프로세스가 요구하는 메모리 공간을 가상메모리에서 제공함으로써 현재 직접적으로 필요치 않은 메모리 공간은 실제 물리 메모리에 올리지 않는 것으로 물리 메모리 절약이 가능.

프로세스간의 페이지 공유

- 가상 메모리는 프로세스들이 메모리를 공유하는 것을 가능하게 하고 프로세스들은 공유 메모리를 통해 통신할 수 있음.

- 시스템라이브러리가 여러 프로세스들 사이에 공유될 수 있게 함.

위 두 경우 모두 각프로세스들은 각자 자신의 주소 공간처럼 인식하지만 실제 물리 메모리는 공유되고 있는 것.

 

Demand Paging (요구 페이징)

프로그램 실행 시작시엔 초기에 필요한 것들만 적재하는 전략으로 실행 과정에서 필요해질 때마다 페이징으로 메모리에 올린다.

따라서 한번도 접근되지 않은 페이지의 경우엔 물리 페이지에 올라가지 않는다.

프로세스 내의 개별 페이지들은 페이저(pager)에 의해 관리되며 이는 프로세스 실행에 실제 필요한 페이지들만 메모리로 읽어오기 때문에 사용되지 않을 페이지를 가져오는 시간과 메모리 낭비를 줄여준다.

페이지 교체

요구 페이징의 내용 처럼 프로그램 실행시 모든 항목이 물리 메모리에 올라오지 않기 때문에 프로세스의 동작에 필요한 페이지를 요청하는과정에서 page fault (페이지의 부재)가 발생하면 원하는 페이지를 보조 기억 장치에서 가져온다. 그러나 만약 물리 메모리가 전부 사용중이라면 페이지의 교체가 필요하다.

기본적인 방법 - 물리 메모리가 모두 사용중인 상황

1. 디스크에서 필요한 페이지의 위치를 찾음

2. 빈 페이지 프레임을 찾음

   i. 페이지 교체 알고리즘을 통해 희생될 victim 페이지를 선택.

  ii. 희생될 페이지를 디스크에 기록하고, 관련 페이지 테이블을 수정. 

3. 새롭게 비워진 페이지 테이블 내 프레임에 새 페이지를 읽어오고 프레임 테이블 수정

4. 프로세스 다시 시작

페이지 교체 알고리즘

FIFO 페이지 교체

가장 간단한 페이지 교체 알고리즘. 먼저 물리 메모리에 들어온 페이지 순서대로 페이지 교체 시점에 나가게 됨.

- 장점: 프로그래밍 하기 쉬움

- 단점

  • 오래된 페이지가 항상 불필요한 정보를 포함하지 않을 수 있음
  • 처음부터 활발하게 사용되는 페이지를 교체해서 페이지의 부재율을 높이는 부작용이 생길 수 있음
  • Belady의 모순: 페이지를 저장할 수 있는 페이지 프레임의 갯수를 늘려도 오히려 부재가 더 많이 발생하는 모순이 존재

최적 페이지 교체 (Optimal Page Replacement)

앞으로 가장 오래동안 사용되지 않을 페이지를 찾아 교체하는 것.

모든 알고리즘보다 낮은 페이지 부재율을 보이며 Belady의 모순이 발생하지 않음.

- 장점: 알고리즘 중 가장 낮은 페이지 부재율 보장

- 단점: 구현이 어려움. 모든 프로세스의 메모리 참조 계획을 미리 파악할 방법이 없기 때문.

 

LRU 페이지 교체

최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택해 교체.

대체로 FIFO보다 우수하고 OPT보다는 그렇지 못하다.

 

LFU 페이지 교체

LFU: Least Frequently Used

참조 횟수가 가장 적은 페이지를 선택해 교체.

활발하게 사용되는 페이지는 참조 횟수가 많다는 가정에서 만들어진 알고리즘.

- 단점: 어떤 프로세스가 특정 페이지를 집중적으로 사용하다 다른 기능을 사용하게 되면 더 이상 사용하지 않아도 계속 메모리에 머물게 되어 최기 가정에 어극나는 시점이 발생. 최적 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않음.

 

MFU 페이지 교체

MFU : Most Frequently Used

참조 회수가 가장 작은 페이지가 최근에 메모리에 올라 왔고, 앞으로 계속 사용될 것이라는 가정에 기반함.

- 단점: 최적 알고리즘을 제대로 근사하지 못해 잘 쓰이지 않음.

728x90
반응형