운영체제 & 시스템/운영체제

MMU(Memory Management Unit)란?

UNarD 2025. 5. 12. 15:34

🔍 MMU란? 👉 CPU와 메모리 사이의 똑똑한 관리자

운영체제를 공부하다 보면 어느 순간 꼭 마주치는 녀석이 하나 있습니다.
바로 MMU (Memory Management Unit) 인데요.
오늘은 이 MMU에 대해 공부해 보려합니다.😊

🧠 MMU는 어떤 역할을 하나요?

MMU는 CPU와 메모리(RAM) 사이에 위치해 있는 하드웨어 장치입니다.
마치 고속도로 톨게이트처럼, CPU가 메모리에 접근하기 전에 반드시 거쳐야 하는 관문이에요.

MMU의 핵심 역할은 다음과 같아요

기능 설명
🧭 주소 변환 CPU가 사용하는 가상 주소를 실제 RAM의 물리 주소로 변환합니다.
🛡️ 메모리 보호 각 프로세스가 서로의 메모리에 접근하지 못하게 차단합니다.
🧱 페이징 지원 메모리를 페이지 단위로 나누어 가상 메모리를 구현합니다.
🚀 캐시 제어 어떤 메모리 영역을 캐싱할지 제어합니다.
🔌 Memory-mapped I/O 지원 I/O 장치를 메모리처럼 접근할 수 있게 매핑합니다.

🛠️ MMU가 동작하는 방식

  1. 프로그램이 메모리를 접근할 때, CPU는 가상 주소를 생성합니다.
  2. 이 가상 주소는 MMU에게 전달됩니다.
  3. MMU는 페이지 테이블을 확인해서 실제 메모리(RAM)의 주소로 변환합니다.
  4. 변환된 물리 주소로 메모리에 접근하게 됩니다.

예를 들어, CPU는 0x7fff1234 주소에 접근하려고 하는데,
MMU가 이를 0x00abcd34로 변환해서 RAM에 전달하는 식입니다!

🔒 MMU는 프로세스를 안전하게 보호해요

운영체제에서는 여러 프로그램이 동시에 실행되죠?
그런데 서로의 메모리를 막 건드릴 수 있다면? 😱
한 프로그램의 오류로 전체 시스템이 뻗을 수도 있어요!

그래서 MMU는 각 프로세스가 자기만의 메모리 공간을 갖도록 도와줍니다.
이걸 프로세스 격리(Isolation)라고 해요.

🧩 MMU 없이도 프로그램이 돌아가나요?

물론 가능합니다!
하지만 가상 메모리, 프로세스 보호, 페이징, 멀티태스킹 같은
현대 운영체제의 필수 기능들이 불가능하거나 비효율적으로 작동합니다.

👉 그래서 윈도우, 리눅스, 안드로이드 같은 OS를 돌리는 시스템에는
거의 무조건 MMU가 포함되어 있어요.

MMU 덕분에 브라우저가 멈춰도 게임은 멀쩡하게 돌아가는 거랍니다 🎮


🧱 페이지 테이블(Page Table)이란?

MMU는 페이지 테이블이라는 자료구조를 사용해서 주소를 변환합니다.
가상 메모리를 4KB 같은 일정한 단위로 잘라서, 각 조각(페이지)이 실제 어디에 저장되어 있는지 기록해놓은 표예요.

예를 들어

가상 페이지 물리 프레임
0번 페이지 5번 프레임
1번 페이지 12번 프레임
2번 페이지 7번 프레임

이 표를 보고 MMU는 "아, CPU가 1번 페이지의 200번째 바이트에 접근했네.
그건 실제 메모리의 12번 프레임의 200번째 바이트군!" 하고 계산합니다 🧮

⚡ 그런데, 매번 페이지 테이블을 보면 느리지 않을까요?

맞습니다!
그래서 MMU 안에는 아주 빠른 캐시가 하나 더 들어 있습니다. 그 이름은...

💾 TLB (Translation Lookaside Buffer)

TLB는 최근에 변환한 주소들을 기억해두는 작은 고속 메모리입니다.

  • TLB Hit: TLB에 변환 정보가 있음 → 바로 접근 가능! 🔥
  • TLB Miss: TLB에 없어서 페이지 테이블을 다시 봐야 함 → 느림 😅

이 TLB 덕분에 주소 변환도 빨라지고, CPU와 메모리 사이가 원활해집니다 🚀


🎯 마무리 요약

개념 한 줄 요약
MMU CPU가 사용하는 가상 주소를 실제 물리 주소로 바꿔주는 하드웨어
주소 변환 프로그램이 RAM을 사용할 수 있게 하는 필수 과정
페이지 테이블 가상 → 물리 주소 변환 정보를 담은 지도
TLB 변환 정보를 빠르게 기억해두는 캐시

쉽게 생각하자!

MMU는 ‘보이지 않는 비서’처럼, CPU가 헷갈리지 않게 주소도 바꿔주고, 메모리도 지켜주는 든든한 조력자랍니다.
운영체제 속 진짜 슈퍼히어로예요! 🦸‍♂️