TLB와 MMU를 이해하려면 기본적으로 가상메모리, 페이지테이블 개념에 대해서 알아야 한다.
이 부분을 먼저 복습하고, 알아보도록 하자. 😋
우리가 프로그램을 실행하면?
프로그램의 실행 파일은 드라이브에서 메모리로 로드된 뒤 CPU가 이를 실행하게 된다. 하지만 여기에는 중요한 문제가 있다.
메모리 용량의 한계
예를 들어, 어떤 프로그램이 16GB의 메모리를 사용한다고 가정해보자. 그러나 실제로 실행되는 여러 프로그램을 합치면 메모리 사용량이 30GB를 넘길 수도 있다. 물리적인 메모리 용량(예: 16GB)이 초과되면 메모리가 부족해질 수밖에 없다. 그렇다면, 이런 상황에서 프로그램 실행이 불가능 할까? 그렇지 않다. 운영체제는 가상메모리라는 기법을 통해 물리 메모리의 한계를 극복한다.
가상메모리
가상메모리는 프로그램 전체를 물리 메모리에 올리는 대신, 실제로 필요한 부분만 메모리에 로드하고 나머지는 디스크에 보관하는 방식이다. 이를 통해 물리 메모리 용량보다 큰 프로그램도 실행할 수 있게 된다.
예시: 프로그램은 드라이브에서 메모리에 올린 다음에 메모리에 있는 것을 CPU에 가져다가 쓰게 된다. 근데 문제가 생길 수 있다. 프로그램을 16GB를 사용한다고 해보자. 하지만 16기가 넘어가는건 금방이다. 30기가 사용한다고 쳐보자 프로그램의 용량을 다 합친다면.. 그럼 메모리가 터지게 되겠지? 근데 실행이 불가능하냐? 그건 아니다. 프로그램이 10GB이라고 해서 다 올라가는 게 아니라 일부분의 프로그램만 올리다보니 나머지를 디스크에 보관하는 방법이 가상메모리이다.
페이지와 페이지 테이블
가상메모리의 동작은 페이지와 페이지 테이블을 중심으로 이루어진다.
페이지란?
운영체제는 프로세스 (프로그램의 실행 단위)를 일정 크기의 블록(단위)으로 나눈다. 이 블록을 페이지라고 한다.
프로그램이 실행되는 동안 필요한 페이지만 메모리에 올리고, 나머지는 디스크에 남아있게 된다.
페이지 테이블이란?
프로그램이 실행되는 동안 CPU는 프로그램의 데이터를 가져오라고 하지만, 메모리의 실제 주소(물리 주소)를 알지 못한다.
여기서 페이지 테이블이 중요한 역할을 한다.
- 페이지 테이블은 가상 주소와 물리 주소를 매핑하여 CPU가 메모리의 실제 데이터를 찾을 수 있도록 도와준다.
- 가상 주소는 프로세스 내부에서 사용하는 주소이고, 물리 주소는 실제 메모리의 위치를 나타낸다.
동작 과정
- 프로그램 실행: 프로그램이 실행되면 필요한 데이터(페이지)가 메모리에 로드된다.
- 주소 변환: CPU는 가상 주소를 사용해 데이터를 요청하며, 페이지 테이블이 이를 물리 주소로 변환한다.
- 페이지 부재: 필요한 페이지가 메모리에 없으면, 운영테제가 디스크에서 해당 페이지를 가져온다.
이제까지 TLB, MMU를 위한 배경 지식을 복습해보았다. 이제 본격적으로 알아보자 ~
TLB
TLB는 CPU가 자주 사용하는 가상 주소와 물리 주소 간의 매핑 정보를 저장한 캐시이다.
페이지 테이블을 참조하지 않고도 빠르게 물리 주소를 얻을 수 있게 해준다. 따라서 메모리 접근 속도를 향상시키기 위해 사용하는 중요한 하드웨어 장치이다.
동작과정
1. 가상 주소 요청: CPU가 특정 데이터를 읽거나 쓰기 위해 가상 주소를 요청한다.
2. TLB 조회: TLB는 가상 주소와 물리 주소 매핑 정보가 저장된 캐시이므로, 우선적으로 TLB를 조회한다.
- TLB Hit: 요청된 가상 주소의 매핑 정보가 TLB에 존재하는 경우 -> 물리 주소를 즉시 반환하고 메모리에 접근한다.
- TLB Miss: 요청된 가상 주소의 매핑 정보가 TLB에 없는 경우
3. 페이지 테이블 조회
- TLB Miss 발생시, 운영체제는 페이지 테이블을 조회하여 해당 가상 주소의 매핑 정보를 찾는다.
- 페이지 테이블에 매핑 정보가 있는 경우: 물리 주소를 얻고 TLB를 업데이트 하여 캐시에 추가한다.
- 페이지 테이블에 매핑 정보가 없는 경우: 이는 해당 데이터가 메모리에 없는 다는 것을 의미하여, 디스크에서 데이터를 가져온다 -> 디스크에서 데이터를 메모리로 로드한 뒤, 페이지 테이블과 TLB를 업데이트한다.
따라서, TLB는 페이지 테이블의 하위 캐시 역할이며, 자주 참조되는 매핑 정보를 빠르게 반환한다.
MMU
MMU는 Memory Management Unit으로 CPU와 메모리 사이에서 가상 주소를 물리 주소로 변환하는 하드웨어이다.
가상 메모리에서 CPU가 메모리 주소를 효과적으로 관리할 수 있도록 지원한다. 따라서 TLB도 역시 MMU의 일부로 MMU 내부에 포함된 캐시이다.
주요 역할
1. 주소 변환: CPU가 사용하는 가상 주소를 실제 메모리의 물리 주소를 변환한다.
2. 메모리 보호: 프로세스 간 메모리 침범을 방지한다.
3. 캐싱 제어
4. page replacement 관리
'전공 > 운영체제' 카테고리의 다른 글
[OS] 메모리 계층 구조와 가상메모리 (0) | 2024.08.14 |
---|