가상 메모리

2019. 5. 21. 23:07임베디드/운영체제

PC는 폰노이만 구조로 데이터 메모리와 프로그램 메모리가 함께 있는 구조다. CPU는 메모리에서 코드를 한 줄씩 읽어와서 실행하는 구조다. 

 

메모리에 상주할 수 있는 프로세스의 수는 제한적이다. 실제 32bit 커널에서 프로세스 하나의 크기는 4G다. 하나의 프로세스만 실행한 배치 처리 시스템으로도 큰 문제가 없다면 상관이 없다. 하지만 만일 메모리 크기가 6G에서 여러 프로세스를 동시에 처리할 때는 4G 하나의 프로세스는 들어갈 수 있지만 그 이상은 들어갈 수 없기에 메모리 용량 부족 이슈 혹은 프로세스 메모리간에 침범 이슈가 발생한다.

 

가상 메모리는 이 문제를 해결할 수 있는 기술이다. 가상 주소와 물리 주소를 나누는 것이다. 프로세서는 가상 주소를 사용하고, 실제 CPU가 메모리에 접근할 때는 가상 주소를 물리 주소로 바꾸면 된다. 하지만 실제 가상 주소를 물리 주소로 바꾸는 과정은 시간이 오래 걸리기 때문에 하드웨어적으로 도움이 필요하다. 이를 보완해주는 하드웨어 장치가 MMU로, 주소 변환이 빠르기 때문에 별도의 장치를 둔다.

 

32비트 기준

*가상 주소 : 프로세스가 참조하는 주소 (0~4G)

*물리 주소 : 실제 메모리 주소

 

따라서 가상 메모리는 결론적으로 프로세스간 공간 분리로 전체 시스템 문제없이, 물리적인 실제 메모리가 보다 더 크게 보이게 하는 기술이다. 가상 메모리와 페이징 기법 혹은 세그먼트 기법으로 동시에 여러 프로세스들을 메모리에 올려서 실행시킬 수 있다. 

 

MMU의 역할