二進制代碼的兼容性

二進制代碼兼容性也稱為二進制兼容目標代碼兼容,是計算機系統的一種特性,意味着它可以運行與另一計算機系統相同的可執行代碼,通常是通用計算機中央處理器(CPU)的機器碼。另一方面,源代碼兼容性英語Source-code compatibility意味着在程序能夠在兼容系統上運行之前,需要重新編譯或解釋。

對於通用操作系統上的已編譯程序,二進制兼容性通常不僅意味着兩個計算機的CPU(指令集)是二進制兼容的,還意味着操作系統(OS)和應用程序接口(API)的接口和行為,以及與這些API對應的應用程序二進制接口(ABI),足夠相似,即「兼容」。

諸如向下兼容這樣的術語通常暗示對象代碼兼容。這意味着較新的計算機硬件和/或軟件具有舊版本的所有功能,加上額外的能力或性能。因此,較老的可執行代碼將在較新的產品上不變地運行。對於直接在OS下CPU上運行的已編譯程序,「二進制兼容操作系統」主要意味着與另一個系統具有應用程序二進制接口(ABI)兼容。然而,這也常常暗示了應用程序依賴的API,無論是直接還是間接(例如Windows API),都足夠相似。硬件(除了CPU,例如圖形硬件)和外圍設備也是完全兼容性的因素,儘管許多硬件差異被現代API隱藏了起來(這些API部分由OS本身提供,部分由特定設備驅動提供)。

在其他情況下,為使非二進制兼容程序工作,必須使用軟件的一般移植。

當開發需要在多個操作系統上運行的計算機程序時,二進制兼容性是一個主要優勢。一些基於Unix的操作系統,如FreeBSDNetBSD,為更流行的操作系統如Linux衍生版提供了二進制兼容性,因為大多數二進制可執行文件並不常為此類操作系統分發。

大多數操作系統在其每個版本中為早期版本構建的大多數二進制文件提供二進制兼容性。例如,為Windows 3.1Windows 95Windows 2000編譯的許多可執行文件也可以在Windows XPWindows 7上運行,而許多DOS應用程序則可以在更新版本的Windows上運行,最高到Windows 10,也就是最後一個支持NTVDM英語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]

參見

編輯

參考資料

編輯
  1. ^ Mac OS X System Architecture. 2002. (原始內容存檔於August 2, 2002). 
  2. ^ 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.