Wine怎麼不是模擬器?
據我了解模擬器(以簡單的方式),它們確實將使用系統 X 的函式的程序的函式呼叫轉換或替換為正在執行程序的系統 Y 使用的函式。Wine項目聲稱 Wine 不是模擬器,因為:
Wine 不是像虛擬機或模擬器那樣模擬內部 Windows 邏輯,而是將 Windows API 呼叫即時轉換為 POSIX 呼叫,消除其他方法的性能和記憶體損失,並允許您將 Windows 應用程序乾淨地集成到桌面中。
那麼,模擬器和虛擬機如何在主機非 Windows 系統上模擬內部 Windows 邏輯?這不就是將 Windows 系統呼叫轉換為宿主自己的呼叫嗎?模擬器和非模擬器(如 Wine)之間的區別在於模擬器模擬整個作業系統,然後應用程序在不知道它正在與模擬器對話的情況下使用該系統 API,而非模擬器直接將應用程序的呼叫轉換為主機的 (並且應用程序也可能不知道)?額外的間接級別是模擬器和 Wine 之間的唯一區別嗎?
那麼,模擬器和虛擬機如何在主機非 Windows 系統上模擬內部 Windows 邏輯?這不就是將 Windows 系統呼叫轉換為宿主自己的呼叫嗎?
不,或者至少不是 WINE 所做的那樣——通過在使用者空間中一對一地翻譯系統呼叫。模擬器通過更迂迴的路線抽像地做到這一點;它不直接翻譯系統呼叫。
真正的**模擬器**創建的是虛擬機(例如 x86-64),而不是虛擬作業系統。然後,您理論上可以執行任何針對該類型機器的作業系統。通常,“模擬器”包括作業系統,但這並不是它所模擬的;它包含的作業系統與在真機上執行的作業系統相同。
模擬器有時用於模擬不同於主機的硬體,但也用於模擬完全相同的硬體,以便在另一個作業系統中執行一個作業系統。
WINE 與此不同,因為它實際上不是視窗。你可以執行一個 x86-64 模擬器,裡面有一個真實的視窗副本,但這不是 WINE。他們聲稱它實際上比模擬器更有效是有道理的——僅翻譯系統呼叫的成本可能低於執行 VM 的成本。缺點是WINE只能是windows;您不能將它與其他一些作業系統一起使用,因為您可以使用普通的 VM。