Virtual Memory 2

[PintOS Project 3 - VIRTUAL MEMORY] Memory management 구현 중.. 간단한 예시로 흐름 파악하기(사용자가 arr[1024]를 요구했다면!)

실제 우리 프로젝트에서 사용한 코드는 아니다. 전체적 흐름만 파악하기 위한 코드 (참고) 현재 vm_entry 버리고 page 구조체에 spt로 관리전체 흐름 요약1. 사용자 가상 주소 (UVA) 0x80400000에 배열이 선언됨.2. vm_entry가 생성되어 가상 메모리 페이지 정보를 관리.3. 배열에 처음 접근할 때 페이지 폴트 발생.4. vm_claim_page가 호출되어 해당 가상 주소를 물리 메모리로 매핑.5. 프레임을 할당받아 페이지 테이블을 통해 UVA와 KVA 및 물리 주소를 매핑.6. 배열이 물리 메모리에 할당되고, CPU는 페이지 테이블을 통해 물리 메모리에 접근. 1. 배열 선언 (arr[1024])과 가상 주소 할당배열을 선언하면, 컴파일러는 배열을 위한 메모리 공간을 가상 주소..

[PintOS Project 3 - VIRTUAL MEMORY] 가상 메모리 이론 공부2 운영체제가 관여하는 Virtual Memory

Demand Paging실제로 필요할 때 page를 메모리에 올리는 것I/O 양의 감소빈번히 사용되는 코드는 제한적Memory 사용량 감소빠른 응답 시간더 많은 사용자 수용Valid / Invalid bit의 사용Invalid의 의미사용되지 않는 주소 영역인 경우페이지가 물리적 메모리에 없는 경우처음에는 모든 page entry가 invalid로 초기화address translation 시에 invalid bit이 set되어 있으면 => "page fault"6번 7번은 사용하지 않는 비트page fault가 나면 운영체제에 넘어간다. 소프트웨어 인터럽트 발생Page Fault페이지 폴트는 프로세스가 메모리에 없는 페이지를 접근하려고 할 때 발생.예를 들어, 잘못된 메모리 주소(bad address)에 ..