今天我們從三個方面來簡單聊聊為什么計算機需要操作系統(tǒng)這個話題。
資源分配器
如果你的CPU上只需要運行一個程序,那么你的確不需要操作系統(tǒng)。
可是,一旦你的CPU上需要再運行一個程序,那么馬上就會面臨一個問題: 兩個程序開始競爭資源 ,因為計算機的硬件就那么多:有限的處理器個數(shù)、有限的內(nèi)存容量、有限的磁盤容量等等,當(dāng)在只有一個CPU(核)的機器上要運行兩個程序時,在某一個時刻CPU到底該運行哪個程序呢?
這顯然不是程序1應(yīng)該關(guān)心的事情,當(dāng)然,也不是程序2該關(guān)心的事情,這就需要必須得有一個什么程序來關(guān)心,這個程序就是操作系統(tǒng)。
操作系統(tǒng)存在的目的就是為了合理的給各個運行起來后的程序分配資源, 從這個角度你可以把操作系統(tǒng)理解為一個資源分配器 。
顯然你不能把CPU切成多個小的CPU,而只能采用“分時”的策略,也就是“你用一會我用一會”,這就好比大家去游樂場玩過山車,由于過山車只有一個,而且不能拆分成更小的給大家用,因此大家只能排隊,你用一會我用一會;
操作系統(tǒng)也采用此策略將CPU資源分配給各個進程,因此從操作系統(tǒng)的角度看“進程A用一會CPU后然后暫停,進程B再用一會兒”,即,操作系統(tǒng)不斷的將CPU在各個進程之間切換,只不過切換的速度足夠快,因此從用戶看來進程在同時運行;操作系統(tǒng)決定以什么樣的順序?qū)PU分配給各個進程就是所謂的進程調(diào)度。
而像內(nèi)存或者磁盤這類存儲資源與CPU不同,我們可以很方便的將內(nèi)存進行劃分,因此可以采用“分塊”的策略,也就是“ 你用一塊我用一塊”,這就是好比停車位,一個停車場中有很多停車位,大家可以同時去停車場中停車。
內(nèi)存也是同樣的道理,我們可以將內(nèi)存的劃分給不同的進程,因此不同的進程可以同時存在于內(nèi)存中。
為高效使用有限的內(nèi)存資源,操作系統(tǒng)在內(nèi)存的使用上可謂絞盡腦汁,虛擬內(nèi)存就是精彩的發(fā)明,其可以讓更多進程常駐內(nèi)存,當(dāng)然,虛擬內(nèi)存也帶來不小的挑戰(zhàn),這些都需要靠軟硬件結(jié)合來解決。
資源隔離與秩序維護者
程序A的運行不能干擾到程序B,即,如果程序A出現(xiàn)bug導(dǎo)致崩潰,那么它不能影響到系統(tǒng)中的其它程序,當(dāng)然也包括操作系統(tǒng)這個程序;
程序A決不能隨意訪問程序B所在的內(nèi)存區(qū)域等等,你肯定不希望其它程序能直接獲取你的聊天信息,這些都需要操作系統(tǒng)進行資源隔離。
除此之外,復(fù)雜的任務(wù)需要借助多個程序通力合作才能完成,因此程序之間除了隔離之外也必須進行必要的通信,比如進程間通信等,這時操作系統(tǒng)必須提供必要的同步以及互斥機制,確保程序?qū)蚕碣Y源的訪問以及程序的運行順序符合程序員的預(yù)期。
因此從這個角度看操作系統(tǒng)又是資源隔離與秩序維護者。
細節(jié)屏蔽者
操作系統(tǒng)和TCP/IP協(xié)議棧的作用是類似的,如果沒有TCP/IP協(xié)議棧,那么在發(fā)送網(wǎng)絡(luò)數(shù)據(jù)時你需要自己填寫好tcp協(xié)議header,維護好tcp的鏈接狀態(tài),發(fā)送前要進行三次握手,發(fā)送的過程中需要保證數(shù)據(jù)包的可靠傳輸、還要自己維護tcp的擁塞控制等等,搞定tcp協(xié)議還不算完,不要忘了還有ip協(xié)議,除此之外還有數(shù)據(jù)鏈路層等等, 如果這一切都要自己搞定,相信沒有多少程序員能進行網(wǎng)絡(luò)編程 ,而且大部分程序員在編寫網(wǎng)絡(luò)程序時相信對這些細節(jié)也不感興趣。
這時tcp/ip協(xié)議棧就非常重要了,它通過socket對上層程序員屏蔽了網(wǎng)絡(luò)的復(fù)雜度,程序員僅需要調(diào)用send/recv即可進行網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),這大大簡化了網(wǎng)絡(luò)編程,因此你可以把內(nèi)核中負責(zé)處理tcp/ip的那一部分理解為計算機網(wǎng)絡(luò)的”操作系統(tǒng)“。
而操作系統(tǒng)也是同樣的道理,我們知道真正完成計算任務(wù)的是硬件,hardware,而硬件本身通常是非常難以編程的,尤其設(shè)計I/O的部分,因為這非常的細節(jié)、非常瑣碎,程序員在讀寫文件時大概率不想關(guān)心要讀寫的數(shù)據(jù)到底保存在磁盤的哪個盤面、哪個柱面、哪個扇區(qū)上,也不想關(guān)心該使用什么樣的機器指令可以控制磁盤的讀寫、怎樣平衡好讀寫速率與磁盤壽命等等,你需要的是兩個read/write函數(shù)就能讀寫文件這種抽象概念(實際上從磁盤的角度來說根本不存在文件這種概念)。
這時操作系統(tǒng)的作用就非常明顯了,操作系統(tǒng)對上層應(yīng)用屏蔽了底層的這些細節(jié),讓程序員可以將注意力放在自己的領(lǐng)域上。
因此,從這個角度看操作系統(tǒng)更像是一個細節(jié)屏蔽者,它提供的一個重要的功能就是:抽象,Abstraction。
-
cpu
+關(guān)注
關(guān)注
68文章
11074瀏覽量
216924 -
計算機
+關(guān)注
關(guān)注
19文章
7657瀏覽量
90722 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7140瀏覽量
125527
發(fā)布評論請先 登錄
計算機操作系統(tǒng)PPT
計算機軟件與操作系統(tǒng)
什么是計算機操作系統(tǒng)?
計算機操作系統(tǒng)課件

評論