읽은 책 정리/쉽게 배우는 운영체제

[정리] 08 가상 메모리 기초

포포015 2022. 10. 10. 22:21

목차

  • 1. 가상 메모리의 개요
  • 2. 페이징 기법
  • 3. 세그먼테이션 기법
  • 4. 세그먼테이션-페이징 혼용 기법
  • 5. 캐시 매핑 기법

 

1. 가상 메모리의 개요

- 가상메모리는 물리메모리(실제 메모리)의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술.

( 가상메모리의 크기 : 전체 크기는 물리메모리와 스왑 영역을 합한 크기 )

 

1.1 가상주소와 논리주소의 차이

  • 논리주소 : 물리 메모리의 주소 공간
  • 가상주소 : 물리 메모리의 공간이 아닌 가상의 주소 공간을 가진다.

* 동적 주소 변환 : 메모리 관리자가 물리메모리와 스왑영역을 합쳐서,
                           프로세스가 사용하는 가상 주소를 실제 메모리의 물리주소로 변환하는 작업

 

1.2 매핑 테이블

- 메모리를 관리 할때 매핑 테이블을 작성하여 관리한다.

- 가상 메모리 시스템에서 가상주소는 실제로 물리주소나 스왑 영역중 한곳에 위치하며,
   메모리 관리자가 가상주소와 물리주소를 일대일 매핑 주소로 관리한다.

 

 

2. 페이징 기법

- 고정 분할 방식으로 메모리를 분할하여 관리하는 기법

 

2.1 페이징 기법에서의 용어 및 개념

  • 프레임 - 물리 메모리의 영역
  • 페이지 - 가상주소 영역

- 페이지와 프레임의 크기가 같기 때문에, 페이지는 어떤 프레임도 배치 될수 있다.

- 매핑테이블에선 숫자만 있는게 아니라, invalid 이라고 표현되어 있는부분은 스왑 영역에 해당하는 부분이다.

 

* 페이지 엔트리 : 페이지 테이블은 페이지번호, 프레임 번호로 구성되며 각각 한줄은 '페이지 엔트리'라고 부른다.

                          (페이지 테이블 엔트리는 프레임 번호만 가진다. 테이블 페이지는 번호가 0 번 부터 순서대로 정리되어 있기 때문에,

                          (굳이 페이지 번호를 표시할 필요가 없다 )

 

2.2 페이지 테이블 관리

- 시스템에는 여러개의 프로세스가 존재하고, 프로세스마다 페이지 테이블이 존재한다.

( 여러개의 프로세스마다 페이지 테이블이 존재하기에, 테이블의 크기가 작지 않다. )

- 특정 프로세스가 실행 될 때 마다 해당 페이지 테이블을 참조하여 가상 주소를 물리주소로 변환 하는 작업을 반복하기에 

 필요시 빨리 접근 할수 있어야 한다. 

 ( 물리 메모리의 영역중 운영체제에 일부분 모아놓고, '페이지 테이블 기준 레지스터' 를 사용한다. )

 ( '페이지 테이블 기준 레지스터' 는 물리 메모리 내에 페이지 테이블의 시작주소를 가지고 있다. )

 

2.3 페이지 테이블 매핑 방식

- 페이지 테이블 전체를 메모리에서 관리하는지, 일부를 스왑 영역에서 관리하는지에 따라 가상주소를 
  물리주소로 변환하는 방법이 달라진다. 이로 인해 크게 4가지의 매핑 방식이 존재.

 

  1. 직접매핑 - 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식
                     ( 부가 작업 없이 바로 주소 변환 가능)

  2. 연관매핑 - 페이지 테이블 전체를 스왑 영역에서 관리 하는 방식 
                     ( 물리메모리의 여유공간이 작을때 사용하는 방식 )
                     ( 모든 페이지 테이블을 저장장치의 스왑영역에 저장하고, 그 중 일부만 물리메모리에 가지고 있음 )
                     ( 연관 매핑은 물리메모리 내의  페이지 테이블을 전부 검색해야하고, 이렇게 찾아도 없을경우 스왑 영역까지 찾아야 하기                     ( 에 소요 시간이 많이 걸릴수 있다 )

  3. 집합-연관매핑 - 연관 매핑과 동일한 방식이나, 연관 매핑의 문제를 개선한 방식
                            ( 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리메모리에 가져온다. 
                            ( 페이지 테이블을 관리하는 페이지 테이블을 하나더 생성해서 관리한다)

  4. 역매핑 - 위의 세가지 방식은 페이지 번호를 기준으로 테이블을 구성하지만,
                  역매핑에선 물리메모리의 프레임 번호를 기준으로 테이블을 구성한다.
                ( 가장 큰 특징은 프로세스의 수와 상관없이 페이지 테이블이 단 한개이다. 물리메모리를 기준으로 프레임 테이블을 만든다. )
                ( 역매핑은 페이지 테이블을 다 검사한 후에야 저장장치에 접근하기 때문에, 검색시간을 낭비한다는 단점이 존재한다. ) 

 

3. 세그먼테이션 기법

- 가변 분할 방식을 이용한 가상 메모리 관리 기법 ( 물리메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용 )

 

 

3.1 세그먼테이션 기법의 특징

- 세그먼테이션 기법에선 페이징기법과 다르게 각 프로세스의 크기에 따라 메모리를 분할하기 때문에, 매핑 테이블에 크기 정보를 포함한다.

( 자신에게 주어진 메모리 영역 - Limit을 위해 )

장점: 메모리를 프로세스 단위로 관리하기 때문에, 페이지 테이블이 작고 단순하다.

단점: 물리 메모리의 외부 단편화로 인해 물리 메모리 관리가 복잡하다.

 

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

- 페이징 기법의 장점인 물리 메모리를 같은 크기로 나누어 관리하기에 관리하기가 수월한 장점과 세그먼테이션 기법의 

 페이지기법의 테이블 크기가 큰 단점을 혼용해 사용하는 기법.

 

4.1 메모리 접근 권한

- 페이지마다 접근 권한이 다르기 때문에, 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트가 추가된다.

  ( 메모리를 낭비하는 요소 )

- 메모리 접근 권한 검사는 가상주소에서 물리주소로 주소 변환이 일어 날때 마다 시행 된다.

 ( 읽기 / 쓰기 / 실행 / 추가 ) - 메모리 영역에 권한이 없는 행동을 하려고하면, 메모리 오류인 트랩이 발생한다.

 

4.2 페이징 테이블과 세그먼테이션 테이블의 혼합

- 페이징 기법에 세그먼테이션 테이블을 추가하고, 권한비트와 같이 중복되는 데이터를
세그먼테이션 테이블로 옮겨서 테이블의 크기를 줄인다.