나를 기록하다
article thumbnail
반응형

가상 메모리의 개요

가상 메모리는 크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술

가상 메모리 시스템

  • 가상 메모리는 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술
  • 가상 메모리 시스템에서 모든 프로세스는 메모리의 어느 위치에 있는지 상관없이 0번부터 시작하는 연속된 메모리 공간을 가짐
논리 주소와 가상 주소
논리 주소의 크기는 물리 메모리의 주소 공간에 비례
가상 주소의 크기는 물리 메모리의 공간이 아닌 가상의 주소 공간을 가짐

가상 메모리 구성

  • 이론적으로 가상 메모리의 크기는 무한대이나 실제로 가상 메모리의 최대 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정되며 CPU의 비트에 따라 결정됨
  • 32bit CPU의 경우 약 4GB가 메모리의 최대 크기 → 가상 메모리의 최대 크기도 약 4GB
  • 가상 메모리는 어떻게 실제 사용할 수 있는 물리 메모리의 크기를 넘어서 무한대로 메모리를 사용하게 될까? → 스왑

32bit CPU에서 각각 4GB 주소 공간을 차지하는 10개의 프로세스를 동시에 실행하는 방법

  • 32bit CPU의 최대 메모리 크기는 4GB 각각 4GB 주소 공간을 차지하는 10개의 프로세스를 동시에 실행하려면 40GB의 메모리가 필요한데 가상 메모리 시스템에서는 어떤 작업이 이루어질까? 이 경우 가상 메모리 시스템에서는 물리 메모리 내용의 일부를 스왑 영역으로 옮기고 작업을 마치면 메모리로 가져오는 작업을 진행한다.
  • 가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리메모리와 스왑 영역을 합한 크기이다. 이 때 가상 주소를 실제 메모리의 물리 주소로 변환하는데 이를 동적 주소 변환(Dynamic Address Translation, DAT)이라고 한다.

가상 메모리와 물리 메모리의 차이점

 

매핑 테이블의 필요성과 역할

  • 가상 메모리 시스템에서 가상 주소는 실제로 물리 주소나 스왑 영역 중 한 곳에 위치
  • 메모리 관리자는 가상 주소와 물리 주소를 일대일로 매핑한 테이블로 관리
  • 가상 메모리 시스템에서는 운영체제를 제외한 나머지 메모리 영역에 일반 프로세스를 할당한다. 가상 메모리 시스템에서 가변 분할 방식을 이용한 메모리 관리 기법은 세그먼테이션, 고정 분할 방식을 이용한 메모리 관리 기법은 페이징이라고 한다.

가상 메모리와 매핑 테이블

 

페이징 기법

주소 변환 과정

고정 분할 방식을 이용한 가상 메모리 관리 기법으로 물리 주소 공간을 같은 크기로 나눠 사용한다.

페이징 기법의 주소 변환

  • 물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해 프레임(frame)이라고 부르며 페이지와 크기는 같다.
  • invalid는 해당 페이지가 스왑 영역에 있다는 의미
  1. 가상 주소 30번이 어느 페이지에 있는지 찾는다. (30번은 페이지 3의 0번 위치)
  2. 페이지 테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있다는 것을 알아냄
  3. 최종적으로 물리 메모리 프레임 1의 0번 위치에 접근(이 주소가 가상 주소 30번의 물리 주소)

 

정형화된 주소 변환

  • 가상 주소를 VA = <P, D>로 표현
  • VA는 가상 주소, P는 페이지, D는 페이지의 처음 위치에서 해당 주소까지의 거리를 의미
D를 오프셋(offset; 변위)이라고 정의하기도 함
페이징 기법의 주소 변환 과정
VA = <P, D> → PA = <F, D>
*PA는 물리 메모리의 주소를 가리키는 용어로 물리 주소 또는 실제 주소라고 함
*F는 프레임, D는 프레임의 처음 위치에서 해당 주소까지의 거리

 

 

페이지 테이블 엔트리(PTE: Page Table Entry)

