가상 메모리는 무엇을 해결하는가?
답변 연습
내 답변 적어보기접힘
모범답안 확인하기내 답변 뒤에 열어보세요
프로그램이 가상 주소로 일하게 해 물리 메모리의 배치와 수명을 직접 관리하지 않게 한다. 커널은 주소 범위마다 읽기·쓰기·실행 권한과 어떤 데이터를 연결할지 정한다.
- CPU
그다음은 MMU입니다. 가상 주소와 접근 종류를 보낸다
MMU그다음은 TLB입니다. 최근 변환과 권한이 있는지 본다
TLB그다음은 페이지 테이블입니다. 없으면 계층을 따라 변환을 찾는다
페이지 테이블그다음은 커널입니다. 매핑이 없거나 권한 처리가 필요하면 page fault
커널그다음은 CPU입니다. 파일·swap·새 페이지·COW로 해결하거나 잘못된 접근을 끝낸다
CPU
서로 다른 프로세스의 같은 가상 주소는 다른 물리 페이지를 가리킬 수 있어 격리가 쉽다. 반대로 공유 라이브러리와 파일은 같은 물리 페이지를 여러 주소 공간에 읽기 전용으로 연결할 수 있다.
demand paging은 실제로 접근한 페이지만 올린다. 큰 가상 주소 범위를 잡았다고 그만큼의 물리 메모리가 이미 확보되거나 끝까지 성공한다는 뜻은 아니다. 작업 집합이 자원 한도를 넘으면 할당이 실패할 수 있다.
비용은 페이지 테이블의 메모리와 주소 변환이다. TLB miss가 나면 page table walk가 필요하다. 주소 공간 전환 때도 CPU의 주소 공간 태그 같은 기능을 쓰면 모든 TLB 항목을 매번 비우지 않을 수 있다.
주의
page fault가 모두 디스크 I/O는 아니다. 처음 쓰는 익명 페이지와 copy-on-write도 fault로 처리할 수 있다. 작업 집합이 물리 메모리보다 커서 내보낸 페이지를 곧 다시 읽는 일이 반복되면 스래싱으로 실행 시간이 무너진다.
추천 꼬리질문
관련 질문
- 가상 메모리를 사용하는 이유는 무엇인가?운영체제가상 메모리를 사용하는 이유와 해결하려는 문제는 실질적으로 동일한 개념을 다룬다.
- 프로세스 주소공간을 나누어 사용하는 이유는 무엇인가?운영체제프로세스 주소 공간을 나누어 사용하는 것은 가상 메모리 구현의 핵심 원리이자 목적이다.
- 프로세스 주소 공간을 나누는 이유는 무엇인가?운영체제가상 메모리를 통한 프로세스 주소 공간 분할의 목적과 해결하려는 문제를 다룬다.
- 가상 메모리 관리 시 페이징과 세그멘테이션은 무엇으로 구분하는가?운영체제가상 메모리가 해결하려는 문제와 이를 구현하는 구체적인 기법인 페이징/세그멘테이션의 관계를 다룬다.
- 쓰레싱이 발생하는 원인과 해결책은 무엇인가?운영체제쓰레싱은 가상 메모리 관리 실패로 인해 발생하는 구체적인 성능 저하 사례이다.