✏️ [OS] 가상 메모리란?

박상민·2024년 3월 1일
0

CS Interview

목록 보기
9/16
post-thumbnail

📌 들어가기 전

*메모리(memory)란?

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

📌 가상 메모리 등장 배경

초창기 컴퓨터에서는 사용 가능한 RAM의 용량이 가장 큰 실행 어플리케이션의 주소 공간보다 커야 했다. 그렇지 않을 경우 "메모리 부족" 오류에 의해 해당 애플리케이션을 실행할 수 없었다.

이후 오버레이 기법을 사용했지만 결국 똑같은 메모리 부족 오류가 발생했고, 여기서 더 발전시킨 방법이 가상 메모리 기법이다.

📌 가상 메모리 기법

  • 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지에 집중하지 않는다.
  • 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 문제를 해결하고자 한다.
    • 이런 접근 방식이 가능한 이유는 메모리 접근은 순차적이고 지역화되어 있기 때문
    • 애플리케이션의 일부분만 메모리(기억장치)에 올려진다면, 메모리에 올라가지 않는 나머지는 어디에 위치해야 할까?
      • 정답은 보조 기억 장치, 즉 디스크이다.
    • 가상 메모리의 핵심은 보조 기억 장치이다.

⭐️ 가상 메모리란?

가상 메모리는 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고려되었다.

  • 애플리케이션이 실행될 때, 실행에 필요한 일부분만 메모리에 올라가며 애플리케이션의 나머지는 디스크에 남게 된다. 즉, 디스크가 RAM의 보조 기억 장치(Backing store)처럼 작동한다.

    • 결국 빠르고 작은 기억장치(RAM)를 크고 느린 기억장치(디스크)와 병합하여, 하나의 크고 빠른 기억장치(가상 메모리)처럼 동작하게 하는 것이다.
  • 가상 메모리를 구현하기 위해서는 컴퓨터가 특수 메모리 관리 하드웨어를 갖추고 있어야 한다.

    • 그것이 바로 MMU(Memory Management Unit)이다.
  • MMU는 가상주소를 물리주소로 변환하고, 메모리를 보호하는 기능을 수행한다.

  • MMU를 사용하게 되면, CPU가 각 메모리에 접근하기 이전에 메모리 주소 번역 작업이 수행된다.

  • 그러나 메모리를 모두 가상 주소에서 물리적 주소로 번역하게 되면 작업 부하가 너무 높아지므로, MMU는 RAM을 여러 부분(페이지)로 나누어 각 페이지를 하나의 독립된 항목으로 처리한다.

  • 페이지 및 주소 번역 정보를 기억하는 작업이 가상 메모리를 구현하는 데 있어 결정적인 절차이다.

결론
가상 메모리란 메모리에 로드된, 실행중인 프로세스가 메모리가 아닌 가상의 공간을 창조해 마치 커다란 물리 메모리를 갖는 것처럼 사용할 수 있게 해주는 기법이다.


출처
Tech Interview for developer
혼자 공부하는 컴퓨터 구조 + 운영체제

profile
스프링 백엔드를 공부중인 대학생입니다!

0개의 댓글