0 開篇
(1)應用的運行環境,指的是什麼?
操做系統和計算機自己(硬件)的種類
(2)Macintosh用的操做系統(MacOS),在AT兼容機上能運行嗎?
沒法運行
(3)Windows上的應用,在MacOS上能運行嗎?
沒法運行
(4)FreeBSD提供的Ports,指的是什麼?
經過使用源代碼來提供應用,並根據運行環境進行整合編譯,從而得以在該環境下運行的機制
(5)在MacOS上能夠利用的Windows環境模擬器稱爲何?
Virtual PC for Mac
(6)Java虛擬機的功能是什麼?
運行Java應用的字節代碼
1 運行環境=操做系統+硬件
咱們在下載軟件的時候,一般都會看到「運行環境」這一項。包括操做系統和計算機硬件兩項。這就是所說的運行環境,其決定了程序的運行環境。CPU只能即便其自身固有的機器語言,不一樣的CPU能解釋的機器語言的種類也是不一樣的。
機器語言的程序稱爲本地代碼(native code)。程序員用C語言等編寫的程序,在編寫截斷僅僅是文本文件。文本文件在任何環境下都能顯示和編輯。咱們稱之位源代碼,經過對源代碼進行編譯,就能夠獲得本地代碼。
2 Windows克服了CPU意外的硬件差別
計算機的硬件並不只僅是由CPU構成的,還包括用於存儲程序指令和數據的內存,以及經過I/O鏈接的鍵盤、顯示器、硬盤、打印機等外圍設備。
Windows操做系統對克服這些硬件構成的差別作出了很大貢獻。
在Windows的應用軟件中,鍵盤輸入、顯示器輸出等並非直接向硬件發送指令,而是經過向Windows發送指令來間接實現的。所以,程序員就不用注意內存和I/O地址的不一樣構成了。由於Windows操做的是硬件而非應用軟件,並且針對不一樣的機型,這些硬件的構成也是有差別的。不過Windows自己則須要爲不一樣的機型分別提供專用的版本。
目前來講,即使是Windows,也依然沒法吸取CPU類型的差別。java
3 不一樣操做系統的API不一樣
一樣機型的計算機,可安裝的操做系統類型也會有多重選擇。例如,AT兼容機的狀況下,出Windows以外,還能夠採用Unix系列的Linux及FreeBSD等多個操做系統。固然,應用軟件則必須根據不一樣的操做系統類型來專門開發。CPU的類型不一樣,所對應的機器語言也不一樣,一樣的道理,操做系統的類型不一樣、應用程序向操做系統傳遞指令的途徑也是不一樣的。
應用程序向操做系統傳遞指令的途徑稱爲API。由於不一樣操做系統的API是由差別的,所以,將一樣的應用程序移植到其餘才作系統時,就必需要重寫應用中利用到的API部分,像鍵盤輸入、鼠標輸入、顯示器輸出、文件輸入輸出等同外圍設備進行輸入輸出操做的功能,都是經過API提供的。
在同類型操做系統下,無論硬件如何,API基本上滅有差異,於是,針對某特定操做系統的API所編寫的程序,在任何硬件上均可以運行。固然,因爲CPU種類不一樣,機器語言也不相同,所以本地代碼也是不一樣的。這種狀況下,就須要利用可以生成各CPU專用的本地代碼的編譯器,來對源代碼進行從新編譯了。
程序(本地代碼)的運行環境是由操做系統和硬件來決定的。
4 FreeBSD Port幫你輕鬆使用源代碼
既然CPU類型不一樣會致使一樣的本地代碼沒法重複利用,那爲什麼不直接把源代碼分發給程序呢?
Unix系列操做系統FreeBSD中,存在一種名爲Ports的機制。該機制可以結合當前運行的硬件環境來編譯應用的源代碼,進而獲得能夠運行的本地代碼系統。若是目標應用的源代碼沒有在硬件上的話,Ports就會自動使用FTP鏈接到相關站點來下載代碼。
5 利用虛擬機得到其餘操做系統環境
即便不經過移植,咱們也可使用虛擬機軟件進行運行。虛擬機我想你們都是用過的,這裏很少加介紹。
6 提供相同運行環境的Java虛擬機
除虛擬機的方法以外,還有一種方法可以提供不依賴於特定硬件及操做系統的程序運行環境,那就是Java。
使用Java編寫的程序,編譯後生成的並非特定CPU使用的本地代碼,而是名爲字節代碼的程序。字節代碼的運行環境就稱爲Java虛擬機。Java虛擬機是一邊把Java字節代碼逐一轉換成本地代碼一邊運行的。
例如:在使用用於AT兼容機的Java編譯器和Java虛擬機的狀況下,編譯器會將程序員編寫的源代碼(sample.java)轉換成字節代碼(sample。class)。而Java虛擬機(java.exe)則會把字節代碼變換成x86系列系列CPU適用的本地代碼,而後由x86系列CPU負責實際的處理。
在程序運行時,將編譯後的字節代碼轉換成本地代碼,這樣的操做方法看上去有些迂迴,但由此能夠實現一樣的字節代碼在不一樣的環境下運行。若是可以結合各類類型的操做系統和硬件作成Java虛擬機,那麼,一樣字節代碼的應用就能夠在任何環境下運行。
另外一點就是運行速度的問題。Java虛擬機每次運行時都要把字節代碼變換成本機代碼,這一機制是形成運行速度慢的緣由。程序員
7 BIOS和引導
程序的運行環境中,存在着名爲BIOS(Baisc Input/Output System)的系統。BIOS存儲在ROM中,是預先內置在計算機主機內部的程序。BIOS除了鍵盤、磁盤、顯卡等基本控制程序外,還有啓動「引導程序」的功能。引導程序是存儲在啓動驅動器起始區域的小程序。操做系統的啓動驅動器通常是硬盤,不過有時也能夠是CD-ROM或軟盤。
開機後,BIOS會確認硬件是否正常運行,沒有問題的話就會啓動引導程序。引導程序的功能是把在硬盤燈記錄的OS加載到內存中運行。雖然啓動應用是OS的功能,但OS並不能自動啓動本身,而是經過引導程序來啓動。