1. 가상 메모리 (Virtudal Memory)
- 실제 메모리 크기와 상관없이 메모리를 사용 할 수 있도록 가상 메모리 주소를 사용 하는 것
- 프로세스의 일부분만 메모리에 로드하고, 나머지는 보조기억장치 (가상메모리 공간)에 둔다
[ 가상 메모리 사용의 장점 ]
- 실제 메모리 (RAM)보다 더 큰 공간 사용 가능
- 가상의 주소 공간을 사용 해 논리적인 연속성 제공
- 물리 메모리의 주소 공간을 알 필요가 없어짐
[ 하나의 프로세스를 여러 곳에 나눠 저장했는데, 어떻게 프로세스가 동작하는 걸까? ]
- MMU를 통해 논리주소, 물리주소를 나눠 사용함으로써 CPU를 속임으로써 가능!
- MMU?
: 가상 주소 -> 실제 메모리 주소로 변환해주는 장치
2. 가상 메모리 관리 기법
1) 페이징 (Paging)
: 프로세스를 고정 크기인 페이지로 잘라서 메모리에 적재하는 방법
- 물리메모리는 frame, 프로세스는 page라 불리는 고정 크기로 분할 함
- 페이지 테이블을 통해 page를 frame으로 매핑시킴
- 내부 단편화 문제 발생
- 내부 단편화?
: 할당 된 단위보다 적은 용량의 프로그램이 적재되어 공간이 낭비 되는 것
2) 세그먼테이션 (Segmentation)
- 프로세스를 크기가 서로 다른 세그먼트로 분할 해 메모리에 적재하는 방법
- 외부 단편화 문제 발생
- 외부 단편화?
: 작업보다 많은 공간이 남아있더라도, 그 작업을 받아 들이지 못하는 것
- 위의 예시에서는 메모리 용량이 100MB가 남았지만, 실제로 C작업이 들어 갈 수 없다