CPU 접근 메모리 범위
우리가 32-bit, 64-bit CPU라는 이야기를 많이 들어봤을 것이다.
여기서 말하는 32bit, 64bit란 CPU가 메모리에 접근할 수 있는 주소 범위를 의미한다.
32bit라고 하면 2^32 = 4 * 1024 * 1024 * 1024이므로, 4GB의 메모리를 접근할 수 있다.
64bit라고 하면 2^64 = 16 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024이므로 테라보다 더 큰 단위를 가지는 메모리에 접근할 수 있다.
즉, 64bit CPU는 IPv6처럼 우리가 죽을 때까지는 더 큰 bit를 접근할 수 있는 CPU가 나오지 않을 것이라고 생각한다.
가상 메모리

CPU가 가상 주소로 메모리에 접근을 시도하면 MMU(Memory Management Unit)가 가상주소를 물리주소로 변환해서 실제 RAM으로 매핑해주는 기법을 의미한다.
가상이므로 CPU는 RAM에 자신이 필요한 모든 페이지가 있다고 생각한다.
페이지란, 가상 메모리 블럭이다. 가상 메모리에서 사용하는 운영체제의 최소 단위이다.

하지만, RAM은 제한적이다. 그래서 페이지가 RAM에 있을 수 있지만, Disk에 존재하는 경우가 있을 수 있다. 이것을 페이지 폴트(Page Fault)라고 한다.
또한, RAM이 부족해질 경우, RAM에 있던 데이터의 일부를 SSD, HDD에 옮기고, 프로세스에 필요한 데이터를 RAM에 옮기는데 이것을 스와핑(swapping)이라고 한다.
그러면, MMU는 가상주소에서 물리주소를 어떻게 바꿀 수 있을까?
MMU 내에는 TLB(Translation Lookaside Buffer)가 있는데, 이 버퍼에는 페이지 테이블 정보가 담겨 있다. TLB에는 가장 최근에 변경된 페이지 테이블 정보가 담겨 있어, 이 정보를 참고해 가상주소를 물리주소로 변환한다.
[페이지 디렉토리 / 페이티 테이블 / 페이지 오프셋]과 같은 3가지 정보를 이용해 매핑한다.
우리가 페이지 단위가 4KB라면 선형적으로 찾는다면 2^20 즉 100만 연산이 수행되지만, 여러 개의 페이지를 찾아야하는 입장에서 매우 비효율적이다. 그래서 인덱싱과 같은 원리를 이용해 찾는다.
'CS > Operating System' 카테고리의 다른 글
| [Operating System] 페이지 교체 알고리즘 (0) | 2025.09.07 |
|---|---|
| [Operating System] CPU Scheduling (0) | 2025.09.04 |
| [Operating System] 교착상태(Dead Lock) (0) | 2025.09.03 |
| [Operating System] Synchronize(동기화) (0) | 2025.09.02 |
| [Operating System] Multi Process, Multi Thread (0) | 2025.09.01 |