본문 바로가기
운영체제

운영체제 - 가상 메모리 (Virtual Memory)

by icblue21 2022. 12. 7.
728x90

가상 메모리 (Virtual Memory)

 

실제 각 프로세스마다 충분한 메모리를 할당하기엔 메모리 크기에 한계가 있다. 하나의 프로세스만 실행 가능한 프로그램은 프로그램이 끝날 때 까지 다른 프로그램이 기다려야 하고 프로세스의 주소 공간보다 메모리가 커야 한다는 한계가 있었고, 여러 프로세스를 동시에 실행하는 프로그램은 메모리의 용량이 부족한 이슈가 있었다.

 

이러한 한계를 극복하고자 가상 메모리 기법이 등장했다. 가상 메모리 기법은 메모리가 실제 메모리보다 더 많아보이게 하는 기법으로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하게 하는 기법이다. 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있다.

 

가상 메모리의 기본 아이디어는 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸때만 물리 주소로 바꿔주는 것이다.

 

MMU(Memory Management Unit)

이러한 가상 메모리가 잘 동작하기 위해선 컴퓨터가 MMU(Memory Management Unit)라는 특수한 메모리 관리 하드웨어를 가지고 있어야 한다. MMU는 CPU에 코드 실행시, 가상 주소 메모리에 접근이 필요할 때 해당 가상 주소를 물리 주소로 변환해주는 하드웨어 장치이다.

 

결론적으로, CPU 에서 가상 주소를 MMU로 보내고 MMU에서 가상 주소를 가지고 메모리에서 가상 주소에 해당하는 물리 주소를 가지고 온 뒤 CPU에 전달하는 식으로 가상 메모리를 사용하게 된다.

 

 

프로세스 생성시, 페이지 테이블 정보가 생성된다.

PCB등에서 해당 페이지 테이블에 접근 가능하고, 관련 정보는 물리 메모리에 적재된다.

프로세스 구동시, 해당 페이지 테이블의 base주소가 CR3이라는 별도의 레지스터에 저장되며 CPU가 가상 주소 접근시, MMU가 페이지 테이블 base주소에 접근해서 물리 주소를 가져온다.

 

 

 

 

 

 

 

 

 

댓글