가상메모리란
메모리를 관리하는 방법으로 실제 메모리 주소가 아닌 논리적 주소를 이용해서 관리한다.
이로써 실제 주기억장치보다 큰 프로그램도 적재할 수 있다고 사용자에게 Illusion을 준다.
다시 말하면
프로그램의 일부만 실제로 적재함으로써 즉, 실제로 프로그램 수행에 필요한 부분만 메모리에 올려놓음으로써
주기억장치의 용량보다 큰 프로그램파일이라도 사용자가 메모리에 올려놓을 수 있게 하는 기법이다.
왜쓰냐??
실제 주기억장치의 크기보다 더 큰 공간을 사용할 수 있다.
가상 주소 공간을 통해 논리적으로는 연속성을 가지게 되고(물리적 x)
Translation을 통해 실제 물리적 메모리에 매핑되기 때문에 물리적주소에 대해 알 필요가 없어진다.
-> 메모리에 직접 올리게 되면 주기억장치의 한계로 파편화가 발생할 수 밖에 없다.
하지만 가상메모리를 쓴다면 파편화가 발생되더라도 상관이 연속성을 가지고 있는 것처럼 느껴진다.
무슨 원리냐??
이 또한 지역성, 캐시의 원리와 같다.
항상 모든 프로그램에 대한 데이터가 필요한 것이 아니기 때문에
Secondary Stroage를 캐시(backing storage)로 사용하여 관리하는 것이다.
프로그램의 일부분을 필요한만큼 계속 RAM에만 올려 놓려놓도록 하고
나머지는 backing storage에 넣어놓는다.
-> 필요할 때 가져다 쓴다.
대표적으로 Paging, 페이징 그리고 Segmentation, 세그멘테이션이 있다.
[컴퓨터(Computer Science)/운영체제(Operation System)] - Virtual Memory, 가상메모리 [운영체제]
'CS Interview' 카테고리의 다른 글
Scheduler & Algorithm, 스케줄러가 하는 일, 스케줄링 알고리즘 (0) | 2021.06.28 |
---|---|
Process, 프로세스란? (0) | 2021.06.28 |
Cache, 캐시란? (0) | 2021.06.23 |
Tree 자료구조 (0) | 2021.06.15 |
비선형 자료구조를 사용하는 이유 (0) | 2021.06.15 |