Virtual Memory에 대한 아키텍처 동작방법
🎓 미래의 컴퓨터 과학자 여러분, 환영합니다! 오늘 우리는 운영체제에서 가장 기본적이면서도 종종 신비롭게 느껴지는 개념 중 하나인 가상 메모리(Virtual Memory)의 베일을 벗겨볼 거예요.
컴퓨터의 RAM을 "작업 책상"이라고 생각해보세요. 현재 활발히 사용하는 것들을 올려두는 곳이죠. 그런데 책상이 너무 어질러지고, 거대한 프로젝트를 진행하거나 여러 작업을 동시에 해야 한다면 어떻게 될까요? 바로 이때 가상 메모리가 빛을 발합니다. 마치 초스마트 서류 캐비닛과 효율적인 개인 비서가 하나로 합쳐진 것처럼요! ✨
🎭 위대한 환상: 가상 메모리란 무엇인가?
대용량 영상 편집이나 복잡한 시뮬레이션처럼, 컴퓨터의 물리적 RAM 용량을 초과하는 메모리가 필요한 거대한 프로젝트가 있다고 상상해보세요. 가상 메모리가 없다면, 여러분은 꼼짝없이 막혀버릴 거예요. 가상 메모리는 프로그램에게 환상을 만들어줌으로써 이 문제를 해결합니다. 실제 설치된 RAM보다 훨씬 큰, 광대하고 연속적인 메모리 공간에 접근할 수 있다고 믿게 만드는 거죠.
이건 마법이 아니에요. 운영체제(OS)와 컴퓨터 하드웨어가 관리하는 영리한 기술입니다. 물리적 RAM과 더 느리지만 훨씬 용량이 큰 저장장치(SSD나 하드 드라이브)의 전용 공간을 매끄럽게 조합해요. 덕분에 RAM만으로는 불가능했을 더 많은 애플리케이션 동시 실행과 훨씬 대용량의 데이터셋 작업이 가능해집니다. 🚀
🧱 기본 구성 요소: 페이지와 프레임
이 환상이 어떻게 구축되는지 이해하려면, 메모리가 어떻게 관리되는지 생각해봐야 합니다.
⚙️ 프로세스: 데이터가 이동하는 방식
프로그램이 특정 가상 주소의 데이터에 접근해야 할 때, 일반적으로 다음과 같은 일이 일어납니다.
✅ 정상 경로 (Happy Path)
그런데 페이지가 RAM에 없으면 어떻게 될까요? 바로 여기서 흥미로운 일이 벌어집니다! 🤔
⚠️ 페이지 폴트! (Page Fault)
🚨 페이지 폴트: MMU가 페이지 테이블을 확인했는데 필요한 가상 페이지가 현재 RAM의 어떤 물리 프레임에도 로드되어 있지 않다면, 페이지 폴트를 트리거합니다. 서류 캐비닛을 뒤졌는데 특정 파일이 없는 것과 같아요. 예상한 위치에 파일이 없는 거죠!
• OS가 먼저 누락된 페이지를 찾습니다. RAM에 없으므로 디스크의 스왑 파일(또는 페이지 파일/스왑 공간)에 저장되어 있어야 해요.
• RAM이 가득 찼다면, OS는 공간을 만들어야 합니다. LRU(Least Recently Used) 같은 전략을 사용해 한동안 접근되지 않았고 지금은 "덜 중요하다"고 판단되는 RAM의 페이지를 선택해요.
• 선택된 페이지는 스왑 아웃됩니다. 내용이 RAM에서 디스크의 스왑 파일로 기록돼요.
• RAM의 프레임이 비면, OS는 필요한 페이지를 스왑 파일에서 해당 프레임으로 스왑 인합니다.
💡 요구 페이징 (Demand Paging): 이 전체 과정을 종종 요구 페이징이라고 부릅니다. 페이지는 실제로 필요할 때만, 요구에 따라 디스크에서 RAM으로 로드됩니다.
🎛️ 지휘자: MMU (Memory Management Unit)
MMU는 가상 메모리 관리에서 CPU의 필수적인 조력자입니다. CPU와 물리 메모리 사이에 위치한 하드웨어 컴포넌트예요. 단계별 역할을 살펴볼까요?
• TLB 히트: 있으면 MMU는 즉시 TLB에서 물리 주소를 가져와 메모리 컨트롤러로 전달합니다. 엄청 빨라요! ⚡
• TLB 미스: 변환이 TLB에 없으면 MMU는 다음 단계로 진행합니다.
• 유효한 항목: 페이지가 RAM에 있음을 나타내면 MMU가 물리 프레임 번호를 추출합니다.
• 유효하지 않은 항목 (페이지 폴트): 페이지가 RAM에 없음을 나타내면(또는 보호 위반이 있으면) MMU가 CPU에 페이지 폴트 인터럽트를 트리거합니다.
페이지 폴트가 발생하면(5단계, 유효하지 않은 항목), MMU의 역할은 OS에 신호를 보내는 것입니다. 그러면 OS가 디스크에서 페이지를 찾고, 필요하면 페이지를 스와핑하고, 페이지 테이블을 업데이트하는 복잡한 작업을 수행해요. OS가 상황을 해결하면, 본질적으로 MMU에게 "그 주소 변환을 다시 시도해봐"라고 말합니다. 이번에는 페이지 테이블이 업데이트되어 있고, MMU는 유효한 물리 주소를 찾게 됩니다. 🔄
💾 저장소: RAM이 가득 차면 데이터는 어디로?
중요한 점이 있어요. 가상 메모리는 그 자체로 데이터를 "저장"하지 않습니다. RAM과 디스크 사이의 데이터 저장을 관리하는 시스템이에요.
물리 RAM이 가득 차면, 프로그램의 가상 주소 공간에 속하는 비활성 데이터가 저장 드라이브(SSD 또는 HDD)의 특별한 영역에 기록됩니다. 이 영역은 흔히 다음과 같이 불려요:
이 스왑 공간은 RAM의 오버플로우 역할을 합니다. RAM보다 훨씬 느리기 때문에 과도하게 사용하면 컴퓨터가 상당히 느려질 수 있어요. 하지만 이것 없이는 오늘날의 많은 강력한 애플리케이션을 실행하거나 효과적으로 멀티태스킹을 할 수 없습니다. 🐢➡️🐇
⚖️ 장점과 단점
👍 장점
👎 단점
📌 결론
가상 메모리는 현대 운영체제의 근본적인 초석입니다. 컴퓨터가 물리적 하드웨어가 처음에 암시하는 것보다 훨씬 더 많은 일을 할 수 있게 해주는 뛰어난 엔지니어링의 산물이에요.
OS, MMU, 페이지 테이블, 디스크의 스왑 파일 간의 매끄러운 상호작용이 우리 모두가 오늘날 의존하는 풍부한 멀티태스킹 컴퓨팅 경험을 가능하게 합니다. 다음에 수십 개의 브라우저 탭과 무거운 애플리케이션을 동시에 열어둘 때 이것을 기억하세요. 가상 메모리가 뒤에서 열심히 일하고 있다는 것을요! 💪🖥️
댓글
댓글 쓰기