← 질문 목록
#33깊이 0

가상 메모리는 무엇을 해결하는가?

운영체제기초메모리

프로세스마다 자기만의 연속된 주소 공간을 준다. 실제 물리 메모리가 조각나 있어도, 남의 메모리와 섞여 있어도 프로그램은 그것을 몰라도 된다.

  1. 1. CPU에서 MMU로: 가상 주소로 읽어라
  2. 2. MMU에서 페이지 테이블로: 이 주소는 어느 프레임인가
  3. 3. 페이지 테이블에서 MMU로: 없다. 디스크에 밀려 있다
  4. 4. MMU에서 커널로: 페이지 폴트. 가져와라
  5. 5. 커널에서 CPU로: 프레임에 올렸다. 다시 실행해라

얻는 것이 셋이다. 프로세스끼리 격리되고, 물리 메모리보다 큰 프로그램이 돌고, 같은 코드를 여러 프로세스가 한 벌만 올려 쓴다.

값은 변환 비용이다. 주소마다 테이블을 뒤지면 느려서 TLB라는 캐시를 둔다. 컨텍스트 스위칭에서 이 캐시가 비워지는 것이 전환 비용의 큰 몫이다.

주의

디스크로 밀리기 시작하면 성능이 무너진다. 페이지 폴트가 연쇄로 나면서 실행보다 옮기는 데 시간을 더 쓰는 상태를 스래싱이라 한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

가상 메모리는 무엇을 해결하는가?