페이지 테이블의 레코드 하나(한 행)을 PTE라고 부름.

페이지 테이블 엔트리 구성 요소

가상 주소를 <P, D>로 표현하는 공식
P = 나눗셈(가상 주소 / 한 페이지의 크기)의 몫
D = 나눗셈(가상 주소 / 한 페이지의 크기)의 나머지

 

페이지 테이블 관리

  • 시스템 내에는 여러 개의 프로세스가 존재하고, 각 프로세스는 하나의 페이지 테이블을 가지며, 페이지 테이블은 운영체제 영역에 존재
  • 페이지 테이블의 크기가 너무 커지면 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어듦
  • 페이지 테이블 전체를 메모리에서 관리하느냐, 일부를 스왑 영역에서 관리하느냐에 따라 가상 주소를 물리 주소로 변환하는 방법이 달라짐

테이블 매핑 방식

  1. 직접 매핑
  2. 연관 매핑
  3. 집합-연관 매핑
  4. 역 매핑

 

직접 매핑

페이지 테이블 전체가 운영체제 영역에 있는 경우 직접 매핑 진행

  • 별 다른 부가 작업 없이 바로 주소 변환 가능
  • 변환 속도 가장 빠름
  • 페이지 테입르의 시작 주소는 페이지 테이블 기준 레지스터(PTBR)가 가지고 있음

 

연관 매핑

페이지 테이블 전부를 스왑 영역에서 관리하는 경우 연관 매핑 진행

  • 일부 테이블만 무작위로 물리 메모리에 가져오는 방식
  • 원하는 프레임 번호가 있다면 페이지 테이블을 다 검색
  • 캐시 시스템과 매우 유사

 

집합 - 연관 매핑

연관 매핑의 문제를 개선한 방식으로 페이지 테이블을 하나 더 생성

  • 일정한 묶음으로 모아놓아 디렉터리 매핑이라고 부름
  • 전체 테이블은 스왑 영역에 존재
  • 일부 테이블은 묶음 단위로 메모리에 존재

 

역 매핑

앞 세 가지 매핑과 반대로 페이지 테이블을 구성하는 방식

  • 직접, 연관, 집합-연관 매핑에선 페이지 번호를 기준으로 테이블 생성
  • 역 매핑에서는 물리 메모리의 프레임 번호를 기준으로 테이블 생성
  • 실제 프레임 수와 행의 수가 같음

세그먼테이션 기법

  • 가변 분할 방식을 이용한 가상 메모리 관리 기법, 물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용
  • 세그먼테이션 기법에서도 물리 메모리가 부족할 때 스왑 영역 사용

세그먼테이션 기법의 주소 변환

가상 주소 VA = <S, D>

프로세스 A의 32번지에 접근할 때 주소 변환 과정

  1. VA = <0, 32>
  2. 시작 주소 120에 거리 32를 더하면 물리 주소 152
  3. 152가 세그먼트 크기보다 큰지 점검(크면 오류 출력, 크지 않다면 물리 주소 구함)
  4. 물리 주소 152번지에 접근하여 원하는 데이터를 읽거나 씀

세그먼테이션 - 페이징 혼용 기법

세그먼테이션 기법의 페이지 테이블 크기를 작게 유지하는 장점과 페이징의 수월한 메모리 고나리 기법인 물리 메모리를 같은 크기로 나누어 관리하는 장점을 합친 가상 메모리 관리 기법

세그먼테이션 - 페이징 혼용 기법

가상 주소 VA = <S, P, D>

가상 주소를 물리 주소로 변환하는 과정

  1. 가상 주소 VA = <S, P, D>를 구함
  2. 영역 검사, 권한 검사 진행. 범위 밖이면 오류 출력, 안이면 연결된 페이지 테이블로 이동
  3. 페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지 찾음
    → 프레임 존재 → 메모리 접근, 프레임 존재 X → 스왑 영역으로 가서 해당 페이지를 물리 메모리로 가져옴
  4. 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 씀
반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...