가상 메모리의 개념과 동작 원리
가상 메모리는 컴퓨터가 처리할 데이터와 프로그램 크기가 점점 커지면서 물리 메모리(RAM)의 용량 한계를 극복하기 위해 만들어졌다.
과거의 컴퓨터는 모든 프로그램들이 반드시 RAM에 완전히 올라가야만 실행할 수 있었다. 하지만 물리 메모리의 공간 부족으로 실행할 수 없는 프로그램들이 많아지면서 가상 메모리가 필요하게 되었다.
가상 메모리의 동작 방식
1. 페이징 (Paging)
- 가상 메모리를 일정 크기의 페이지로 나누고, 이를 물리 메모리의 프레임에 적재한다.
- 프로그램이 실행될 때 필요한 페이지만 메모리에 올리므로, 연속된 메모리 공간이 필요 없다.
- 비유: 책장에서 필요한 페이지만 골라서 책장에 두고 읽는 느낌 !
2. 페이지 교체 (Page Swapping)
- RAM이 가득 차면, 사용하지 않는 페이지를 하드디스크로 이동시키고 새로 필요한 페이지를 메모리에 적재한다.
- 비유: 책장에 자리가 없을 때, 잠시 필요 없는 책을 옮겨두고 새 책을 올리는 것과 같다 !
TLB(Translation Lookaside Buffer)와 MMU(Memory Management Unit)
- TLB: 페이지 테이블 접근을 가속화하기 위한 캐시 역할을 한다. 자주 참조하는 페이지 정보를 저장하여 CPU가 더 빠르게 주소를 변환할 수 있게 돕는다.
- MMU: 가상 주소를 물리 주소로 변환하는 하드웨어 장치다. MMU는 주소 변환 작업을 자동으로 수행하여 CPU가 물리 메모리에 접근할 수 있도록 한다.
가상 메모리의 장점
- 메모리 확장 : 실제 RAM보다 큰 프로그램도 실행할 수 있다.
- 효율적 메모리 사용 : 필요한 데이터만 RAM으로 불러와 사용하므로 메모리를 효율적으로 사용한다.
- 프로세스 간 보호 : 각 프로그램이 독립적인 메모리 공간을 사용하여 다른 프로그램의 데이터에 접근하지 못한다.
- 멀티 프로세스 지원 : 여러 프로그램을 동시에 실행할 수 있어 컴퓨터 성능이 향상된다.
가상 메모리의 단점
- 속도 저하 : 필요한 데이터를 하드디스크에서 가져오는 과정이 느리다.
- Thrashing : 메모리 부족으로 과도한 페이지 교체가 발생해 CPU가 실질적인 작업보다 데이터 교환에 많은 시간을 소비하게 된다.
- 오버헤드 증가 : 가상 주소를 실제 주소로 변환하는 데 시간이 걸리고, 성능 저하가 발생할 수 있다.
Thrashing이란?
Thrashing은 메모리 부족으로 인해 페이지 교체 작업이 과도하게 발생하면서 시스템 성능이 심각하게 저하되는 현상이다. CPU가 페이지 교체 작업에 대부분의 시간을 소비해 프로그램이 실질적인 작업을 수행하지 못하게 된다.
Thrashing의 발생 원인
- 멀티프로그래밍 : 동시에 실행되는 프로그램 수가 많아 RAM이 부족해지면 페이지 부재가 빈번해진다.
- 페이지 부재 : 필요한 페이지가 메모리에 없을 때 하드디스크에서 가져와야 하며, 이 과정이 빈번해질수록 성능 저하가 심각해진다.
- 메모리 크기의 한계 : RAM이 부족해 프로세스가 필요한 페이지를 충분히 보유하지 못할 때 Thrashing이 발생한다.
Thrashing의 영향
- CPU 사용률 저하 : CPU가 페이지 교체 작업에 시간을 많이 소비해 프로그램 실행이 지연된다.
- 응답 시간 증가 : 프로그램의 실행 속도가 느려지고, 시스템의 응답 속도가 저하된다.
- 시스템 성능 저하 : 전체 시스템 성능이 감소해 사용자 경험과 애플리케이션 성능에 부정적인 영향을 미친다.