2014-12-05 1 views
4

페이징을 사용하면 시스템이 가상 메모리 주소 공간과 실제 주소 공간 사이에 간접 계층을 제공 할 수 있습니다. 주소가 부여 된 후 MMU는 페이지 테이블을 검토하여 해당 프레임이 메모리에 있는지 확인합니다. 그럴 경우 실제 주소를 발견하고 관련 명령을 수행 할 수 있습니다.페이징/페이지 오류 처리기 - 디스크의 특정 내용을 찾는 데 사용되는 가상 주소는 무엇입니까?

그러나 RAM에 없으면 어떻게 될까요? MMU가 페이지 테이블을 방문하여 해당 프레임을 디스크에서 가져와야하는 경우 어떻게됩니까? 디스크에있는 위치는 어떻게 알 수 있습니까? 시작한 가상 주소는 디스크의 특정 항목을 매핑하는 데 어떻게 사용됩니까?

나는 자동으로 I/O 작업의 수를 두 배로 것 때문에 해당 주소 공간의 모든 매핑 디스크에 대한 페이지 테이블의 몇 가지 종류가 너무 비싼 것 때문에이 소프트웨어를 통해 수행되지 않습니다 의심 상당한 양의 메모리를 사용하지만 다른 방법이 있습니까?

감사합니다.

편집 : MMU가 특정 페이지를 가져 오지 OS를 이야기 할 때 이외의 디스크를 처리하지 않습니다. OS 내의 페이지 폴트 처리기는 디스크에서 내용을 가져 오지만 그 방법은 무엇입니까?

+0

OS는 페이지 테이블을 찾습니다. 하나의 올인원 페이지 테이블이있을 수 있지만 "상주"인 페이지의 경우 가상 주소를 실제 주소에 매핑하고 두 번째 주소는 모든 페이지를 해당 디스크 주소 (또는 페이지가 아직 할당되지 않았으므로 지워야 함을 나타냄). (OS에 따라이 두 번째 페이지 테이블에 대한 다른 용어도있을 수 있습니다.) –

+0

디스크 위치에 대한 페이지 테이블은 페이지가 가능하더라도 너무 자주 참조됩니다 일부는 그렇지 않은 일부), 활성 프로세스에 대해 페이징되지 않습니다. –

답변

1

는 MMU는 가상 어드레스를 물리 어드레스로 변환 이외의에 대한 책임을지지 않습니다. 그것은 디스크 액세스 또는 아무것도하지 않습니다.

가상 메모리 주소 공간에 디스크에있는 파일을 디스크에 메모리를 교체하거나지도하는 많은 운영 체제에서 사용하는 트릭은 일반적으로

  1. 마크 유효하지 않은 디스크로 교체 할 수있는 지역으로 작동

    페이지 테이블에 액세스 할 때 페이지 폴트가 발생합니다.

  2. 해당 영역에 액세스 할 때 MMU에서 페이지 오류가 발생하고 운영 체제로 제어가 되돌아옵니다.
  3. 어떤 페이지에 액세스했는지 감추십시오 디스크의 적절한 데이터를 메모리에로드합니다.
  4. 페이지 테이블의 해당 항목을 유효한 것으로 표시하고 이전에로드 한 데이터가 포함 된 메모리를 가리 키십시오.
  5. 로드 명령 전에 프로그램에 제어권을 반환하여 메모리 액세스를 다시 시도합니다.
  6. 이제 프로그램이 지금 유효한 페이지 non-the-wiser
1

운영 시스템은 데이터가 어디 있는지 알 필요가있다. 페이지 폴트가 발생하면 메모리가 여러 위치에있을 수 있습니다. 내 머리 꼭대기에서 :

  1. 디스크 상에 전혀없는 초기화 된 데이터 (프로그램 시작)가있을 수 있습니다.

  2. 이는 정적 데이터 일 수는 (어떤 경우 동적 데이터)이있는 실행 파일 또는 실행 파일 공유로드한다.

  3. 이 하나 개 이상의 페이지 파일 내에서 어떤 위치에서로드 할 수 있습니다.

MMU는이 문제를 처리하지 않습니다. 모든 것은 페이지 오류를 일으키는 것입니다. 운영 체제 오류 처리기는 액세스중인 주소를 식별하고, 위의 소스 중 하나에서 필요한 페이지를 찾고, 필요한 경우 여유 물리적 메모리를 할당하고, 실제 메모리 페이지를 할당하고, 페이지에서 데이터를로드해야합니다. 종료)를 실제 메모리로 가져 오려면 예외 핸들러를 종료하여 페이지 폴트를 야기한 명령을 다시 시작하십시오.

관련 문제