가상 메모리 개념
가상 메모리(Virtual Memory System) 개념
- 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있음
EX. 리눅스는 하나의 프로세스가 4GB, 통상 메모리는 8GB, 16GB
- 폰노미만 구조 기반이므로 코드는 메모리에 반드시 있어야 한다.
가상 메모리가 필요한 이유
- 하나의 프로세스만 실행 가능한 시스템(배치 처리 시스템 등)
1. 프로그램을 메모리로 로드(load)
2. 프로세스 실행
3. 프로세스 종료(메모리 해제)
- 여러 프로세스 동시 실행 시스템
1. 메모리 용량 부족 이슈
2. 프로세스 메모리 영역간에 침범 이슈
가상 메모리
- 가상 메모리: 메모리가 실제 메모리보다 많아 보이게 하는 기술
- 실제 사용하는 메모리는 작다는 점에 착안해서 고안된 기술
- 프로세스간 공간 분리로, 프로세스 이슈가 전체 시스템에 영향을 주지 않을 수 있음
- 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸 때만 물리주소로 바꿔주면 된다.
- virtual address(가상주소) : 프로세스가 참조하는 주소
- physical address(물리주소) : 실제 메모리 주소
→ 모든 프로세스는 0~4GB 까지로 지칭할 수 있는 가상 주소를 가지는 셈.
이중에 일부분만 메모리에 올라간다. 메모리에 어디에 올라가 있는지 물리주소로 알 수 있음.
- MMU(Memory Management Unit)
CPU 가 프로세스의 특정 공간을 참조할때 가상 주소를 먼저 찾게 되고 가상 주소가 어느 물리주소에 들어가 있는지를 알아야 한다. 가상주소를 물리주소로 변환를 시켜주는 시스템 메모리 안에 들어가 있음 매번 참조할때마다 변환해줘야 한다. 매번 변환해주면 시간이 많이 걸리게 되어서 MMU라는 하드웨어 칩을 넣어 놓는다.
가상 메모리와 MMU
- CPU는 가상 메모리를 다루고, 실제 해당 주소 접근 시 MMU 하드웨어 장치를 통해 물리 메모리 접근
- 하드웨어 장치를 이용해야 주소 변환이 빠르기 때문에 별도 장치를 둠
제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.