7. 페이지 폴트, 디맨드 페이징, 스와핑

난이도 중 해설 보기 →
문제

문제 7 — 페이지 폴트, 디맨드 페이징, 스와핑

면접 질문

  1. "페이지 폴트(page fault)"가 무엇인가요? 마이너 폴트(minor/soft)와 메이저 폴트(major/hard)의 차이를 설명하고, 각각이 발생하는 상황과 비용 차이를 말해보세요.

  2. "디맨드 페이징(demand paging)"이란 무엇이며, 프로그램을 메모리에 통째로 올리지 않고 필요할 때 페이지를 가져오면 어떤 이점과 부작용이 있나요? (lazy allocation, copy-on-write 포함해서)

  3. 스와핑(swapping)/페이징 아웃이 무엇이고, "스래싱(thrashing)"은 어떤 상황에서 발생하나요? 워킹셋(working set)과 어떤 관계가 있나요?

응용 시나리오

게임 서버를 운영하는데, 물리 RAM 대비 메모리 사용량이 슬슬 한계에 가까워지자 다음 증상이 나타납니다.

  • 평소엔 멀쩡하다가 어느 순간부터 응답 지연이 급격히 치솟고 CPU는 한가한데 디스크 I/O가 폭증한다.

  • 한 번 접근하지 않던 영역(예: 오래 안 본 맵 구역, 비활성 플레이어 데이터)을 다시 만질 때 첫 접근만 유독 느리다.

  • 서버 프로세스를 새로 fork한 워커가 처음엔 메모리를 거의 안 먹다가 쓰기를 시작하면 메모리가 늘어난다.

  • 위 세 증상을 각각 메이저 페이지 폴트/스와핑, 디맨드 페이징, copy-on-write 관점에서 진단해보세요.

  • 실시간 게임 서버에서 스와핑/스래싱을 피하기 위한 운영·설계 대책(메모리 상한, 스왑 비활성, 워킹셋 관리, 사전 터치/락 등)을 제안하세요.

답안 작성
내 답안 · 자동 저장

직접 답을 작성한 뒤, 위 해설 보기에서 모범답안과 대조하세요.