가상 메모리(VIrtual Memory)

JM1107·2022년 12월 20일
0

메인 메모리 (Main Memory, Physical Memory, 주기억장치)

CPU가 직접 접근할 수 있는 기억 장치로, 프로세스가 실행되려면 프로그램 코드를 메인 메모리에 적재해 두어야 함. 그런데, 만약 프로그램 용량이 메인 메모리보다 크면 어떤 일이 벌어질까?

초창기 컴퓨터에서는 사용 가능한 RAM의 용량이, 가장 큰 실행 애플리케이션의 주소 공간보다 커야 했음. 그렇지 않을 경우 "메모리 부족" 오류에 의해 해당 애플리케이션을 실행할 수 없었음.

가상 메모리(Virtual Memory)

  • 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안
  • 프로세스를 작은 단위로 쪼개 실행하는 부분만 메인메모리에 적재시키고 그외 부분은 보조기억장치에서 대기

가상 메모리 구현

운영 체제는 물리 메모리의 제약을 갖고 있는 주 기억 장치를 보조하기 위해 디스크를 보조 기억 장치 (Paging Space)로 사용한다.

즉, 메인 메모리 (주 기억 장치)와 디스크의 페이징 스페이스 (보조 기억 장치)를 묶어 하나의 메모리처럼 동작하게 하며, 이를 통해 메인 메모리의 한계를 넘는 메모리 사용을 가능하게 하는 가상 메모리를 구현한다.

MMU(Memory Managed Unit)

가상주소를 물리주소로 변환하고, 메모리를 보호하는 기능을 수행

Swapping


swap-out : CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억 장치를 내보냄
swap-in : 다른 프로세스의 메모리를 불러옴

내부단편화 vs 외부 단편화

내부단편화

메모리에 50MB의 빈 공간이 있고 30MB의 C작업을 적재하게 될 때, 20MB의 여유공간을 사용하지 못하는 경우
(Paging기법에서 발생)

외부단편화

메모리에 50+50 = 100MB의 공간이 남아있지만 70MB인 C작업을 실행시키지 못 하는 경우
(Segmentation기법에서 발생)

profile
개발자준비

0개의 댓글