하이퍼콜은 Linux 시스템 호출과 같은 시간이 걸립니까?

하이퍼콜은 Linux 시스템 호출과 같은 시간이 걸립니까?

Xen 웹사이트에서,

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

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

답변1

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

관련 정보