O hypercall leva o mesmo tempo que uma chamada do sistema Linux?

O hypercall leva o mesmo tempo que uma chamada do sistema Linux?

Do site Xen,

Uma hipercall é para um syscall o que um hipervisor é para um sistema operacional. Alternativamente, uma hiperchamada está para um hipervisor assim como uma syscall está para um kernel. Uma hiperchamada é uma armadilha de software de um domínio para o hipervisor, assim como uma chamada de sistema é uma armadilha de software de um aplicativo para o kernel. Os domínios usarão hiperchamadas para solicitar operações privilegiadas, como atualização de tabelas de páginas. Assim como uma syscall, a hiperchamada é síncrona, mas o caminho de retorno do hipervisor para o domínio usa canais de eventos. Um canal de eventos é uma fila de notificações assíncronas e notifica os mesmos tipos de eventos que interrompem a notificação no hardware nativo. Quando um domínio com eventos pendentes em sua fila é agendado, o manipulador de retorno de chamada de evento do sistema operacional é chamado para tomar a ação apropriada.

  • A hiperchamada leva o mesmo tempo que uma syscall, assumindo que ambos estão fazendo a mesma coisa.
  • Existe alguma diferença na maneira como o hipervisor lida com uma hiperchamada e um kernel Linux que lida com a chamada do sistema da mesma maneira

Responder1

Uma hipercall é mais lenta que uma syscall. Isso ocorre porque a hiperchamada precisa primeiro chegar ao host/hipervisor e depois navegar até a CPU para ser executada. Da mesma forma para o caminho de retorno. Na verdade, benchmarks em um kernel semelhante, oHiperkernelmostraram que uma hiperchamada leva cerca de 3 a 4 vezes mais (pdf da página vinculada, página 15).

informação relacionada