커널은 페이지 테이블이라는 데이터 구조를 유지 관리합니다.
과정'가상 페이지 주소를 메모리의 실제 페이지 주소로 변환합니다.
책을 읽었는데 문장이 있는데 왜인지 모르겠어요과정'? 그래서 커널
은싱글페이지 테이블에는 많은 프로세스에 대한 매핑이 포함되어 있습니다. 즉, 커널은 모든 프로세스에 대한 페이지 테이블을 별도로 저장하지 않고 단일 페이지 테이블에 저장합니까?
이 책은 Brian Ward가 쓴 How Linux Works, 2호, 182페이지, 4행입니다.
이 책에는 문법적 오류가 있는 것 같습니다.
조심해, 그거~해야 한다그것을 표현하다: 오류가 없습니다. (댓글 감사드립니다!)- 프로세스 매핑~해야 한다프로세스 매핑
답변1
실제 상황은 이보다 더 복잡하다.
첫째, 딱 하나 있다.진짜특정 프로세서 코어에 대한 페이지 테이블입니다. 이는 하드웨어가 실제로 가상 주소를 물리적 주소(구체적으로는 MMU)에 매핑하고 커널은 페이지 테이블의 내용을 변경해야 할 때만 관여하기 때문입니다.
또한 커널은 각 실행 컨텍스트(프로세스, 스레드 또는 커널 스레드)의 가상 메모리 맵 상태에 대한 정보를 별도로 저장합니다. 이들은 서로 독립적으로 저장되며 주소 매핑을 위해 하드웨어에서 사용하는 페이지 테이블과도 별개입니다. 실행 컨텍스트가 변경될 때마다(예: 프로세스가 시스템 호출을 하거나 인터럽트 핸들러가 인터럽트를 서비스하기 위해 활성화됨) 실행 컨텍스트를 전환하는 프로세스의 일부에는 하드웨어 페이지 테이블에서 이전 항목을 플러시한 다음 새 항목을 로드하는 작업이 포함됩니다. 항목. 두 컨텍스트에 따라 매우 적은 수의 항목만 다시 채우거나(예: 동일한 사용자 공간 프로세스의 스레드 전환) 전체 테이블을 다시 로드해야 할 수도 있습니다(예: 사용자 프로세스에서 인터럽트 핸들러로 전환). .