들어가기 전..

메모리(memory)란?

  • 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치임.
  • 메모리는 크게 내부 기억장치주기억장치외부 기억장치보조 기억장치로 분류됨.
    • DRAM, CPU 안에 있는 레지스터(register)와 캐쉬(cache memory) 등이 전자에 해당됨.
    • SSD, HDD 등이 후자에 해당됨.

 

가상 메모리 등장 배경

  • 초창기 컴퓨터에서는 사용 가능한 RAM의 용량이, 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음. 그렇지 않을 경우 "메모리 부족" 오류에 의해 해당 애플리케이션을 실행할 수 없었음.
  • 이후 컴퓨터에서는 프로그래머가 애플리케이션의 일부분만 기억장치에 올려 실행하도록 지정할 수 있게 하는 오버레이 기법을 사용하여 메모리 부족 문제를 해결하고자 했음. 하지만 이 역시 전반적인 메모리 부족 문제를 해결할 수 없었음. 오버레이를 사용하는 프로그램은 그렇지 않은 프로그램보다는 메모리를 덜 사용했지만, 애초에 시스템이 프로그램을 위한 충분한 메모리를 갖추고 있지 않은 경우에는 결국 똑같은 메모리 부족 오류가 발생했음.
  • 여기에서 더 발전한 가상 메모리 기법은 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지에 집중하지 않고, 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 문제를 해결하고자 함.
    • 이렇게 접근하는 방식이 가능한 이유는, 메모리 접근은 순차적이고 지역화되어 있기 때문임.
    • 그렇다면 이렇게 애플리케이션의 일부분만 메모리(기억장치)에 올려진다면, 메모리에 올라가지 않는 나머지는 어디에 위치해야 할까? ⇒ 정답은 보조 기억장치, 즉 디스크!
    • 가상 메모리의 핵심은 보조 기억장치다.

 

가상 메모리란?

가상 메모리는 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안되었음.
  • 애플리케이션이 실행될 때, 실행에 필요한 일부분만 메모리에 올라가며 애플리케이션의 나머지는 디스크에 남게 됨. 즉, 디스크가 RAM의 보조 기억장치(backing store)처럼 작동하는 것임.
    • 결국 빠르고 작은 기억장치(RAM)을 크고 느린 기억장치(디스크)와 병합하여, 하나의 크고 빠른 기억장치(가상 메모리)처럼 동작하게 하는 것임.
  • 가상 메모리를 구현하기 위해서는 컴퓨터가 특수 메모리 관리 하드웨어를 갖추고 있어야만 함. ⇒ 바로 MMU(Memory Management Unit)!
    예전에는 MMU가 이와 같이 따로 분리된 하드웨어였지만 최근의 아키텍처에서는 프로세서와 같은 칩에 회로로 삽입된다. (출처: 위키백과)
     
    • MMU는 가상주소를 물리주소로 변환하고, 메모리를 보호하는 기능을 수행함.
    • MMU를 사용하게 되면, CPU가 각 메모리에 접근하기 이전에 메모리 주소 번역 작업이 수행됨.
    • 그러나 메모리를 일일이 가상 주소에서 물리적 주소로 번역하게 되면 작업 부하가 너무 높아지므로, MMU는 RAM을 여러 부분(페이지, pages)로 나누어 각 페이지를 하나의 독립된 항목으로 처리함.
    • 페이지 및 주소 번역 정보를 기억하는 작업이 가상 메모리를 구현하는 데 있어 결정적인 절차임.

 

요구 페이징(demand paging)이란?

요구 페이징은 CPU가 요청할 때 프로세스의 데이터를 메모리에 올리는 것을 의미함. 즉, 처음부터 모든 데이터를 메모리로 적재하지는 않음.

 

페이지 폴트(page faults)란?

페이지 폴트란 어떤 페이지에 접근하려고 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 뜨는 인터럽트이며, 페이지 폴트가 발생하면 운영체제가 이를 해결한 뒤 다시 동일한 명령을 수행하는 식으로 동작함.
  • 페이지 폴트란, 어떤 프로그램이 자신의 주소 공간(가상 메모리 공간)에는 존재하지만 시스템의 RAM에는 현재 존재하지 않는 데이터·코드에 접근을 시도할 경우 발생하는 현상을 의미함.
  • 페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서, 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해줌.
  • 이러한 페이지 폴트가 자주 일어날수록 운영체제의 성능이 많이 저하되기 때문에 페이지 폴트가 일어나지 않도록 하는 것이 중요함. 페이지 폴트를 최소화하기 위한 방법으로는 페이지 교체 정책(page replacement policy)이 있음.
    • 메모리가 꽉 차있을 때 기존 페이지 중 하나를 물리 메모리에서 저장 매체로 내리고, 새로운 페이지를 방금 비워진 해당 물리 메모리 공간에 올림. 이때 기존 페이지 중 어떤 것을 내리면 좋을지에 대한 알고리즘을 짠 것이 바로 페이지 교체 알고리즘인 것!

 

