가상메모리의 탄생 배경
폰노이만 구조에서 프로그램은 메모리에 올라와야 사용할 수 있다. 현재 자기의 컴퓨터가 8기가의 메모리를 가지고 있다고 할 때 리눅스 같은 경우 프로세스 하나에 4기가를 사용하는데(간단한 C언어 프로그램을 컴파일해서 1KB크기의 프로그램이더라도 실행시 4GB의 프로세스를 갖게된다) 그럼 단 2개의 프로세스만 올려야 할까?
이건 너무 비효율적이기 때문에 가상메모리의 개념이 나왔다.
cpu가 프로세스 하나를 통째로 막 0.1초만에 실행하는게 아니고 순서대로 실행하므로 특정시간에 특정 부분의 프로세스를 실행하게 될것이므로 메모리 내에 프로그램을 통째로 올리는게 아니고 일부분만 올려놓고 실행하면서 바꿔가는 개념이다.
위처럼 각 프로세스들은 동일한 시작주소의 가상주소를 갖게 되고 이 가상주소는 cpu가 실행할 때 실제 메모리 주소인 물리주소로 바뀌게 되어 프로세스가 실행하게 된다.
그런데 매 프로세스를 실행할 때마다 가상주소를 물리주소로 바꾸는 것은 속도면에서 문제가 있을 수 있으므로 MMU라는 하드웨어 장치를 따로 설치한다.
이렇게 MMU를 통해 가상주소를 물리주소로 바꾸게 된다.
'운영체제' 카테고리의 다른 글
운영체제 가상메모리#3 Page Fault&Page Algorithm (0) | 2020.12.15 |
---|---|
운영체제 파이썬의 gil과 멀티쓰레딩 (0) | 2020.12.12 |
운영체제 Context Switching (0) | 2020.11.27 |
운영체제 프로세스 구조 (0) | 2020.11.25 |
운영체제 인터럽트란? (0) | 2020.11.24 |