하이퍼콜은 Linux 시스템 호출과 동일한 시간이 걸리나요?

하이퍼콜은 Linux 시스템 호출과 동일한 시간이 걸리나요?

젠 홈페이지에서

하이퍼콜은 운영 체제에 대한 하이퍼바이저와 같은 시스템 호출입니다. 또는 하이퍼바이저에 대한 하이퍼콜은 커널에 대한 시스템 호출입니다. 하이퍼콜은 시스템 호출이 애플리케이션에서 커널로의 소프트웨어 트랩인 것처럼 도메인에서 하이퍼바이저로의 소프트웨어 트랩입니다. 도메인은 하이퍼콜을 사용하여 페이지 테이블 업데이트와 같은 권한 있는 작업을 요청합니다. 시스템 호출과 마찬가지로 하이퍼콜은 동기적이지만 하이퍼바이저에서 도메인으로의 반환 경로는 이벤트 채널을 사용합니다. 이벤트 채널은 비동기 알림 대기열이며 기본 하드웨어의 인터럽트 알림과 동일한 유형의 이벤트를 알립니다. 대기열에 보류 중인 이벤트가 있는 도메인이 예약되면 운영 체제의 이벤트 콜백 핸들러가 호출되어 적절한 조치를 취합니다.

  • 하이퍼콜과 시스템 호출이 모두 동일한 작업을 수행한다고 가정하면 동일한 시간이 소요됩니까?
  • 하이퍼바이저가 하이퍼콜을 처리하는 방식과 시스템 호출을 동일한 방식으로 처리하는 Linux 커널의 차이점은 무엇입니까?

답변1

슈퍼콜은 시스템콜보다 느립니다. 이는 하이퍼콜이 실행되기 전에 먼저 호스트/하이퍼바이저에 도달한 다음 CPU로 이동해야 하기 때문입니다. 반환 경로도 마찬가지입니다. 실제로 유사한 커널에서 수행된 벤치마크는슈퍼코어하이퍼콜은 약 3~4배 더 오래 걸리는 것으로 나타났습니다(링크된 페이지의 PDF 15페이지).

관련 정보