Study/Memory, SSD, RAM

페이지와 페이징 (Paging & TLB), Thrashing

로버트 E.O. 스피드왜건 2026. 1. 19. 16:03

1. 페이지

현대 대부분의 OS(윈도우, 리눅스)는 메모리를 4KB(4096바이트) 크기의 블록으로 잘라서 관리합니다. 이 조각 하나를 '페이지(Page)'라고 부릅니다.

  • 왜 1바이트가 아님? 너무 작아서 관리 장부(Page Table)가 너무 두꺼워짐.
  • 왜 100MB가 아님? 너무 커서 10KB만 필요한 메모장 프로그램도 100MB를 차지해버림(낭비).
  • 결론: 4KB가 관리하기도 적당하고 낭비도 적은 '황금 밸런스'입니다. (물론 대용량 서버를 위해 2MB, 1GB짜리 'Huge Page'도 있긴 합니다.)

2. 페이지 테이블 (Page Table): 거대한 지도책

OS는 "가상 주소 몇 페이지가 물리 주소 몇 페이지에 있는지" 적어둔 거대한 장부를 메모리(RAM)에 보관합니다. 이것이 페이지 테이블입니다.

  • 문제 발생: 요즘 컴퓨터 램이 16GB, 32GB죠? 페이지가 수백만 개가 넘습니다. 이 테이블 크기만 해도 수십~수백 MB를 차지합니다.
  • 더 큰 문제: 프로그램(프로세스)마다 이 테이블이 각각 따로 필요합니다. (크롬용 장부, 카톡용 장부 따로...)

3. TLB (Translation Lookaside Buffer): "족보"

복습! CPU는 RAM에 가는 걸 싫어한다고 했죠? (5분 걸림). 그런데 주소 변환을 하려면 페이지 테이블을 보러 RAM에 갔다 와야 합니다. 그리고 데이터를 가지러 또 RAM에 가야 합니다. 즉, 메모리를 두 번 찍어야 데이터 하나를 읽을 수 있습니다. 속도가 반토막 납니다.

그래서 CPU 안에 TLB라는 특수 캐시를 넣었습니다.

  • 기능: "방금 번역했던 주소지? 나 그거 외우고 있어."
  • 효과: 99%의 확률로 TLB에 정답이 있습니다(TLB Hit). 그래서 RAM에 있는 페이지 테이블을 보지 않고도 바로 물리 주소를 알아냅니다.
  • TLB Miss: 만약 TLB에 없으면? 어쩔 수 없이 5분 걸려서 RAM에 있는 페이지 테이블을 보고 옵니다. (엄청난 손해!)

4. SSD 입장에서 본 페이징 (Page Fault Handling)

자, 여기서 SSD와의 연결고리가 등장합니다.

만약 CPU가 "100번 페이지 내놔!" 했는데, 페이지 테이블을 보니 "유효하지 않음(Invalid)"이라고 적혀 있다면?

(즉, RAM에 없고 SSD 스왑 영역으로 쫓겨난 상태라면?)

 

이것이 바로 페이지 폴트(Page Fault)라는 비상사태입니다. 이때 OS는 아래와 같이 움직입니다.

  1. CPU 정지: "멈춰! 데이터 없다!" (Exception 발생)
  2. 커널 개입: OS 커널이 헐레벌떡 뛰어옵니다.
  3. SSD 탐색: "이 페이지 스왑 파일 어디에 박아놨지?" (디스크 주소 확인)
  4. I/O 요청: SSD 컨트롤러에게 "그거 읽어서 RAM 빈방에 넣어줘." (DMA 시작)
  5. 대기 (Sleep): SSD가 읽어오는 4일 동안 해당 프로그램은 '대기 상태(Blocked)'로 잠듭니다.
  6. 완료 및 재개: 데이터가 오면 테이블을 고치고(Valid로 변경), CPU를 깨워서 다시 일을 시킵니다.

핵심: 페이지 폴트가 한 번 터지면, CPU는 수천만 사이클을 낭비하게 됩니다. OS의 지상 과제는 이 '페이지 폴트'를 최소화하는 것입니다.


5. 여기서 발생하는 문제: "컴퓨터가 버벅거려요"

RAM과 SSD는 상당한 속도 차이가 있습니다.

  • RAM에서 데이터를 찾는 건 5분 이라고 잡으면,
  • SSD(스왑)에서 데이터를 가져오려면 4일이 걸립니다.

그래서 RAM 용량이 부족해서 페이지 폴트 현상이 반복적으로 일어나는 것.

즉 스왑이 미친 듯이 일어나는 현상(넣었다 뺐다 반복)을 스래싱(Thrashing)이라고 합니다.

 

 

이때 컴퓨터가 멈춘 것처럼 버벅대고 하드 디스크 램프가 미친 듯이 깜빡거리는 거죠.

"SSD가 아무리 빨라봤자 RAM 발끝도 못 따라가기 때문"입니다.

 

요약 및 퀴즈

  1. 페이지(Page): 메모리 관리의 표준 단위는 4KB다.
  2. 페이지 테이블: 가상 주소 → 물리 주소 지도는 RAM에 저장된다.
  3. TLB: RAM에 있는 지도를 보러 가기 귀찮아서 **CPU 안에 만든 쪽지(캐시)**다.
  4. 페이지 폴트: 찾는 데이터가 RAM에 없어서 SSD까지 갔다 와야 하는 끔찍한 상황.