歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 編寫適用於模擬器的Linux代碼

編寫適用於模擬器的Linux代碼

日期:2017/2/27 9:38:57   编辑:更多Linux

  在某台計算機上模擬其他計算機的歷史已經很長,通常是為了使用遺留應用程序,或者是為了使用更穩定、響應更快的OS的系統上運行流行的OS而編寫的應用程序。隨著Linux越來越流行,當開發人員規劃將運行於非Linux系統上的二進制程序時,需要審視他們的選擇。本文將研究模擬器的功能,並將詳細地研究硬件模擬和軟件模擬的問題。    在某台計算機上模擬其他計算機已有多年的歷史。模擬老的計算機的一個常見原因是懷舊,不過不可否認,很多模擬器能夠非常出色地運行多種計算機游戲。模擬其他計算機的另一個原因是為了使用只存在於某個特定平台上的應用程序軟件。    通常,應用程序模擬以占據較大市場份額的平台為目標。例如,WINE 項目嘗試去提供一個運行 Windows二進制程序的途徑。    不過,近年來Linux已經被證明是一個穩定而且全能的操作系統;因而,它的市場份額也有所增長。市場份額的增長激起了人們對模擬Linux的興趣。本文評論了在其他系統上進行Linux二進制程序模擬的現狀,並著重指出為了讓人們更方便地在模擬環境中運行他們的二進制程序,開發人員應該緊記的一些問題。    基本的模擬器  模擬器的思想很簡單。計算機是充分可預測的。如果您想確切地了解如果給出一段特定的代碼計算機會做什麼,那麼通過建立這台計算機的模型就可以得到結果。當然,這會涉及到相當多的開銷,但是,如果要模擬的計算機比正在進行模擬的計算機老得多,那麼模擬環境將比原來的機器更快。    有一些模擬層,比如NetBSD的Linux模擬層,只是提供某個環境的軟件部分的模擬,從 Linux 程序庫取得系統調用,並處理返回結果,使得看起來像是在使用 Linux內核。其他的模擬層,比如VirtualPC,可以模擬整台計算機,包括處理器。模擬處理器的速度會更慢,但是可以帶來更好的兼容性。    發行版本格式的模擬器    盡管本文重點關注的是在其他平台上運行Linux二進制程序的方法,但是,經過編譯的二進制程序發行版本同樣占有一席之地。隨著Linux模擬環境越來越普及,Linux二進制程序格式成為發行簡單程序(不給出源代碼)的一個可行方法。Linux二進制程序可以在多種系統上運行,無可否認,有時需要付出一些代價——以Linux二進制程序格式作為通用發行版本格式還會遇到一些挑戰。    通常,模擬不足以讓您在為另一個系統構建的程序中運行為某個系統構建的共享對象。如果您的產品大部分是以共享程序庫對象的形式發行的,那麼這些產品可能不會被加載到其他平台上。    有人認為,使用Linux二進制程序格式來向其他平台發行代碼是瘋狂的。也許這很瘋狂,但它是可行的。近幾年,我的主要的Web浏覽器就一直在模擬環境中運行(更不用提字處理器、文檔轉換器,甚至信用卡處理軟件)。    我們樂於使用的大部分軟件應用程序都是商用的,並且,能夠發行可以運行在很多平台之上的單一的二進制程序會使商業軟件供應商大大受益。如果有多種多樣的Linux模擬環境可用,那麼Linux二進制程序格式會表現為第一個真正的軟件發行版本選擇。    噢,移植源代碼是與發行有很大區別的任務;通常,移植任務更為簡單。    完全硬件模擬器  完全硬件模擬器會模擬一台完整的機器;不只是處理器,還包括機器所有其余部分。例如,被模擬的計算機可能擁有自己的鍵盤控制器和視頻卡。    完全硬件模擬常用於使用較老機器的程序。MAME街機游戲(arcade game)模擬器就是一個流行的示例,它模擬了多種老式街機游戲機的硬件。    就某些方面而言,完全硬件模擬器是進行模擬的最簡單方式。很多工作都需要構建一個完全硬件模擬器,但是一旦您擁有這樣一個模擬器,所有的事情就都可以迎刃而解。例如,用於 Macintosh 的 VirtualPC 版本 3 開始支持 Linux.    硬件模擬可以解決使用其他方式難以解決的問題。例如,我以前有一個BIOS閃存工具,僅以用於DOS的自解壓縮的映像文件的格式發布。更糟糕的是,運行它的機器必須在傳統的 ISA 軟盤控制器上安裝實際的軟盤(我的 Windows 桌面機有一個 LS-120 驅動器)。通過模擬來解決這個問題吧!我在模擬器下運行該程序,將數據寫入已經插入 Mac 的一個 USB 軟盤驅動器。    硬件模擬也有其不利方面。為了讓一切都能夠運轉,需要付出很大努力。如果需要網絡,那麼還需要很好地模擬網絡芯片,以使得操作系統可以在這個芯片上運行。此外,模擬本身所沒有的指令的代價可能非常高昂。通常,像這樣一個系統可以近乎完美地運轉,但是,與時限(timing)相關的功能可能會不可靠。    完全硬件模擬器已經使用了很長時間,最適合處理速度可能受模擬影響的遺留系統和代碼。    雖然如此,想要在 Macintosh 或者任何其他非 x-86 機器上運行x86Linux二進制程序的用戶,為了嘗試運行程序,可能要完全依賴於某種當前可用的x86模擬器。在類似這樣的系統上,大部分工具程序將運行得非常好(雖然可能較慢)。要擔心的惟一一個主要顧慮是,為了提高性能,這種系統的用戶可能安裝較小的或者較老的 Linux 發行版本。使用 32 MB 內存來運行模擬機器的那些人不可能運行最新版本的 KDE.    部分硬件模擬器  部分硬件模擬器是一個中間解決方案:它們模擬一台計算機,但是這台計算機只能是與它們實際上所在的計算機類型相同的計算機。由於執行的速度與宿主機器相當,所以類似這樣的程序可以降低模擬的成本。此類模擬器的示例包括 Serenity Virtual Station 和 VMWare.    當您擁有用於多種操作系統的應用程序,而且需要同時運行它們時,這些系統最為實用。類似於完全硬件模擬,這樣的系統將運行一個完全的 Linux OS 環境,只要您的程序能夠適當地跨Linux系統移植,那麼就沒什麼問題。不過,再次聲明,Linux的移植到較老版本的可移植性將有非常有用。使用虛擬機的人們可能願意在這樣的系統上運行一個較老的、占空間較小的 Linux 版本。






Copyright © Linux教程網 All Rights Reserved