程式是在何種環境中執行的

2022-09-14 20:00:16 字數 2233 閱讀 3178

問題

應用的執行環境,指的是什麼?

作業系統+硬體

macintosh用的作業系統macos,在at相容機上能執行嗎?

無法執行,不同的硬體種類需要不同的作業系統

windows上的應用,在macos上能執行嗎?

無法執行,應用是為了在特定作業系統上執行而作成的

freebsd提供的ports,指的是什麼?

通過使用源**來提**用,並根據執行環境進行整合編譯,從而得以在該環境下執行的機制

在macintosh上可以利用的windows環境模擬器稱為什麼?

virtual pc for mac

j**a虛擬機器的功能是什麼?

執行j**a應用的位元組**。只要分別為各個環境安裝專用的j**a虛擬機器,同樣的位元組**就能在各種環境下執行了。

執行環境=作業系統+硬體

作業系統和硬體決定了程式的執行環境

同一型別的硬體可以選擇安裝多種作業系統。

從程式的執行環境這一角度來考量硬體時,cpu的種類是特別重要的引數。cpu只能解釋其自身固有的機器語言。不同的cpu能解釋的機器語言的種類也是不同的。機器語言的程式稱為本地**native code。程式設計師用c語言等編寫的程式,在編寫階段僅僅是文字檔案,我們稱之為源**。文字檔案在任何環境下都能顯式和編輯。通過對源**進行編譯,就可以得到本地**。

windows克服了cpu以外的硬體差異

計算機的硬體並不僅僅是由cpu構成的,還包括用於儲存程式指令和資料的記憶體,以及通過i/o連線的外圍裝置。windows作業系統對克服這些硬體構成的差異做出了很大貢獻。在windows的應用軟體中,鍵盤輸入、顯示器輸出等並不是直接向硬體傳送指令,而是通過向windows傳送指令來間接實現的。因此,程式設計師就不用注意記憶體和i/o位址的不同構成了。

因為windows操作的是硬體而非應用軟體,而且針對不同的機型,這些硬體的構成也是有差異的。不過,windows本身則需要為不同的機型分別提供專用的版本。應用軟體則必須根據不同的作業系統型別來專門開發。cpu的型別不同,所對應的機器語言也不同,同樣的道理,作業系統的型別不同,應用程式向作業系統傳遞指令的途徑也是不同的。

freebsd port幫你輕鬆使用源**

freebsd上應用的源**,大部分都是用c語言來記述的。freebsd等unix系列作業系統都帶有標準的c編譯器。c編譯器可以結合freebsd的執行環境生成合適的本地**。ports能夠克服包含cpu在內的所有硬體差異的系統。根據不同的執行環境來重新調整程式,一般也稱為「移植」。

利用虛擬機器獲得其他作業系統環境

virtual pc for mac可以使macintosh這一硬體變得同at相容機一樣,從而能在該硬體上安裝windows。這樣一來,windows下的所有應用都可以正常執行了。windows應用利用的是windows作業系統的api。雖然表面上是windows將硬體處理為了at相容機,但由於virtual pc for mac的作用,實際上執行的是macintosh這一硬體。

提供相同執行環境的j**a虛擬機器

除虛擬機器的方法之外,還有一種方法能夠提供不依賴於特定硬體及作業系統的程式執行環境,那就是j**a。大家說的j**a,有兩個層面的意思:乙個是作為程式語言的j**a,另乙個是作為程式執行環境的j**a。同其他程式語言相通,j**a也是將源**編譯後執行。不過,編譯後生成的並不是特定cpu使用的本地**,而是名為位元組**的程式。位元組**的執行環境就稱為j**a虛擬機器。j**a虛擬機器是一邊把j**a位元組**逐一轉換成本地**一邊執行的。

在程式執行時,將編譯後的位元組diamante轉換成本地**,這樣的操作方法看上去有些迂迴,但由此可以實現同樣的位元組**在不同的環境下執行。如果能夠結合各種型別的作業系統和硬體作成j**a虛擬機器,那麼同樣的位元組**的應用就可以在任何環境下執行。

windows、macintosh都有專用的j**a虛擬機器。從作業系統方面來看,j**a虛擬機器是乙個應用,而從j**a應用方面來看,j**a虛擬機器就是執行環境。但它也有問題:

不同的j**a虛擬機器之間無法進行完整互換。

執行速度的問題

bios和引導

程式的執行環境中,存在著名為bios的系統。bios儲存在rom中,是預先內建在計算機主機內部的程式。bios除了鍵盤、磁碟、顯示卡等基本控制程式外,還有啟動引導程式的功能。引導程式是儲存在啟動驅動器趨勢區域的小程式。作業系統的啟動驅動器一般是硬碟,不過有時也可以是cd-rom或軟盤。

開機後,bios會確認硬體是否正常執行,沒有問題的話就會啟動引導程式。引導程式的功能是把在硬碟燈記錄的os載入到記憶體中執行。雖然啟動應用是os的功能,但os並不能自己啟動自己,而是通過引導程式來啟動。

微控制器執行的程式是在ram中的還是在rom中的

下文來說明微控制器與x86cpu的具體途徑 pc機在執行程式的時候先把程式從硬碟中,調入ram中執行,cpu從ram中讀取程式和資料.而微控制器的程式則是固化在flash 中,cpu執行的時候直接從flash 中讀取程式,從ram中讀取資料.造成這種差別的原因 x86架構的cpu是基於馮.諾伊曼體系...

原創 判斷程式的執行環境是VM收藏

原創 判斷程式的執行環境是vm收藏 老v的 很古老的 抗vm分析 mov ecx,0ah cx function 0ah get version mov eax,vmxh eax magic mov dx,vx dx magic in eax,dx specially processed io cm...

程式在CPU中執行的機制

程式在沒有執行之前是儲存在外存中的。程式被執行後,載入到記憶體中為機器語言程式,由cpu進行解析和執行,進而計算機系統整體的控制和資料運算也開始執行。程式與cpu 程式是指令和資料的組合體。例如c語言 printf hello 這個簡單的程式,printf是指令,hello 是資料。我們使用c語言等...