6

단일 프로세서 컴퓨터 시스템에 집중하겠습니다. 프로세스가 생성되면 내가 아는 한 페이지 테이블이 설정되어 가상 주소를 실제 메모리 주소 공간에 매핑합니다. 각 프로세스는 자신의 페이지 테이블을 가져 와서 커널 주소 공간에 저장합니다. 그러나 MMU는 하나의 프로세스 만 실행 중이며 많은 컨텍스트 전환이 발생하기 때문에 프로세스에 적합한 페이지 테이블을 선택하는 방법은 무엇입니까?시스템이 올바른 페이지 테이블을 선택하는 방법은 무엇입니까?

도움을 주시면 감사하겠습니다.

최저

, 사이먼

답변

2

이 경우 MMU는 완전히 프로세스가 무엇인지 인식하지 못합니다. 프로세스의 트랙을 유지하는 운영 체제는 작성된대로 프로세스마다 페이지 테이블을 생성합니다.

  1. 운영 체제 0xFOO

  2. 운영체제 프로그램 프로그래머블 인터럽트 타이머 (PIT)은 원인이 물리 어드레스에 위치하는 페이지 테이블을 사용하기 위해 MMU 지시 다음과 같이 컨텍스트 스위칭을위한 프로세스는 BAR 밀리 초 후에 하드웨어 인터럽트.

  3. 운영 체제는 프로세스 상태 (CPU 레지스터, 프로그램 카운터 등)를 복원하고 올바른 주소로 점프합니다.

  4. 프로세스는 PIT가 인터럽트를 트리거 할 때까지 실행됩니다.

  5. PIT 인터럽트를 처리하기위한 운영 체제 루틴은 프로그램 상태 (레지스터 등)를 저장하고 실행할 다음 프로세스 (간단한 경우 순환 링크 된 목록)를 결정하는 일정 알고리즘을 사용하고 다시 시작합니다

나는 의심의 여지가 없기를 희망합니다. 짧은 대답 : MMU는 프로세스에 무관심하며 프로세스가 무엇인지 알지 못합니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그렇다면 OS가 각 컨텍스트 스위치에서 페이지 테이블을 플러시 및 복원한다고합니까? – saimn

+0

@ user1435023 기본적으로. 운영 체제는 테이블이 실제 메모리에 포인터로있는 MMU에게 알려주고 MMU는 TTL 및 기타 하드웨어 작업의 플러시를 처리합니다. MMU에 따라 운영 체제는 세부적인 세부 수준을보다 세부적으로 제어 할 수 있지만 엄격하게 필요한 것은 아닙니다. 가장 간단한 수준에서, 모든 OS는 MMU에게 어떤 페이지 테이블을 사용할 것인지를 알려줍니다. – Dougvj

+0

@ user1435023 수정 : 위의 TLB를 참조하십시오. * TTL이 아닙니다. Nathan Binkert가 TLB 측면에 대해 더 많이 답변했습니다. – Dougvj

13

프로세서에는 페이지 테이블 기본 레지스터 (PTBR)라고하는 권한있는 레지스터가 있으며, x86에는 CR3입니다. 컨텍스트 스위치에서 OS는 PTBR의 값을 변경하여 프로세서가 사용할 페이지 테이블을 알 수있게합니다. PTBR 외에도 많은 최신 프로세서에는 주소 공간 번호 (ASN) 개념이 있습니다. 프로세스는 제한된 풀에서 주소 공간 번호를받으며이 ASN은 컨텍스트 스위치의 레지스터에도 설정됩니다. 이 ASN은 TLB 일치의 일부로 사용되며 여러 주소 공간의 TLB 항목을 공존시킬 수 있습니다. ASN이 재사용 될 때만 TLB를 플러시하고 해당 ASN과 일치하는 항목에만 필요합니다. 대부분의 x86 구현은 이것보다 더 거칠고 공통 페이지 (공유 라이브러리 및 공유 데이터 용)라는 개념이 있습니다.

+0

감사했습니다. – JohnnyCat