CS/운영체제

[운영체제] 가상메모리

happy_life 2022. 7. 20. 15:12

이번 글에서는 가상메모리가 없는 경우와 있는 경우를 비교해 가상 메모리가 등장한 이유를 알아보고, 구체적으로 어떻게 동작을 하는지, 그리고 마지막으로 동작과 관련된 페이징 기법에 대해 설명한다.

 

목차

1. 가상메모리의 등장이유

2. 가상메모리의 동작 방식

3. 페이징 기법

 

가상 메모리의 등장 이유

1. 가상 메모리가 없는 경우

가상 메모리가 없는 경우

 

가상 메모리가 없고 현재 RAM은 1GB라고 가정해본다. 이런 경우, 1G를 넘어선 프로그램은 할당할 수 없게 된다. 그래서 등장하게 된 것이 가상 메모리 개념이다. 그렇다면 가상 메모리는 어떻게 이 문제를 해결할까?

 

2. 가상 메모리의 등장

가상 메모리

 

1) 메모리 공간 부족 문제 해결

가상 메모리를 활용하여 프로그램을 잘게 자르고, 물리 메모리에 매핑할 수 있다. 앞서 직면한 메모리 부족상황에 대해 다시 생각해보자. 현재 메모리에는 남은 공간이 없다. 따라서 이런 경우 물리 메모리에서 메모리를 하나 해제하고, 필요한 Program을 메모리에 올린다. 해제 원리는 아래의 포스팅을 참고하면 된다.

https://abcdefgh123123.tistory.com/440

 

 

 

2) 주소 공간의 hole 문제 해결

hole 문제 해결

 

만약 Program2가 메모리의 가운데에 할당되어 있다면, 위 아래의 공간 중 program3 보다 작은 공간이 없어 메모리에 할당할 수 없었을 것이다. 하지만 매핑을 통해 프로그램을 부분으로 나누어 메모리에 할당하여 문제를 해결할 수 있다. ( 디스크 모음 조각처럼 빈공간에 넣음)

 

 

 

가상 메모리의 동작 방식

매핑

 

Processor가 1024라는 VirtualAddress를 참조하면, Map되어있는 곳으로 가서 RAM을 참조해 Processor에 데이터를 반환해주게 된다. 만약 PhysicalAddress가 하드디스크라면 하드디스크에서 RAM으로 데이터를 옮기고, RAM에서 데이터를 참조해 Processor에 데이터를 반환하게 된다.

 

 

 

페이징 기법

위처럼 하나하나당 물리 메모리를 할당하면, 매핑을 하기위해 GB 수준의 용량의 translator가 필요하게 된다. 따라서 한 덩어리 단위로 용량을 줄인 Paging 기법이 나오게 되었다. 

 

페이징

 

기존에 하나씩 할당하는 것이 아니라, 덩어리 단위로 각각 매핑하게 된다. 

예를들어 가상 주소 4를 참조하려면 어떻게 해야할까? 상대주소인 offset이 4이기 때문에, 

0 : 4096

1 : 4097

2 : 4098

3 : 4099

4:  4100(4096 + 4)

 

4100을 참조하게 된다. 더 자세한 내용은 아래에 기재하였다.

 

https://abcdefgh123123.tistory.com/437

 

[운영체제] 페이징 기법

[운영체제] 페이징 기법 목차 1. Contiguous allocation 2. 페이징 기법 Contiguous allocation 페이징 기법 1. 개념 논리 메모리와 물리 메모리를 동일한 크기로 분할 해, 분할된 페이지 별로 메모리를 할당..

abcdefgh123123.tistory.com