TLB(Translation Lookaside Buffer, 페이지 정보 캐쉬)란?

TLB는 가상 메모리 주소를 물리적 주소로 변환하는 속도를 높이기 위해 사용하는 캐시로, 최근에 일어난 가상 메모리물리 주소의 변환 테이블을 저장해둠. CPU가 가상 주소를 가지고 메모리에 접근하려고 할 때 우선은 TLB에 접근하여 가상 주소에 해당되는 물리 주소를 찾고, 만약 TLB에 매핑이 존재하지 않는다면 MMU가 페이지 테이블에서 해당되는 물리 주소로 변환한 후 메모리에 접근하게 됨. (참고1, 참고2)

*buffer - 컴퓨터의 완충 기억 장치 (네이버 백과사전 참고)
  • TLB는 MMU에 포함되어 있는 작은 캐시로, 일종의 주소 변환 캐시라고 할 수 있음.
    • 참고: 캐시 메모리(cache memory)란?
      • 캐시 메모리란, 속도가 빠른 장치와 느린 장치 사이에서 속도 차에 따른 병목 현상을 줄이기 위한 범용 메모리를 의미함. 예를 들어, CPU에서의 캐시 메모리는 CPU 코어(고속)와 메모리(CPU에 비해 저속) 사이에서 속도 차에 따른 병목 현상을 완화하는 역할을 함.
      • 또한, 인터넷 웹 브라우저에는 캐시 파일이라는 개념이 있는데 캐시 파일은 웹 페이지 상의 이미지 등을 하드디스크에 미리 저장해두고, 다음 번에도 해당 웹 페이지에 접근할 때 해당 사이트에 이미지를 다시 요청하는 게 아니라 하드디스크에서 이미지를 불러들여 로딩 속도를 높이는 역할을 함. 즉 캐시 파일은 비교적 속도가 빠른 하드디스크과 상대적으로 느린 웹 페이지 가운데서의 병목을 줄이는 역할을 함.
  • TLB 사용 이점: 물리주소를 갖고 있으면 메모리(RAM)에 두 번 들릴 필요없이, 바로 해당 물리주소(in 메모리)를 찾아갈 수 있음.

 


- 참고 -

 

CPU의 캐시 메모리는 어떤 역할을 하는가?

CPU 구매 시 가장 기본적인 기준이 되는 것은 작동 '클럭 수치'이고(클럭 수치가 높으면 성능도 좋고 가격도 높다), 그다음으로 흔히들 고려하는 것이 바로 캐시 메모리다. CPU 사양을 보면 L1 캐시

it.donga.com

 

메모리 관리 장치 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 모토로라 68010 마이크로프로세서와 함께 사용되었던 68451 MMU. 예전에는 MMU가 이와 같이 따로 분리된 하드웨어였지만 최근의 아키텍처에서는 프로세서와 같은

ko.wikipedia.org

 

[운영체제] MMU, page table, inverted page table, TLB

우선 MMU의 정의부터 보고 가면 메모리 관리 장치(Memory Management Unit, 줄여서 MMU)는 CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품이다. 가상 메모리 주소를 실제 메모리 주소로

about-myeong.tistory.com

 

버퍼

하나의 장치에서 다른 장치로 데이터를 전송할 경우에 양자간의 데이터의 전송속도나 처리속도의 차를 보상하여 양호하게 결합할 목적으로 사용하는 기억영역을 버퍼 또는 버퍼 에어리어라고

terms.naver.com

 

Page Fault의 최소화를 위한 페이지 교체 알고리즘

Prologue 페이지 교체 알고리즘은 멀티프로그래밍 환경에서 다수 프로세스가 메모리 상에 공존할 때 프로세스의 페이지 폴트(Page Fault)를 최소화하기 위한 메커니즘입니다. 혹은 물리메모리보다

bibimnews.com

 

[운영체제] TLB(Translation Lookaside Buffer), 캐시사상기법 (직접사상, 연관사상), 페이지크기

TLB (Translation Lookaside Buffer) 1. TLB 의미와 구성 ✔ TLB 정의 : 가상 메모리 주소를 ...

blog.naver.com

 

복사했습니다!