본문 바로가기
Lecture/OS

가상 메모리

by YUNZEE 2023. 11. 9.
728x90

컴퓨터마다 물리 메모리, 즉 실제 메모리의 크기가 다르다. 가상 메모리 virtual memory는 크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술이다.

 

가상 메모리 시스템

현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 프로세스가 올라갈 때 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원한다는 것이다. 이것을 가능하게 하는 메모리 시스템을 가상 메모리라고 부른다.

 

가상 메모리의 크기와 주소

이론적으로 가상 메모리의 크기는 무한대다. 그러나 실제로 가상 메모리의 최대 크기는 컴퓨터 시스템이 가진 물리 메모리의 최대 크기로 한정되며, CPU에 따라 결정된다. 그런데 가상 메모리는 어떻게 실제 사용할 수 있는 물리 메모리의 크기를 넘어서 무한대로 메모리를 사용하게 할까? 그 비밀은 스왑에 있다.

32bit CPU의 최대 메모리 크기는 4GB다. 이 시스템에서 각각 4GB 주소 공간을 차지하는 10개의 프로세스를 동시에 실행하려면 운영체제를 포함하여 적어도 40GB의 메모리가 필요하다. 이 경우 가상 메모리 시스템에서는 물리 메모리의 내용 중 일부를 하드디스크의 일부공간, 즉 스왑 영역으로 옮긴다.

 

가상 메모리의 크기

가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리 메모리(실제 메모리)와 스왑 영역을 합한 크기다.

 

페이징 기법에서 사용하는 매핑 테이블을 페이지 매핑 테이블 page mapping table 또는 페이지 테이블이라고 하며,  세그먼테이션 기법에서 사용하는 매핑 테이블을 세그먼테이션 매핑 테이블segmentation mapping table 또는 세그먼테이션 테이블이라고 한다.

지역성

운영체제와 관련하여 꼭 알아야 할 이론으로 지역성이 있다. 지역성은 기억장치에 접근하는 패턴이 메모리 전체에 고루 분포되는 것이 아니라 특정 영역에 집중되는 성질을 말한다. 

 

공간의 지역성: 집 바로 앞과 길 건너편에 편의점이 있다면 가까이 있는 편의점에 갈 확률이 더 높다. 공간의 지역성 spatial locality은 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높음을 의미한다.

 

시간의 지역성: 어제 구매한 음악 CD와 1년 전에 구매한 CD 중에서는 어제 구매한 CD를 들을 확률이 더 높다. 시간의 지역성 temporal locality은 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 먼 시간에 접근한 데이터보다 사용될 확률이 높음을 의미한다.

 

순차적 지역성: 일반적인 프로그래밍은 앞에서부터 순차적으로 진행된다. 순차적 지역성sequential locality은 작업이 순서대로 진행되는 것을 의미한다.

 

페이징 기법

고정 분할 방식으로 메모리를 분할하여 관리하는 페이징 기법에서 가상 주소를 물리 주소로 변환하는 방법과 매핑 테이블 관리 방법을 살펴보자

 

페이징 기법의 구현

물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해 프레임frame이라고 부른다. 프레임도 페이지와 마찬가지로 번호를 매겨 관리한다. 페이지와 프레임의 크기는 같다. 

페이징 기법의 구현

화살표는 가상 주소의 각 페이지가 물리 메모리의 어디에 위치하는지를 나타낸다. 크기가 같기 때문에 페이지는 어떤 프레임에도 배치될 수 있다.

그런데 페이지 테이블에는 숫자만 있는 것이 아니다. 그림에서 페이지 5는 물리 메모리에 없기 때문에 페이지 테이블에 invalid로 표시되어 있다. invalid는 해당 페이지가 스왑 영역에 있다는 의미다.

 

 

페이징 기법의 주소 변환

 

가상 주소를 물리 주소로 변환하는 과정을 살펴보자. 프로세스 30번의 내용을 읽으려고할 때의 주소 변환 과정은 다음과 같다.

1. 가상 주소 30번이 어느 페이지에 있는지 찾는다.

2. 30번은 페이지 3번의 0번 위치에 있는걸 확인할 수 있다.

3. 페이지 테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있다는 것을 알아낸다.

4. 최종적으로 물리 메모리 프레임 1의 0번 위치에 접근한다. 이 주소가 가상 주소 30번의 물리 주소다.

 

이번에는 프로세스가 가상 주소 18번에 어떤 값을 저장하려고 할 때의 주소 변환 과정을 살펴보자

1. 가상 주소 18번이 어느 페이지에 있는지 찾는다.18번 페이지 1의 8번 위치에 있다.

2. 페이지 테이블의 페이지 1로 가서 해당 페이지가 프레임 3에 있다는 것을 알아낸다.

3. 프로세스가 저장하려는 값을 프레임 3의 8번 위치에 저장한다.

 

페이징 기법의 주소 변환 과정

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

 

퀴즈

1.  물리 메모리의 크기와 프로세스가 올라갈 때 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원하는 것을 가능하게 하는 메모리 시스템은 무엇인가?

2. 가상 메모리는 어떻게 실제 사용할 수 있는 물리 메모리의 크기를 넘어서 무한대로 메모리를 사용하게 할까? 그 비밀은?

3. 페이징 기법에서 사용하는 매핑 테이블을 무엇이라 하는가?

4. 세그먼테이션 기법에서 사용하는 매핑 테이블을 무엇이라 하는가?

5. 물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해  무엇이라고 불리는가?

6. 현재 위치에서 가까운 데이터에 접근할 확률이 먼 거리에 있는 데이터에 접근할 확률보다 높음을 의미하는 것은?

7. 현재를 기준으로 가장 가까운 시간에 접근한 데이터가 먼 시간에 접근한 데이터보다 사용될 확률이 높음을 의미하는 것은?

8. 작업이 순서대로 진행되는 것을 의미하는 것은 무엇인가?

9.  invalid는 해당 페이지가 어디 영역에 있다는 의미인가?

10. 페이징 기법의 주소 변환 과정은?

728x90

'Lecture > OS' 카테고리의 다른 글

세그먼테이션 기법  (0) 2023.11.15
페이징 기법  (0) 2023.11.14
단일 프로그래밍 환경의 메모리 할당  (0) 2023.11.08
메모리 관리의 개요  (0) 2023.11.07
교착 상태 해결 방법  (0) 2023.11.06