컨텍스트 전환과 모드 전환 중 가장 자주 발생하는 것은 무엇입니까?
나 자신에게는 두 가지 답변이 있지만 어느 것이 올바른지 모르겠습니다.
사용자 모드에서 컨텍스트 전환이 발생하지만 이것이 시스템 호출이 필요하다는 의미는 아니므로 컨텍스트 전환이 발생할 때 모드가 변경되지 않습니다.
컨텍스트 전환은 예약이 필요함을 의미합니다. 나는 이것이 권한이 있다고 생각하므로 컨텍스트 전환을 수행하려면 사용자 모드에서 커널 모드로 변경해야 합니다. 즉, 컨텍스트 스위치에는 모드 스위치가 수반됩니다.
이에 대해 명확한 답을 갖고 있는 사람이 있나요?
답변1
프로세스 간 컨텍스트 전환에는 항상 프로세서 수준 하이퍼바이저 모드 진입이 포함됩니다. 스케줄러는 프로세스 테이블과 다음 프로세스의 메모리 맵에 액세스해야 하며, 둘 다 이전 프로세스에서는 액세스할 수 없으므로 권한 상승이 필요합니다. 그런 다음 스케줄러는 MMU가 여전히 권한이 필요한 새 프로세스의 메모리 맵을 가리켜야 합니다. 고도.
동일한 프로세스의 스레드 간 컨텍스트 전환에는 커널이 전혀 포함될 필요가 없습니다.
따라서 가장 자주 발생하는 것은 시스템에 경량 스레드가 많이 있는지 여부에 따라 다릅니다.
배경 자료: 그 이상위키피디아,이 기사(Linux 정보 프로젝트의 컨텍스트 전환). 그리고 물론Linux 커널에 대해 알아보기(3 장).