1. 개요
- 이전 포스팅까지 프로세스와 스레드에 대해 알아보면서 가상메모리를 언급한 바 있다.
- 해당 내용은 다음과 같다.
▶ 리눅스의 경우, 프로세스 하나 당 4GB의 크기를 갖는다.
▶ 그렇다면 컴퓨터 메모리가 8GB인 경우, 한번에 두개의 프로세스밖에 처리하지 못한다는 것을 의미한다.
▶ 하지만, 실제로 컴퓨터를 사용해보면 여러가지 프로세스를 8GB 메모리로 충분히 처리할 수 있다.
▶ 이 부분이 가능한 이유는 가상 메모리와 가상메모리를 활용하는 다양한 스케줄링 기법 때문이다.
https://devraphy.tistory.com/171?category=988503
a) 메모리를 사용하는 방식의 예
b) 가상 메모리가 필요한 이유
- 여러 프로세스를 동시에 처리해야하는 시스템
▶ 메모리 용량 부족 이슈 해결
▶ 프로세스 메모리 영역간의 침범 이슈 해결
2. 가상 메모리란?
- 실제보다 더 많은 용량의 메모리를 보유한 것처럼 보이게 하는 기술
▶ 실제로 사용하는 메모리의 용량은 매우 작다는 점에서 착안한 기술
▶ 프로세스간 공간 분리를 통해, 프로세스 이슈가 전체 시스템에 영향을 주지 않음
▶ 3GB ~ 4GB 메모리 주소 영역 === 커널영역 (운영체제 코드가 돌아가는 부분)
▶ 0GB ~ 3GB 메모리 주소 영역 === 유저영역 (실제 프로세스 코드가 돌아가는 부분)
a) 가상 메모리의 구조
- 프로세스는 가상 주소를 사용하고, 데이터를 읽고(read) 쓸 때(write) 가상 주소를 통해 물리 주소를 찾아 접근한다.
- 프로세스를 통제로 가상 주소에 할당하는 것이 아니라, 지금 수행해야하는 부분만을 가상 메모리에 할당한다.
▶ 가상 주소(virtual address): 프로세스가 참조하는 주소로 0~4GB의 주소값을 사용한다.
▶ 물리 주소(physical address): 가상 주소와 연결되어 있는 실제 메모리 주소로, 데이터가 저장되어있는 공간의 주소다.
- 매번 가상 주소를 물리 주소로 변환해야 한다면, 이를 처리하는데 꽤 적지않은 시간이 걸린다.
- 그러므로 컴퓨터에는 주소변환과정을 빠르게, 효율적으로 처리해주는 하드웨어가 있다.
▶ MMU(Memory Management Unit): CPU에서 코드를 실행하여 가상 메모리 주소에 접근이 필요할 때, 가상 주소를 물리 주소로 변환해주는 하드웨어 장치
b) 가상 메모리와 MMU의 관계
- CPU는 가상 메모리를 다루고, 가상 주소에 접근 시 MMU가 해당 가상 주소를 물리주소로 변환하여 물리 메모리에 접근한다.
- MMU가 물리 메모리 접근을 통해 필요한 데이터를 CPU에게 전달한다.
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
32. 가상메모리 - 다중 단계 페이징 시스템 (0) | 2021.07.08 |
---|---|
31. 가상메모리 - 페이징 시스템 (0) | 2021.07.06 |
29. 스레드(Thread) - 교착(Deadlock)과 기아(Starvation)상태 (0) | 2021.07.05 |
28. 스레드(Thread) - 세마포어(Semaphore) (0) | 2021.07.05 |
27. 스레드 동기화 이슈 해결방법 (0) | 2021.05.11 |
댓글