計算機|程序環境&操作系統

終於進入到操作系統篇了,呼。

 

先看下相關問題。

 

 

答案:

 

 

1、環境=操作系統+硬件

 

程序都有對應匹配的運行環境。在表示程序運行環境時,操作系統和計算機主機常被拿出作爲指標,即操作系統和硬件決定了程序的運行環境

 

此外,同樣類型的硬件可以安裝多種操作系統。比如考拉的聯想電腦就裝了Windows系統和Linux系統。其實,從簡單層面出發,你要用冷冰冰的電腦處理你日常在電腦上進行的業務,那麼總得有東西直接和電腦硬件對接。向下能對接硬件,向上能支持用戶應用操作的,就是我們的操作系統啦。操作系統其實是一套軟件,一套能操作硬件的軟件。

 

操作系統以上,則是各種應用了,應用往往依據操作系統開發,這就是爲啥很多應用都有win版,unix版和mac版了。但跨平臺的應用畢竟是少數,佔大多數的不全面不成熟的軟件都沒有能力和資本進行跨平臺開發。

 

2、再說CPU

 

往期CPU篇:計算機|程序&CPU

 

從程序運行環境來說,CPU的種類是特別重要的參數。

 

CPU只能解釋其自身固有的機器語言,不同的CPU能解釋的汲取源於的種類也不相同。如,CPU有x86、MIPS、SPARC、PowerPC等幾種類型(查了下,這些應該都是歷史上的CPU,具體評價還不清楚,但知道CPU有很多種就行了)。這些CPU的機器語言完全不同。

 

補充信息

 

機器語言的的程序稱爲本地代碼。我們平時編寫的程序在編寫階段僅僅是文本文件,在任何情況下可以顯示和編輯,這叫源代碼。而編譯器對源代碼進行編譯,就可以得到本地代碼。

 

3、Windows

 

我們都知道,計算機除了CPU還有許多硬件,這些設備都存在型號不同的問題,如何克服不同硬件的差異是操作系統要面臨的第一個問題。Windows操作系統對克服這些差異做出了很大貢獻。

 

在Windows的應用軟件中,鍵盤輸入、顯示器輸出並不是直接向硬件發送指令,而是通過向Windows發送指令來間接實現的。因此,程序員就不需要注意內存和I/O地址的不同構成。因爲Windows操作系統操作的是硬件,已經封裝好了,程序員要考慮的是操作系統之上的事情。

 

Windows優秀歸優秀,但對不同機型還是需要提供不同的版本的,比如AT兼容機的Windows和PC端就不一樣。而且Windows無法吸收CPU的差異,因爲Windows軟件本身就是用CPU本地代碼完成的。

 

4、操作系統的API

 

API是應用程序向操作系統傳遞指令的途徑。Windows以及Unix系統的API提供任何應用程序都可以利用的函數組合。不同的操作系統的API不一樣,因此,要進行應用在不同操作系統間的遷移時,需要重寫調用操作系統API的部分。

 

5、懶得不想移植了

 

那麼,如果不想通過移植,也可以使用其它操作系統,一般會採用虛擬機的方法。

 

此外,Java也可以提供不依賴於特定硬件及操作系統的程序運行環境。Java有兩層意思,一個就是單純的編程語言,另外就是作爲程序運行的Java。同其他編程語言,Java也是講Java語法記述的源代碼編譯後運行。不過,編譯後生成的並不是特定CPU使用的本地代碼,而是字節代碼。字節代碼的運行環境就是Java虛擬機。Java虛擬機一邊把Java字節代碼轉成本地代碼,一邊運行。

 


 

emmm,這篇本來想看操作系統原理的,結果真成介紹了,很水的一章~

 

整體思想弄清楚就行了,即硬件-操作系統-應用是三個層次,每個層次只考慮自己的事情,而同一層次的不同內容在進行跨平臺時要考慮底層的調用問題。

 

 

發佈了19 篇原創文章 · 獲贊 4 · 訪問量 2609
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章