Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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 31
Tags
more
Archives
Today
Total
관리 메뉴

꾸준히

Virtual Memory 본문

Device Driver

Virtual Memory

S210530 2023. 7. 16. 16:49

리눅스 가상 메모리의 개념과 가상메모리가 물리 메모리로 변환되는 과정을 설명하는 글입니다.

 

리눅스 가상 메모리

 

목차

 

1. 가상 메모리란

2. 페이징 기법과 주소 변환의 이해

3. 가상 메모리가 물리 메모리로 변환 되는 과정

 

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.

 

가상 메모리란

가상 메모리란 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기의 한계가 있어, 디스크(ROM)의 일부를 확장된 RAM처럼 사용하기 위한 개념이다.

위 말의 의미는 프로세스의 가상 메모리 공간에 있는 페이지들 가운데, 현재 수행에 필요한 부분만 물리 메모리에 적재하여 사용한다는 의미이다. (물리 메모리가 부족해지면 일정 부분의 페이지들을 다시 하드디스크로 이동 시킨다)

 

가상 메모리 구조

 

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

가상 주소를 사용하는 프로세스를 적절히 물리 메모리에 배치할 수 있어야 하며, 물리 주소도 알 수 있는 방법(주소 변환)이 필요 하다.

페이지가 적재된 페이지 프레임의 위치를 알 수 있는 방법으로 페이지 테이블을 사용한다.
여기서 페이지 테이블이란 프로세스의 페이지가 적재된 페이지 프레임의 정보를 저장하고 있는 테이블이다

가상 메모리의 분할된 영역은 페이지라고 하며, 첫 번째 영역을 페이지 0으로 번호를 매겨 아래로 순차적으로 번호를 매긴다. 페이지 프레임은 물리 메모리를 일정한 고정 크기로 분할한 단위이다.

페이징이란 프로그램을 페이지라는 작은 단위로 나누고, 물리 메모리를 페이지와 동일한 크기인 페이지 프레임으로 나누는 메모리 관리 기법을 말한다.

 

페이지, 프레임, 페이지 테이블

 

가상 메모리가 물리 메모리로 변환 되는 과정

 

CPU에서 가상 메모리에 접근하고자 할 때, MMU에서는 이 가상 주소를 물리 주소로 변환 시켜 주는 역할을 한다.
MMU에서는 먼저 TLB(Translation Lookaside Buffer)라는 고속 보조장치를 참조한다. TBL는 페이지 테이블에서 자주 호출되는 주소를 가지고 있다.

 

만약 TLB에 원하는 물리 주소가 있다면, 페이지 테이블(물리 메모리)에 접근하지 않고, 바로 물리 주소에 접근 한다.
TLB가 원하는 물리 주소가 없다면, 페이지 테이블을 참고하여 물리주소에 접근한다.

페이지 테이블을 참조할 때, 실제로 원하는 페이지가 없을 수 있다.
이 때, kernel에서 page fault interrupt 가 발생하고 disk에 원하는 페이지를 ram에 load한다.
그리고 이 페이지는 페이지 테이블에 update되어 페이지 테이블을 참조할 때는 page fault interrupt가 발생하지 않는다.