hypercall 與 Linux 系統呼叫花費相同的時間嗎?

hypercall 與 Linux 系統呼叫花費相同的時間嗎?

從 Xen 網站,

超級呼叫之於系統呼叫就像虛擬機器管理程式之於作業系統。或者,超級呼叫對於虛擬機器管理程式來說就像系統呼叫對於核心一樣。超級呼叫是從域到虛擬機器管理程式的軟體陷阱,就像系統呼叫是從應用程式到核心的軟體陷阱一樣。網域將使用超級呼叫來請求特權操作,例如更新頁表。與系統呼叫一樣,超級呼叫是同步的,但從管理程式到網域的返迴路徑使用事件通道。事件通道是非同步通知佇列,並通知與本機硬體上的中斷通知相同類型的事件。當佇列中有待處理事件的域被調度時,作業系統的事件回呼處理程序將會被呼叫以採取適當的動作。

  • 假設超級呼叫和系統呼叫都在做同樣的事情,它們是否花費相同的時間。
  • 虛擬機器管理程式處理超級呼叫的方式與以相同方式處理系統呼叫的 Linux 核心有什麼區別

答案1

超級調用比系統呼叫慢。這是因為超級呼叫必須先到達主機/管理程序,然後導航到 CPU 才能執行。返迴路徑也是如此。事實上,在類似核心上進行的基準測試超內核已經證明,超級呼叫需要大約 3 到 4 倍的時間(連結頁面的 pdf 第 15 頁)。

相關內容