본문 바로가기
OS/쉽게 배우는 운영체제

가상 메모리의 기초 (1)

by re-hwi 2022. 3. 17.

가상 메모리의 핵심은 '메모리에 하나의 프로세스가 다 올라오지 않아도 실행할 수 있다' 는 것이다. 

 

먼저 프로그램은 HDD와 같은 저장장치에 저장되어 실행하기 위해 RAM과 같은 메모리에 올라온다.

 

이것이 프로세스를 실행하기 위한 방법인데 RAM의 크기가 프로세스의 크기보다 작다면 실행할 수 없을까? 그러면 우리는 RAM의 용량에따라 실행할 수 있는 파일이 한정될까?

 

답은 아니다. 이러한 문제를 해결하기 위한 개념이 바로 가상메모리이다. 가상메모리는 프로그램이 저장되어있는 HDD에서 RAM으로 프로세스의 일부분만 가져온다. 

 

RAM은 이전에 배웠던 메모리 오버레이를 이용하여 일부분의 프로세스만 가지고 프로세스를 실행할 수 있다. 이렇게 일부를 하드디스크에 남기고 필요한 부분만 사용한다면 여러개의 프로세스를 실행해도 메모리의 용량이 충분할 것이다.


1. 가상 메모리의 개요

 

1-1 가상 메모리 시스템

 

1) 가상 메모리

  • 물리 메모리의 크기와 상관없이 무한의 메모리 공간을 가짐 ( 실제로는 물리메모리 + 스왑영역)
  • 가상 메모리의 주소는 메모리의 어느 위치에 있던 0번지부터 시작하는 연속된 메모리 공간을 가짐
  • 물리 메모리의 주소가 아닌 가상의 메모리에 주소를 가짐
  • 가상 주소를 물리 주소로 변환할 수 있음

- 세그먼테이션 : 물리 메모리에서의 가변 분할 방식

- 페이징 : 물리 메모리에서의 고정 분할

 

2. 페이징 기법

 

2-1 페이징 기법의 구현

 

페이징 기법 : 고정 분할 방식을 이용한 가상 메모리 관리 기법

페이지 : 가상주소의 분할된 영역

프레임 : 물리주소의 분할된 영역 

※ 물리메모리와 가상메모리의 나눈 영역의 크기는 같다

2-2 페이징 기법의 주소 변환

 

1) 주소 변환 과정

1. 가상주소의 페이지 위치를 찾는다 ex) 가상주소 30번지는 페이지 3의 0번째

2. 페이지 테이블을 이용해 해당 페이지가 몇 번 프레임에 있는지 확인한다 ex) 페이지 3은 프레임 1이다

3. 해당 프레임을 찾았으면 처음 몇 번째 위치와 같은 곳을 찾는다 ex) 페이지 3의 0번째에서 0번째에 해당

 

2) 정형화된 주소 변환

 

VA=<P,D> → PA=<F,D>

가상주소 = <페이지,거리>

실제주소 = <프레임,거리>

 

2-3 페이지 테이블 관리

 

→ 여러개의 프로세스가 물리 메모리에 올라와 실행되고 있기 때문에 관리자는 페이지 테이블을 이용해 프로세스의 가상주소를 물리주소로 계속 변환해 주어야 함

 

빠른 접근을 위해 페이지 테이블은 물리메모리의 운영체제 영역에 속함

 

하나의 프로세스는 하나의 페이지 테이블을 가짐

 

페이지 테이블의 크기도 작지 않기 때문에 스왑영역으로 옮겨지기도 함

 

페이지 테이블의 시작 주소를 페이지 테이블 기준 레지스터에 보관

 

페이지 테이블의 구성

- 페이지 번호

- 프레임 번호

- 페이지 테이블 엔트리 

 

2-4 페이지 테이블 매핑 방식

 

  • 직접매핑 : 페이지 전체가 물리 메모리에 존재 

→ 물리 메모리의 용량이 충분할 때 사용 / 주소 변환이 빠름

 

  • 연관매핑 : 페이지 전체를 스왑영역에 존재

→ 물리 메모리의 공간이 부족할 때 스왑영역에 보관하고 무작위로 테이블을 가져와 물리 메모리로 보관

→ TLB 히트 : 무작위로 가져온 테이블이 사용됬을 때

→ TLB 미스 : 무작위로 가져온 테이블에 필요한 테이블이 없을 때

 

  • 집합-연관매핑 : 페이지 전체를 스왑영역에 보관하나 연속적인 테이블을 물리 메모리에 가져옴

→ 연관매핑의 단점을 보완한 매핑방법 

→ VA = <P1,D> 가 아닌 VA = <P1,P2,D> 로 주소를 세분화

 

  • 역매핑

→ 물리 메모리의 프레임 번호를 기준으로 테이블을 구성

→ 테이블이 하나만 존재하기 때문에 매우 가벼움

→ 테이블이 <프레임번호, 프로세스 아이디, 페이지 번호> 로 구성

→ 페이지를 다 검색한 후에 저장장치에 접근하기 때문에 시간 낭비

반응형

'OS > 쉽게 배우는 운영체제' 카테고리의 다른 글

가상 메모리 관리 (1)  (0) 2022.03.23
가상 메모리의 기초(2)  (0) 2022.03.21
메모리 관리 (2)  (0) 2022.03.11
메모리 관리 (1)  (0) 2022.03.10
교착 상태  (2) 2022.03.08

댓글