Virtual Memory

kio·2023년 6월 4일
0

CS

목록 보기
22/30

Virtual Memory

정의\
데이터를 RAM에서 디스크 저장소로 일시적으로 전송하여 응용 프로그램이 컴퓨터에서 물리적으로 사용 가능한 것보다 더 많은 메모리에 액세스할 수 있도록 하는 메모리 관리 기술입니다.

이렇게 disk를 Ram의 보조 도구처럼 사용하기 위해선 가상주소를 물리주소로 변환하고, 이를 보호하는
MMU라고하는 하드웨어가 있어야한다.

MMU(Memory Management Unit)


우선 가상주소와 물리주소를 매칭하기 위해선 MMU는 ( 가상 주조 공간 상에서의 페이지번호 + 해당 페이지 내에서의 offset ) 과 ( 실제 메모리 상에서의 페이지 번호 + 해당 페이지 내에서의 offset ) 을 비교합니다.

이렇게 매칭 시키는 것 이외에도 Memory Protection의 기능도 수행한다.

Memory Protection\
메모리 보호는 메모리에 대한 무단 액세스를 방지하는 보안 기능입니다. MMU를 사용하면 운영 체제는 가상 메모리의 어떤 페이지를 읽거나 쓸 수 있거나 실행할 수 있고 어떤 페이지에 전혀 액세스할 수 없는지 지정할 수 있습니다. 응용 프로그램이 유효하지 않은 액세스 유형으로 가상 메모리 페이지에 액세스하려고 하면 MMU는 운영 체제에서 처리하는 페이지 오류 예외를 발생시킵니다.\
MMU는 또한 악성 소프트웨어가 메모리를 덮어쓰거나 손상시켜 시스템을 손상시키는 것을 방지합니다. 예를 들어, MMU는 공격자가 악의적인 데이터로 메모리의 버퍼 내용을 덮어쓰려고 시도하는 버퍼 오버플로 공격을 방지하는 데 사용할 수 있습니다.

TLB(Translation Look-aside Buffer)란
우리가 원하는 페이지를 접근하려면 최소 2번의 접근이 필요하다.\
1. page table접근
2. 실제 메모리접근
이러한 과정을 줄이고자 조금 더 작은 더 CPU 친화적인 buffer가 TLB이다.

Demand Paing

필요한 부분만 메모리제 적재하는 것(적재 여부는 페이지 테이블에 표시)

이렇게 필요한 부분을 적재하면 메모리를 효율적으로 사용할 뿐만 아니라 사용되지도 않을 페이지를 가져오는 낭비를 하지 않아도 된다.
그럼 어떤 페이지를 가져올까? 또 만약 메모리가 꽉 찼다면 어떤 걸 빼야하나?

Page Replacement in Demand Paing

이렇게 기존 페이지를 교체해야되는 상황이 온다면 기본적으로 다음과 같이 문제를 해결해야한다.
1. FIFO
전제조건 : 각 페이지가 올라온 시간을 페이지에 기록 혹은 큐에 저장하여 구현하는 방법
단점 : 오래되었더라도 활발하게 사용중이었던 페이지를 교체한다면 페이지 부재율이 높아지고, 실행속도가 떨어질 수 있다.
2. Opimal page replacement
가장 좋은 방법이지만 현실에서는 불가능한 방법이다.
그 이유는 다음에 어떤페이지가 사용될지 미리 알아야되는데 이것은 불가능하다.
실제로 구현된다면 가장 페이지 교체 수가 적다.
3. LRU(least-recently-used)
가장 오래 사용되지 않은 페이지를 교체하는 알고리즘이다.
Optimal을 따라하기 위해 고안된 것으로 미리 알수 없다면 통계적으로 안사용된것을 없앤다는 데서 시작했다.
가장 많이 채택이 된 알고리즘이고 평가가 좋다.
4. LFU(least-frequently-used)
가장 덜 불린 페이지를 교체한다. 만약 그것이 여러개라면 LRU 처럼 작동한다.
5. MFU(most-frequently-used)
참조횟수가 가장 많은 페이지를 교체한다. 참조횟수가 적다 = 최근에 불렸다. 라는 의미로 만들어진 알고리즘이다.

Locality of Reference

그냥 단순히 가져오는 것은 위에 알고리즘이나 서술로 가능하지만, 하나를 가져올 때 다음에 사용될것들을 예측해서 가져온다면 miss rate가 줄게 될것이다.

  1. 공간(spatial) 지역성 : 특정 클러스터의 기억 장소들에 대해 참조가 집중적으로 이루어지는 경향으로, 참조된 메모리 근처의 메모리를 참조한다.
  2. 시간(temporal) 지역성 : 최근 사용되었던 기억 장소들이 집중적으로 엑세스되는 경향으로, 참조했던 메모리는 빠른 시간에 다시 참조될 확률이 높다.
  3. 순차(sequential) 지역성 : 데이터가 순차적으로 액세스되는 경향으로, 프로그램 내의 명령어가 순차적으로 구성되어 있다는 것이 대표적인 경우이다. 공간 지역성에 편입되어 설명되기도 한다.

0개의 댓글