티스토리 뷰

CS/운영체제

#33 가상메모리

RadderNepa 2023. 7. 6. 07:30

미리 말한다. 이 글을 읽어도 가상메모리가 정확히 무엇인지 정리가 안 될 것이다.

왜냐, 강의를 초 단위로 끊어서 계속 반복 시청해 정리한 나도 이해가 되지 않았기 때문이다.

다른 영상도 그러한 감이 있긴한데 특히 이번 강의 영상은 너무 두서없이 내용만 툭툭 던지는 식으로 진행되서 나름대로 순서를 정리한다고 정리해봤다.

그럼에도 이해를 완벽히 했다고 할 수는 없다.

 

● 도입

- PC마다 실제 메모리의 크기는 다르다.

- 만약 운영체제나 프로세스가 4GB 메모리에서 동작하도록 만들어졌다면 그 보다 작은 메모리를 가진 PC에서는 실행되지 않을 것이다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제


● 가상메모리 개요

2023.05.29 - [운영체제] - #27 메모리 - 메모리와 주소

 

#27 메모리 - 메모리와 주소

2023.02.12 - [운영체제] - #3 컴퓨터 하드웨어와 구조(feat 폰 노이만 구조) #3 컴퓨터 하드웨어와 구조(feat 폰 노이만 구조) ● 프로그램 내장방식 - 오늘도 나는 폰 공부를 한다. - 예전에는 ENIAC(애니

radderveloper.tistory.com

cf) 물리주소와 논리주소 / 절대주소와 상대주소 파트를 먼저 읽어보자


- 가상메모리는 이러한 문제를 해결했다.(부족한 물리 메모리를 가상 메모리를 이용해 해결했다.)

- 프로세스는 운영체제 영역이 어디에 있는지, 물리 메모리의 크기가 정확히 어느정도 인지 몰라도 된다.

- 즉, 프로그래머는 물리 메모리의 크기와 프로세스가 메모리의 어느 위치에 올라가는지 신경쓰지 않고 0x0 번지에서 시작한다고 생각하고 프로그래밍을 하면 된다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 프로세스는 메모리 관리자를 통해서 메모리에 접근한다.

- 메모리 관리자가 있기에 프로세스는 물리 메모리에 직접 접근할 일이 없고 메모리 관리자에게 요청만 하면 된다.

- 메모리 관리자는 프로세스의 요청이 있으면 그에 맞는 물리 메모리로 연결시켜준다.


● 가상메모리

- 가상 메모리의 크기는 이론적으로는 무한대이지만 실제로는 (물리 메모리의 크기와 CPU 비트 수)로 결정된다.

- 32bit CPU의 경우 표현할 수 있는 주소값은 2^32 제곱으로 대략 4GB 정도이다. 이때 가상 메모리의 크기도 똑같이 4GB이다.

- 32bit CPU에서는 가상 메모리의 최대 크기가 4GB라고 했는데 그렇다면 어떻게 OS를 포함해서 수 많은 프로세스들을 실행시킬 수 있는것일까?

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

 

ex) 가상 메모리의 최대 크기가 4GB인 상태에서 4GB를 차지하는 프로세스 5개와 운영체제를 실행시키려고 하는 상태

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 단순히 계산하면 OS를 제외하고도 적어도 20GB의 메모리가 필요하므로 4GB로는 한참 부족하다.

- 이때 가상메모리 시스템은 물리 메모리 내용의 일부를 하드 디스크(HDD)에 있는 스왑 영역으로 옮긴 후 처리가 필요할 때 물리 메모리로 가져와 실행시키기 때문에 프로세스 5개와 운영체제를 전부 실행시킬 수 있다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제


- 메모리 관리자는 물리 메모리를 어떻게 나눌지, 프로세스를 메모리의 어디에 배치할지, 부족한 물리 메모리는 어떻게 처리할지와 같은 문제를 처리해야 하기 때문에 복잡한 과정을 거친다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제
출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 메모리 관리자는 물리 메모리와 스왑영역을 합쳐 프로세스가 사용하는 가상주소를 물리주소로 변환하는데 이것을 동적주소변환(DAT, Dynamic Address Translation)이라고 부른다.

- 동적주소변환을 거치면 프로세스는 마음대로 사용자 데이터를 물리 메모리에 배치할 수 있다.


- 실제 물리주소 0x0 번지는 운영체제 영역이므로 프로세스가 사용할 수 없다.

- 따라서 가상 메모리 시스템에서는 운영체제 영역을 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당하는데 이때 할당 방식은 메모리 분할방식과 마찬가지로 (가변 분할 방식과 고정 분할 방식)으로 나뉜다.

- 가변 분할 방식을 이용한 세그멘테이션 → 외부 단편화와 같은 단점이 있다.
- 고정 분할 방식을 이용한 페이징 → 내부 단편화와 같은 단점이 있다.
- 그렇기에 2가지 방식의 단점을 보완한 (세그멘테이션-페이징 혼용 기법)을 사용한다.

 

- 가상메모리 시스템에서 가상주소는 메모리나 스왑영역 중 한 곳에 위치한다.

- 메모리 관리자는 가상주소와 물리주소를 일대일 매핑 테이블로 관리한다.(아래 그림 참고)

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 매핑 테이블에 따르면 프로세스 A는 물리 메모리의 세그먼트 0에 위치하고 프로세스 B는 물리 메모리의 세그먼트 1에 존재한다.

- 프로세스C는 HDD 내 스왑 영역에 저장돼있다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함