가상 메모리

Lys·2023년 11월 8일
0

운영체제

목록 보기
18/23

가상 메모리

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

가상메모리를 사용하는 이유

  • 물리 메모리는 컴퓨터에 장착된 실제 메모리로서 최대 크기는 CPU에 의해 제한된다.
  • 가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 작은 프로세스를 동시에 실행시켜, 사용자나 응용프로그램에게 무한대의 메모리가 있다고 느끼도록 한다.
    가상 메모리 기법은 프로세스 전체가 메모리에 올라오지 않더라도 실행을 가능하게 하여 프로그램이 물리적 메모리보다 커져도 실행할 수 있다.
  • 가상메모리는 실제의 물리 메모리 개념과 사용자 관점의 논리 메모리를 분리한 것이다. 그래서 사용자가 메모리 크기에 관련한 문제를 염려하지 않아도 된다.
  • 운영체제는 가상 메모리 기법을 통해 프로그램의 논리적 주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크에 저장하게 된다.

논리 주소(가상 주소)와 물리 주소

  • 논리주소(가상 주소)
    • 가상주소라고도 하며, 프로그램/프로세스 내에서 사용하는 주소를 논리 주소라고한다.
    • 프로세스마다 독립적으로 할당 되며, 프로세스는 자신만의 가상 주소 공간을 가지고 있다고 생각한다.
    • 운영체제는 프로세스에게 연속된 가상 주소 공간을 제공하고, 이를 필요한 크기의 물리 메모리 페이지로 매핑 한다. 이 작업으로 메모리 공간의 낭비를 최소화 할 수 있다.

  • 물리 주소
    • 실제 메모리의 주소이며 하드웨어에서 직접 접근 가능한 주소이다.
    • 시스템 전체적으로 공유되는 주소이며, 여러 프로세스가 공유 메모리 영역을 사용할 때 사용된다.
    • 프로세스가 물리 주소로 접근하려면, 물리 주소를 가르키고 있는 가상 주소를 물리 주소로 변환해야 한다.

가상 메모리와 가상(논리) 주소 공간

  • 가상 메모리(Virtual Memory)와 가상(논리) 주소 공간(Virtual Address Space)은 다른 개념이다.
  • 가상 주소 공간은 각 프로세스 당 주어지는 논리적인 공간이다.
  • 가상 주소 공간의 크기는 물리 메모리(RAM)의 크기와는 독립적이며, 레지스터 크기에 종속적이다.
  • Word Size가 32비트인 컴퓨터의 경우 레지스터의 크기도 32비트다.
    이는 2^32 개의 주소를 나타낼 수 있음을 의미하고,
    1Byte당 주소가 주어지므로 최대 4GB의 가상 주소 공간을 가질 수 있다.


요구 페이징(demand paging)

  • 필요한 부분만 물리적 메모리에 page단위로 적재하는 방법으로, CPU가 해당 페이지를 요구할 때까지 그 페이지를 메모리에 올리지 않는 방식이다.
    (즉, 한번도 접근되지 않는 페이지는 물리 메모리에 전혀 적재되지 않는다.)
  • 가상 메모리를 만드는 방법은 대표적으로 두 가지(요구 페이징, 요구 세그먼트)가 존재하지만, 대부분 요구 페이징을 사용하므로 가상 메모리와 요구 페이징을 같은 용어로 사용하는 경우가 많다.
  • 당장 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고, 프로세스 전체를 메모링 적재하는 입출력 오버헤드도 감소하는 장점이 있다.
  • 요구 페이징 기법에서는 *유효/무효 비트(valid/invalid bit)를 두어 각 page가 메모리에 존재하는지 표시하게 된다.
    (유효/무효 비트 : 해당 비트가 유효하면 메모리에 있음을 의미하고, 무효하면 메모리에 없음을 의미한다.)

페이지 폴트(Page fault)

  • CPU가 무효비트로 표시된 page에 엑세스하는 상황을 page fault라고 한다.
  • 페이지 부재를 처리하는 과정
    • CPU가 특정 페이지를 접근하여 페이지 테이블에서 무효 상태인지 아닌지 확인한다.
    • 페이지가 무효 상태일 경우 *MMU에서 Page fault trap이 발생한다.
      (MMU : 가상 주소를 물리 메모리 주소로 변환해주는 하드웨어 장치)
    • 디스크에서 해당 페이지를 빈 프레임에 적재하고 페이지 테이블을 업데이트한다. (무효 -> 유효)
    • 트랩에 의해 중단되었던 명령을 다시 수행한다.


🙇‍ 참고 사이트 🙇‍

https://superohinsung.tistory.com/106
https://jerryjerryjerry.tistory.com/186
https://dding9code.tistory.com/100

0개의 댓글

관련 채용 정보