Why?
실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있다. (코드는 메모리에 반드시 있어야 CPU에서 실행을 한다)
ex) 리눅스는 하나의 프로세스가 4GB 통상 메모리는 RAM 8GB, 16GB 정도이므로
CPU가 사용하는 메모리공간은 제한적인 점을 이용하여 지금 쓰는 공간만 메모리에 올려둠, 다끝나고 새로운 공간이 생기면 다시 올려두는 방식을 이용.
즉, 가상메모리는 하나의 프로세스만 실행하는 시스템에서는 필요없다(ex 배치 처리 시스템)
프로그램을 메모리로 load-> 프로세스 실행 -> 프로세스 종료(메모리 해제)
여러 프로세스를 동시에 실행하는 시스템에 가상 메모리가 필요하다
1. 메모리 용량 부족이슈
2. 프로세스 메모리 영역간에 침범이슈
-> 가상메모리 : 실제 메모리보다 많아 보이게 하는 기술
(실제 사용하는 메모리는 작다는 점 착안, 프로세스간 공간 분리로 프로세스 이슈가 전체 시스템에 영향을 주지 않게 할 수 있다)
가상메모리 (Virtual Memory System)
- 프로세스는 가상 주소를 사용하고, 실제 해당 주소에서 데이터를 읽고 쓸 때만 물리 주소로 바꿔주면 된다
1. 가상주소(Virtual Address) : 프로세스가 참조하는 주소 0~4GB
2. 물리주소(Physical Address) : 가상주소의 일부분만 메모리에 올라가는데 실제 메모리 주소
가상주소 : 물리주소로 변환을 위한 하드웨어 지원
MMU (Memory Management Unit) 하드웨어 칩 : CPU에 코드 실행시 가상 주소 메모리 접근이 필요할 때, 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치
'Computer Science > OS(운영체제)2' 카테고리의 다른 글
요구 페이징 기법 (0) | 2021.11.07 |
---|---|
페이징 시스템과 공유 메모리 (0) | 2021.11.07 |
페이징 시스템(Paging System) (0) | 2021.11.07 |