모든 프로그래머가 원하는 것은 무한히 크고, 빠르며, 자신이 혼자 사용할 수 있는 메모리이다. 또한 비휘발성(nonvolatile) 메모리를 원한다. 이때 비휘발성이란 전원이 공급되지 않아도 그 내용이 유지되는 메모리이다. 또, 가격이 비싸지 않아야한다.하지만 현재 기
No protection\-프로그램이 물리 메모리의 모든 주소를 접근할 수 있다면 운영체제를 파괴할 수도 있음Relocation is needed (재배치 필요)\-한번에 여러개의 프로그램들을 실행시키기 어려움여러 프로그램들이 동시에 메모리에 적재되고 서로 간섭없이 실
Base and limit register의 문제점 주소공간이라는 추상화를 제공할 수 있지만, Bloatware 문제 발생 메모리의 크기가 증가하는 것 보다 더 빠르게 소프트웨어의 크기 증가 프로그램들이 사용가능한 메모리 안에 fit 되기에 너무 크다 Solution
지금까지 우리는 가상 메모리와 페이징의 기본적인 원리에 대해 알아보았다.이제부터 어떻게 구현되는지 논의해 보자.페이징 시스템은 다음의 두 가지 중요한 문제를 해결해야 한다.메모리가 참조될 때 마다 가상 주소와 물리 주소간에 변환이 필요하기 때문에, 주소 변환은 빠르게
페이지 테이블을 이용한 주소 변환에서 TLB를 사용하면 가상 주소를 물리 주소로 변환 할 때 속도를 향상시킬 수 있다. 하지만 문제는 이것 만이 아니다. 큰 가상 공간을 효과적으로 관리하는 방법이 필요하다. 이제부터 이 문제에 대한 두가지 접근 방법을 알아보자.첫번째
역 페이지 테이블 32비트 가상 주소 공간에서 다단계 페이지 테이블은 적절한 성능을 보이며 잘 동작한다. 하지만 64비트 시스템이 등장하면서 상황은 크게 변하였다. 주소 공간이 2^64바이트라면 4KB 페이지를 사용할 경우 2^52개의 엔트리가 요구된다. 각 엔트리의
LRU와 NRU의 차이
페이지 폴트가 발생하면 운영체제는 새로 진입할 페이지를 위한 공간을 만들기 위해 이미 존재하고 있는 페이지 중에 하나를 내보내야(메모리에서 제거해야)한다. 만일 내보낼 페이지가 변경되어 있다면(dirty 상태 라면) 그 페이지의 내용은 디스크로 보내져 기록되어야 한