← 질문 목록
#33깊이 0
가상 메모리는 무엇을 해결하는가?
프로세스마다 자기만의 연속된 주소 공간을 준다. 실제 물리 메모리가 조각나 있어도, 남의 메모리와 섞여 있어도 프로그램은 그것을 몰라도 된다.
- 1. CPU에서 MMU로: 가상 주소로 읽어라
- 2. MMU에서 페이지 테이블로: 이 주소는 어느 프레임인가
- 3. 페이지 테이블에서 MMU로: 없다. 디스크에 밀려 있다
- 4. MMU에서 커널로: 페이지 폴트. 가져와라
- 5. 커널에서 CPU로: 프레임에 올렸다. 다시 실행해라
얻는 것이 셋이다. 프로세스끼리 격리되고, 물리 메모리보다 큰 프로그램이 돌고, 같은 코드를 여러 프로세스가 한 벌만 올려 쓴다.
값은 변환 비용이다. 주소마다 테이블을 뒤지면 느려서 TLB라는 캐시를 둔다. 컨텍스트 스위칭에서 이 캐시가 비워지는 것이 전환 비용의 큰 몫이다.
주의
디스크로 밀리기 시작하면 성능이 무너진다. 페이지 폴트가 연쇄로 나면서 실행보다 옮기는 데 시간을 더 쓰는 상태를 스래싱이라 한다.
추천 꼬리질문
관련 질문
- 가상 메모리를 사용하는 이유는 무엇인가?운영체제가상 메모리를 사용하는 이유와 해결하려는 문제는 실질적으로 동일한 개념을 다룬다.
- 프로세스 주소공간을 나누어 사용하는 이유는 무엇인가?운영체제프로세스 주소 공간을 나누어 사용하는 것은 가상 메모리 구현의 핵심 원리이자 목적이다.
- 프로세스 주소 공간을 나누는 이유는 무엇인가?운영체제가상 메모리를 통한 프로세스 주소 공간 분할의 목적과 해결하려는 문제를 다룬다.
- 가상 메모리 관리 시 페이징과 세그멘테이션은 무엇으로 구분하는가?운영체제가상 메모리가 해결하려는 문제와 이를 구현하는 구체적인 기법인 페이징/세그멘테이션의 관계를 다룬다.
- 쓰레싱이 발생하는 원인과 해결책은 무엇인가?운영체제쓰레싱은 가상 메모리 관리 실패로 인해 발생하는 구체적인 성능 저하 사례이다.