今天,我們從三個方面來簡單聊聊為什么計算機系統需要操作系統這個話題。
資源分配器
資源隔離與秩序維護者
細節屏蔽者
資源分配器
如果你的CPU上只需要運行一個程序,那么你的確不需要操作系統。
可是,一旦你的CPU上需要再運行一個程序,那么馬上就會面臨一個問題:兩個程序開始競爭資源,因為計算機的硬件就那么多:有限的處理器個數、有限的內存容量、有限的磁盤容量等等,當在只有一個CPU(核)的機器上要運行兩個程序時,在某一個時刻CPU到底該運行哪個程序呢?
這顯然不是程序1應該關心的事情,當然,也不是程序2該關心的事情,這就需要必須得有一個什么程序來關心,這個程序就是操作系統。
操作系統存在的目的就是為了合理的給各個運行起來后的程序分配資源,從這個角度你可以把操作系統理解為一個資源分配器。
顯然你不能把CPU切成多個小的CPU,而只能采用“分時”的策略,也就是“你用一會我用一會”,這就好比大家去游樂場玩過山車,由于過山車只有一個,而且不能拆分成更小的給大家用,因此大家只能排隊,你用一會我用一會;
操作系統也采用此策略將CPU資源分配給各個進程,因此從操作系統的角度看“進程A用一會CPU后然后暫停,進程B再用一會兒”,即,操作系統不斷的將CPU在各個進程之間切換,只不過切換的速度足夠快,因此從用戶看來進程在同時運行;操作系統決定以什么樣的順序將CPU分配給各個進程就是所謂的進程調度。
而像內存或者磁盤這類存儲資源與CPU不同,我們可以很方便的將內存進行劃分,因此可以采用“分塊”的策略,也就是“ 你用一塊我用一塊”,這就是好比停車位,一個停車場中有很多停車位,大家可以同時去停車場中停車。
內存也是同樣的道理,我們可以將內存的劃分給不同的進程,因此不同的進程可以同時存在于內存中。
為高效使用有限的內存資源,操作系統在內存的使用上可謂絞盡腦汁,虛擬內存就是精彩的發明,其可以讓更多進程常駐內存,當然,虛擬內存也帶來不小的挑戰,這些都需要靠軟硬件結合來解決。
資源隔離與秩序維護者
程序A的運行不能干擾到程序B,即,如果程序A出現bug導致崩潰,那么它不能影響到系統中的其它程序,當然也包括操作系統這個程序;
程序A決不能隨意訪問程序B所在的內存區域等等,你肯定不希望其它程序能直接獲取你的聊天信息,這些都需要操作系統進行資源隔離。
除此之外,復雜的任務需要借助多個程序通力合作才能完成,因此程序之間除了隔離之外也必須進行必要的通信,比如進程間通信等,這時操作系統必須提供必要的同步以及互斥機制,確保程序對共享資源的訪問以及程序的運行順序符合程序員的預期。
因此從這個角度看操作系統又是資源隔離與秩序維護者。
細節屏蔽者
操作系統和TCP/IP協議棧的作用是類似的,如果沒有TCP/IP協議棧,那么在發送網絡數據時你需要自己填寫好tcp協議header,維護好tcp的鏈接狀態,發送前要進行三次握手,發送的過程中需要保證數據包的可靠傳輸、還要自己維護tcp的擁塞控制等等,搞定tcp協議還不算完,不要忘了還有ip協議。
除此之外還有數據鏈路層等等,如果這一切都要自己搞定,相信沒有多少程序員能進行網絡編程,而且大部分程序員在編寫網絡程序時相信對這些細節也不感興趣。
這時tcp/ip協議棧就非常重要了,它通過socket對上層程序員屏蔽了網絡的復雜度,程序員僅需要調用send/recv即可進行網絡數據的收發,這大大簡化了網絡編程,因此你可以把內核中負責處理tcp/ip的那一部分理解為計算機網絡的”操作系統“。
而操作系統也是同樣的道理,我們知道真正完成計算任務的是硬件,hardware,而硬件本身通常是非常難以編程的,尤其設計I/O的部分。
因為這非常的細節、非常瑣碎,程序員在讀寫文件時大概率不想關心要讀寫的數據到底保存在磁盤的哪個盤面、哪個柱面、哪個扇區上,也不想關心該使用什么樣的機器指令可以控制磁盤的讀寫、怎樣平衡好讀寫速率與磁盤壽命等等,你需要的是兩個read/write函數就能讀寫文件這種抽象概念(實際上從磁盤的角度來說根本不存在文件這種概念)。
這時操作系統的作用就非常明顯了,操作系統對上層應用屏蔽了底層的這些細節,讓程序員可以將注意力放在自己的領域上。
因此,從這個角度看操作系統更像是一個細節屏蔽者,它提供的一個重要的功能就是:抽象,Abstraction。
好啦,關于這個話題今天就聊到這里,希望對大家理解操作系統有所幫助。
歷史好文:
在 4G 內存的機器上,申請 8G 內存會怎么樣?
鍵盤敲入 A 字母時,操作系統期間發生了什么...
真棒!20 張圖揭開內存管理的迷霧,瞬間豁然開朗
進程和線程基礎知識全家桶,30 張圖一套帶走
多個線程為了同個資源打起架來了,該如何讓他們安分?
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
10824瀏覽量
211138 -
計算機
+關注
關注
19文章
7418瀏覽量
87712 -
操作系統
+關注
關注
37文章
6737瀏覽量
123190 -
分配器
+關注
關注
0文章
193瀏覽量
25726 -
程序
+關注
關注
116文章
3775瀏覽量
80846
原文標題:為什么計算機需要操作系統?
文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論