가상 메모리의 개념과 동작원리
가상 메모리(Virtual Memory)는 운영 체제가 실제 물리 메모리(RAM)의 크기를 넘어서는 메모리 공간을 사용자에게 제공하는 기술입니다. 즉, 프로그램은 실제 RAM보다 더 큰 메모리를 사용할 수 있는 것처럼 동작합니다.
운영 체제는 이 가상 메모리를 하드 디스크(또는 SSD)의 일부 공간과 결합하여 구현하며, 보통 "페이지(Page)"라는 단위로 메모리를 관리합니다. 각 프로세스는 독립된 가상 주소 공간을 가지게 되므로 서로 침범할 일이 없고, 보안과 안정성도 향상됩니다.
실무 주로 활용
- 대용량 프로그램을 구동할 때 메모리 부족 없이 실행 가능
- 여러 사용자 혹은 프로세스가 동시에 작업해도 충돌 없이 메모리 사용 가능
- 주소 공간 분리로 인해 보안 사고 감소
스와핑 개념과 동작원리
스와핑(Swapping)은 메모리가 부족할 때 프로세스의 일부 또는 전체를 디스크로 이동시켰다가 필요할 때 다시 불러오는 기술입니다. 물리 메모리를 효율적으로 활용할 수 있게 해주며, 서버나 다중 사용자 환경에서는 특히 자주 사용됩니다.
운영 체제는 비활성화된 프로세스를 메모리에서 내보내고(active한 프로세스를 위해 공간을 확보한 후) 다시 사용할 때 복원하는 방식으로 스와핑을 사용합니다.
실무에서의 사례
- 리눅스 서버에서 swap space를 사용하여 백그라운드 프로세스를 디스크에 저장
- 가상 머신(VM)이 메모리 부족 시 일부 메모리 페이지를 디스크로 이동
페이지 폴트 현상
페이지 폴트(Page Fault)는 프로세스가 접근하려는 데이터가 물리 메모리에 없을 때 발생하는 이벤트입니다. 운영 체제는 디스크에서 해당 페이지를 찾아 물리 메모리에 적재한 후, 다시 명령어를 실행하게 됩니다.
이 현상은 가상 메모리 시스템에서는 자연스러운 일이지만, 자주 발생하면 시스템 성능이 급격히 저하될 수 있습니다.
페이지 폴트가 발생하면?
- CPU가 특정 데이터에 접근을 시도합니다.
- 운영 체제는 페이지 테이블에서 해당 데이터가 메모리에 없음을 확인합니다.
- 페이지 폴트 발생 → 디스크에서 해당 페이지를 메모리로 불러옵니다.
- 페이지 테이블을 갱신하고 명령어를 재실행합니다.
실무에서의 영향
- 메모리가 부족한 시스템에서는 페이지 폴트가 잦아져 시스템 반응 속도 저하
- SSD라 해도 RAM보다 느리므로 성능 병목 가능성 존재
스레싱의 개념
스레싱(Thrashing)은 시스템이 대부분의 시간을 페이지 교체 작업만 하느라 실제 유의미한 작업을 거의 하지 못하는 상태를 말합니다. 이는 메모리가 심각하게 부족할 때 나타나는 대표적인 병목 현상입니다.
스레싱이 발생하는 이유는?
- 과도한 페이지 폴트 발생
- 동시에 너무 많은 프로세스가 실행되어 메모리 요구량 초과
- 각 프로세스의 작업 집합(Working Set)이 메모리에 유지되지 못함
실무에서 나타나는 현상
- CPU 사용률은 낮은데 디스크 사용률은 급격히 증가
- 시스템 응답 지연, 애플리케이션 프리징 현상
어떻게 해결할 수 있을까요?
- 불필요한 프로세스를 종료하거나 수를 줄입니다.
- 자주 쓰이는 데이터만 메모리에 남기도록 조정합니다.
- 가능하다면 물리 메모리를 증설합니다.
운영 체제별 메모리 관리 방식 차이점
운영 체제마다 메모리 관리 방식은 조금씩 다릅니다. 실무에서 다루는 주요 OS들의 차이를 알아두면 면접에서도 유리합니다.
리눅스
- Swappiness 파라미터를 조정해 스왑 사용 빈도 제어 가능
- /proc/meminfo에서 현재 메모리 및 스왑 상태 확인 가능
윈도우
- Pagefile.sys를 통해 가상 메모리 영역 관리
- 리소스 모니터를 통해 페이지 폴트 빈도 및 메모리 사용 현황 모니터링 가능
가상화 환경 (VMware, Hyper-V 등)
- Ballooning, Transparent Page Sharing 등 고유한 메모리 최적화 기법 사용
면접에서 자주 나오는 질문과 팁
면접에서는 이론뿐 아니라 실무와 연결된 질문이 자주 나옵니다. 다음은 대표적인 질문 예시입니다.
- Q: 가상 메모리의 장점은 무엇인가요?
A: 물리 메모리보다 큰 프로그램 실행이 가능하고, 보안성과 안정성이 향상됩니다. - Q: 페이지 폴트가 자주 발생하면 어떻게 하나요?
A: 메모리를 증설하거나, 자주 사용하는 프로세스를 중심으로 작업 집합을 조정합니다. - Q: 스레싱 발생 시 가장 빠른 대처법은 무엇인가요?
A: 우선 프로세스 수를 줄이고, 메모리 자원을 점검하며 필요 시 물리 메모리를 증설합니다.
요약
가상 메모리는 시스템 자원을 더 넓게 쓰도록 도와주는 핵심 기술입니다. 스와핑은 이 기능을 실현하는 수단이며, 페이지 폴트는 가상 메모리에서 불가피하게 발생하는 동작입니다. 그러나 그 빈도가 너무 잦아지면 스레싱이라는 심각한 성능 저하 상태가 발생하게 됩니다. 이들 개념은 서로 연결되어 있으며, 실무에서 시스템 성능을 좌우하는 중요한 요소입니다.
'CS 공부일지 > 운영체제 공부일지' 카테고리의 다른 글
페이지 교체 알고리즘 완벽 정리: LRU, FIFO, LFU, LFD, NUR (0) | 2025.05.01 |
---|---|
페이지 히트와 페이지 미스 (0) | 2025.05.01 |
메모리 계층 구조 완벽 정리 (0) | 2025.04.30 |
운영체제 시스템 콜과 모드 비트 완벽 정리 (0) | 2025.04.29 |
CPU 인터럽트 처리 메커니즘과 폴링 방식 비교 (1) | 2025.04.29 |