[TIL] 가상메모리가 뭐죠~?

woonie·2022년 4월 9일
0

TIL

목록 보기
63/64
post-thumbnail
post-custom-banner

메모리란?

  • 메모리란 프로그램과 프로그램 수행에 필요한 데이터 및 코드를 저장하는 장치
  • 메모리는 크게 내부 기억장치인 주기억장치와 외부 기억장치인 보조 기억장치로 분류

가상메모리(Virtual Memory)

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

위와 같은 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다.

가상 메모리 기법은 애플리케이션을 실행하는 데 얼마나 많은 메모리가 필요한지에 집중하지 않고, 대신 애플리케이션을 실행하는 데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 문제를 해결하고자 했다.

메모리 접근은 순차적이고 지역화되어 있기 때문에 가능하다.
그렇다면 이렇게 애플리케이션의 일부분만 메모리(기억장치)에 올려진다면, 메모리에 올라가지 않는 나머지는 어디에 위치해야 할까?
보조 기억장치, 디스크 에 적재한다.

가상 메모리의 핵심은 보조 기억장치다.

  • 애플리케이션이 실행될 때, 실행에 필요한 일부분만 메모리에 올라가며 애플리케이션의 나머지는 디스크에 남게 된다. 디스크가 RAM의 보조 기억장치(backing store)처럼 작동하는 것이다.
    • 결국 빠르고 작은 기억장치(RAM)을 크고 느린 기억장치(디스크)와 병합하여, 하나의 크고 빠른 기억장치(가상 메모리)처럼 동작하게 한다.

요구페이징(Demand Paging)

페이징 기법: 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치(보조 기억 장치)로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.

  • CPU가 해당 페이지를 요구할 때까지 그 페이지를 메모리에 올리지 않는 방식
    (즉, 한번도 접근되지 않는 페이지는 물리 메모리에 전혀 적재되지 않는다)

  • 페이지 부재(page fault)가 발생하면 그 때 트랩을 걸어 해당 페이지를 적재

[페이지 부재를 처리하는 과정]

1) 특정 페이지를 실행하기 위해 페이지 테이블을 참조하여 메모리가 올라와있는지 여부를 확인 (valid-invalid bit 확인)

2) 페이지가 메모리에 올라와 있지 않은 경우 (page fault, invalid인 경우) MMU가 인터럽트를 발생

  • MMU(Memory Management Unit): CPU가 메모리에 접근하는 것을 관리하는 컴퓨터 하드웨어 부품으로 가상 메모리와 실제 메모리 사이에서 주소 변환 역할을 한다. (논리 메모리 주소 → 물리 메모리 주소로 변환)

3, 4) 운영체제는 해당 프로세스를 wait 상태로 만들고 요구된 페이지를 하드디스크에서 찾아 메모리의 자유프레임(free frame)(빈공간)에 적재

5) 페이지 테이블 갱신 (i → v)

6) 트랩에 의해 중단되었던 명령을 다시 수행: wait상태인 해당 프로세스를 다시 ready → running 하여 작업 재진행

가상 메모리를 만드는 방법은 대표적으로 두 가지(요구 페이징, 요구 세그먼트)가 존재하지만, 대부분 요구 페이징을 사용하므로 가상 메모리와 요구 페이징을 같은 용어로 사용하는 경우가 많다.

프로그램 부분 적재의 이점

  • 프로그램의 크기가 물리적인 용량에 무관
  • 더 많은 프로그램이 메모리를 공유하여 CPU 사용률과 처리율(Throughput)을 향상
  • 주소 결속을 실행 시간에 할 수 있다.
  • 페이지 부재율(page-fault rate)을 낮추어 성능을 높인다.
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.
post-custom-banner

0개의 댓글