CS - 가상메모리

2023. 5. 29. 11:57학습/Computer Science

질문 예시

1. 가상 메모리의 관리 정책은 어떤 것들이 있나요?
2. 가상 메모리 페이징 기법의 유형에 대해서 설명보세요.
3. 가상 메모리의 페이지 교체 알고리즘 3개만 설명해보세요.
4. TLB(Translation Lookaside Buffer)란 무엇인지요?

 

 

가상메모리

주기억장치 안의 프로그램 양이 많아질 때 사용하지 않는 프로그램을 보조기억장치 안의 특별한 영역으로 옮겨서, 그 보조기억장치 부분을 주기억장치처럼 사용할 수 있는데 이 때 사용하는 보조기억장치의 일부분을 가상기억장치라고 함.

 

가상메모리의 장점

1. 사용자 프로그램이 물리 메모리의 제약에서 벗어남

  => 사용자 프로그램이 물리 메모리보다 커져도 됨.

프로그래머는 물리 메모리 크기를 신경쓰지 않아도 되기 때문에 실제 해결하고자 하는 문제에 집중가능

 

2. 각 프로그램이 더 작은 메모리를 차지하기 때문에 더 많은 프로그램을 동시수행 가능

 => 프로세스 당 메모리 사용량이 감소하고, 더 많은 프로세스를 수용 가능

 응답시간(response time, turn aruound time)은 늘지 않으면서 CPU 이용률과 처리율이 높아짐

 

3. 프로그램을 메모리에 올리고 swap 하는데 필요한 IO 횟수가 줄어듦

  => IO가 적게 일어나므로 더 빨리 실행가능

 

 

가상메모리 관리 정책

각 프로세스에게 메인 메모리를 할당하고 디스크(보조기억장치)의 어느 항목을 호출할 것인지, 어느 곳에 배치할 것인지, 무엇을 교체할 것인지 결정하는 메커니즘

 

 

관리정책의 유형
관리정책 내용 키워드
할당 정책 각 프로세스에게 할당할 메모리의 양 관리
프로세스 실행 중 메인 메로리 할당량 변화 알고리즘
고정할당기법과 할당 기법으로 구분
How much
호출 정책 언제 어느 항목들을 보조기억장치에서 메인 메모리에 가져올 것인지 결정
요구 호출(Demand Fetch)기법과 예측호출(Pre-Fetch)기법
When
배치 정책 프로그램의 한 블록을 메인메모리의 어디에 배치할 것인가 관리
First, Best, Next, Worst Fit
Where
교체 정책 메인메모리에 적재할 공간이 없을 경우, 무엇과 교체할 것인가에 대한 관리
FIFO, LRU, LFU, NUR
WHO

 

Pagging 기법(페이징, 고정분할)

메모리를 고정된 작은 크기의 프레임으로 따라 나누는 방식

매핑 테이블(페이지 번호, 프레임 번호)

외부 단편화는 해결, 내부 단편화가 많이 발생

 

페이징 기법의 유형

Direct Mapping

  • Page Table을 주기억장치에 위치
  • 데이터 접근을 위해 Page Table과 Data에 각각 한번씩 주기억장치 접근
  • 접근시간이 길어짐

Associative Mapping

  • Page table을 Associative buffer에 저장
  • 속도가 빠르고 가격이 비쌈

Direct/Associative Mapping

  • Page table을 주기억장치와 Associative buffer에 분산 저장
  • 연관사상 테이블: Locality에 근거하여, 최근에 가장 많이 참조된 page만 유지
  • 페이지사상 테이블: 연관사상 테이블에서 제외된 나머지 page들을 모두 유지

 

Segmentatin 기법 (가변분할)
  • 주기억장치는 각 세그먼트가 적재될 때마다 필요한 대로 분할하여 서로 다른 크기의 Segment로 분할
  • 주기억장치는 각 세그먼트가 적재될 때마다 필요한대로 분할됨
  • 매핑 테이블(세그먼트번호: 주소+크기)

Segmentation-Paging 혼용 기법
  • 페이징기법에 세그먼테이션 테이블을 추가하고, 권한 비트와 같이 중복되는 데이터를 세그먼테이션 테이블로 옮겨 오면 테이블의 크기 줄임
  • 각각의 장점만 취함으로써 메모리 관리를 효율적으로 가능

페이지 교체 알고리즘

무작위 교체 

- 교체될 페이지를 임의로 선정

- Overhead가 적으나 거의 사용되지 않음

 

FIFO(First in First out)

- 각 page가 주기억장치로 들어올 때마다 Time stamp를 찍어 시간을 기억

- 교체 필요 시 가장 먼저 들어온 page를 교체함

- FIFO Anomaly: page 프레임 수가 증가될 때, page fault가 감소하지 않고 오히려 증가하는 현상

 

LFU(Least Frequently Used)

- 현재를 기준으로 사용횟수가 가장 적은 page 교체

- 문제: 가장 최근에 주기억장치에 적재된 page 교체할 수 있음

 

LRU(Least Recently Used)

- 현재를 기준으로 가장 오랫동안 사용되지 않은 page를 교체

- Time Stamping에 필요한 overhead가 큼

 

NUR (Not Used Recently)

- 최근에 사용되지 않은 page를 2개의 비트를 이용하여 교체

- LRU의 시간 오버헤드 감소 방법

- 참조 비트 (Reference Bit) 와 변형 비트(Modified Bit) 사용

- 주기적으로 참조 비트를 0 으로 set 함

 

 

TLB(Translation Lookaside Buffer) (변환 색인 버퍼)

자주 참조되는 가상메모리 주소를 실제 메모리 주소로 매핑 시의 성능개선을 위해 MMU(Memory Management Unit)에서 사용하는 고속 캐시

- TLB는 페이지 테이블 접근에 따른 지연 문제를 해결하기 위한 cache memory

- 가장 최근 사용된 페이지 테이블 항목을 유지

- 주기억장치의 cache memory와 유사하게 동작

 

참고자료

https://www.youtube.com/watch?v=5pEDL6c--_k 

가상 메모리 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

변환 색인 버퍼 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

728x90