[컴퓨터구조] 가상 메모리

Tkdyun·2024년 3월 8일

컴퓨터구조

목록 보기
2/2

가상 메모리

등장 배경

  • 메인 메모리(RAM) 의 가격이 비싼 시절, 상대적으로 가격이 저렴한 보조 기억 장치(디스크) 를 이용해 부족한 메인 메모리처럼 사용하기 위해 고안
    • 디스크 스왑 : 메인메모리의 일부분을 디스크에 저장해두고 데이터를 읽고 쓸 때에만 디스크에서 불러와 메인메모리에 적재하는 기술
  • 보조기억장치로 SSD 가 아닌 HDD 를 사용하던 시절에는 메인메모리와의 속도 차이로 병목 현상 이 심했지만, 현대의 보조 메모리 기술이 비약적으로 발전해 많은 시스템에서 스와핑을 이용하고 있다.

가상 메모리

  • 처음 컴퓨터를 설계할때는 한 프로그램이 메모리 전체를 사용한다는 전제가 있었으나, 멀티태스킹이 도입되면서 동시에 여러 프로그램이 실행될 때, 메모리의 배분 에 대한 문제 발생
    • 프로그램을 실행하고 데이터를 read/write 하면, 실행파일을 읽고 특정 위치에 특정 데이터를 저장한다.
      근데, 똑같은 프로그램을 하나 더 실행하게 되면 특정 위치에 저장한 특정 데이터가 충돌해 오작동하게 된다.
      -> 한 프로그램이 한 메모리를 사용하는 것처럼 동작할 수 있도록 사용되는게 가상메모리이다.

  • 가상 메모리와 실제 메모리는 page 단위로 이루어져 있고, 프로세서는 가상주소를 만들어내며 소프트웨어/하드웨어는 가상주소를 토대로 실제 주소를 계산해낸다.
    -> Mapping 과정에서 (가상주소/실제주소) 외에도 보조메모리(디스크)로 매핑되기도 한다.
  • 페이지의 크기 는 하드웨어에 의해 결정되며, 운영체제는 페이지를 페이지 테이블에 넣어 관리하고, 각각의 프로세스들은 각자만의 페이지 테이블을 가진다.
  • 운영체제는 사용하지 않는 페이지를 디스크의 페이징 파일 로 옮겨두는데, 페이지의 유효비트를 통해 페이지가 물리 메모리 공간에 유효하게 매핑이 작동하는지 확인할 수 있고, 유효하지 않을 경우 Page Fault
  • Page Fault 발생 시, 운영체제는 CPU 의 동작을 멈추고, 페이징 파일에서 페이지를 가져와 물리 메모리의 빈 공간에 적재하고 CPU 동작 재개

가상 메모리 / 물리 메모리 매핑 과정

가상 주소 = 가상 페이지 번호 + 페이지 변위
가상 페이지 번호 = 가상 메모리 주소 + 페이지당 byte 수

  • page offset 은 페이지의 크기를 결정하며, 매핑 이후에도 값이 변하지 않는다.
    -> 위 예시에서는 page offset 이 12비트임으로 페이지 하나 당 2^12 의 크기
  • 페이지당 크기는 하드웨어에서 결정
profile
"Hello World"

0개의 댓글