二進制代碼的相容性
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() |
![]() | 此條目序言章節也許過於冗長。 (2024年7月24日) |
二進制代碼相容性也稱為二進制相容或目標碼相容,是電腦系統的一種特性,意味着它可以執行與另一電腦系統相同的可執行代碼,通常是通用電腦中央處理器(CPU)的機械碼。另一方面,原始碼相容性意味着在程式能夠在相容系統上執行之前,需要重新編譯或解釋。
對於通用作業系統上的已編譯程式,二進制相容性通常不僅意味着兩個電腦的CPU(指令集)是二進制相容的,還意味着作業系統(OS)和應用程式介面(API)的介面和行為,以及與這些API對應的應用程式二進制介面(ABI),足夠相似,即「相容」。
諸如向下相容這樣的術語通常暗示對象代碼相容。這意味着較新的電腦硬件和/或軟件具有舊版本的所有功能,加上額外的能力或效能。因此,較老的可執行代碼將在較新的產品上不變地執行。對於直接在OS下CPU上執行的已編譯程式,「二進制相容作業系統」主要意味着與另一個系統具有應用程式二進制介面(ABI)相容。然而,這也常常暗示了應用程式依賴的API,無論是直接還是間接(例如Windows API),都足夠相似。硬件(除了CPU,例如圖形硬件)和外圍裝置也是完全相容性的因素,儘管許多硬件差異被現代API隱藏了起來(這些API部分由OS本身提供,部分由特定裝置驅動提供)。
在其他情況下,為使非二進制相容程式工作,必須使用軟件的一般移植。
當開發需要在多個作業系統上執行的電腦程式時,二進制相容性是一個主要優勢。一些基於Unix的作業系統,如FreeBSD或NetBSD,為更流行的作業系統如Linux衍生版提供了二進制相容性,因為大多數二進制可執行檔案並不常為此類作業系統分發。
大多數作業系統在其每個版本中為早期版本構建的大多數二進制檔案提供二進制相容性。例如,為Windows 3.1、Windows 95或Windows 2000編譯的許多可執行檔案也可以在Windows XP或Windows 7上執行,而許多DOS應用程式則可以在更新版本的Windows上執行,最高到Windows 10,也就是最後一個支援NTVDM的版本。
二進制相容硬件
對於以硬件實現的數字處理器來說,二進制相容性意味着為另一處理器生成的大量機械碼可以正確執行,並且具有與另一處理器幾乎相同的效果。這在許多處理器家族中很常見,但在圍繞這些處理器構建的小型嵌入式系統中卻很少見。完全機械碼相容性意味着中斷處理程式、I/O埠、硬件暫存器、計數器/定時器、外部介面等佈局完全相同。對於使用更多抽象層次、更複雜的嵌入式系統(有時接近於通用電腦,如手機),情況可能有所不同。
二進制相容作業系統
二進制相容作業系統是旨在實現與另一作業系統或同品牌其他變體進行二進制相容性的OS。這意味着它們是應用程式二進制介面(ABI),由於OS工作的任務是執行程式,因此執行這些OS的指令集架構必須相同或互相適應,否則可以通過CPU仿真器或者更快動態翻譯機制來使其適應。
例如,Linux內核與Windows不相容。這並不意味着Linux不能與Windows應用程式實現二進制相容。額外的軟件Wine可以在一定程度上實現這種相容性。ReactOS開發專案旨在建立一個開源的、自由軟件的作業系統,該系統使用Wine來實現應用程式相容性,並重新實現Windows內核以增加驅動程式等方面的相容性,從而與微軟的Windows NT系列作業系統二進制相容,而Linux則使用Linux驅動程式,而不是Windows驅動程式。FreeBSD和BSD家族的其他成員通過將Linux系統呼叫轉換為BSD系統呼叫,在用戶模式下與Linux內核具有二進制相容性。這使得在基於Linux的作業系統上執行的應用程式和庫代碼也能夠在BSD上執行。
請注意,二進制相容作業系統不同於通過虛擬化或仿真執行另一個作業系統,這種情況下是在主機作業系統不相容時為了執行替代作業系統中的軟件。有時虛擬化由主機作業系統提供(或者可以取得這種軟件),這實際上使主機作業系統能夠對程式進行相容。例如,Windows 7上的Windows XP模式允許用戶執行64位元版本的Windows 7,並使舊軟件仍然能夠在32位元虛擬機器中執行Windows XP;VMware Workstation/VMware Fusion、Parallels Workstation和Windows Virtual PC允許其他作業系統在Windows、Linux和macOS上執行。
再舉個例子,在PowerPC上的Mac OS X能夠通過Classic環境執行Mac OS 9及更早期的軟件——但這並沒有讓Mac OS X成為一個與Mac OS 9完全二進制相容的作業系統。相反,Classic環境實際上是在一個虛擬機器中執行Mac OS 9.1,把它作為一個普通行程在Mac OS X內部執行。[1][2]
參見
參考資料
- ^ Mac OS X System Architecture. 2002. (原始內容存檔於August 2, 2002).
- ^ Singh, Amit. Mac OS X Internals: A Systems Approach. Addison-Wesley. June 29, 2006. Section 2.11.8: Classic. ISBN 0-321-27854-2.
Classic Startup is a Mach-O application that runs Mac OS 9 within its address space. It provides a hardware abstraction layer between Mac OS 9 and Mac OS X by virtualizing traps, system calls, and interrupts. It runs in a protected memory environment, with multiple Mac OS 9 processes within it layered on top of a single Mac OS X BSD process.