老夫生於上世紀五十年代,做爲八零後的大叔,九零後的老伯,同時也是大家動輒就要重裝的操做系統,個人學名是「計算機管理控制程序」,英譯「operating system」,小老弟們常喊我「OS」。雖然說是老弟,目的卻都不怎麼單純,大部分人只想玩我,剩下一小撮人卻鍾愛探索個人身體,他們沉迷於當下,但真正願意瞭解我過去的所剩無幾。今兒個趁機會給大家介紹一下個人過去。
人工操做
在我幼年時期,雖然跟我打交道的絕大部分都是精英程序員,但作的事仍是很基礎的,想執行一段程序必須先把代碼寫到卡片上,塞到我身體裏,打開開關,等我對數據進行計算,計算完畢後再把卡片卸下來,這才把控制權交給下一我的,這就叫作「人工操做方式」。可是很明顯,個人處理能力是有目共睹的,原本幾秒鐘就能處理完的做業,恰恰人工操做就等了幾分鐘,不只我心急,後面排隊的人也很容易跟他幹架,可若是把浪費的時間用來處理其它做業,效率必定會蹭蹭的往上漲。
單道批處理系統
爲了解決等待人工操做的問題,絕頂聰明的我想到了一個好方法,首先準備一個磁帶做爲存儲設備,程序員將做業聚在一塊兒塞給我,而後我成批的將做業讀入磁帶,這時候程序員們就能夠走開作別的事了。showtime!接下來只需依次將做業裝入內存,計算數據並輸出結果便可。因我引覺得傲的處理能力天然而然的就省下了等待人工操做的時間。
雖然有了批量處理的能力,但仍是有很大的缺陷,由於我一次只能執行一個做業,因此做業執行時是獨佔我全部資源的。這意味着當我進行I/O時,個人CPU是無事可作的,很是浪費資源,若是讓空閒的CPU去處理其它做業,理論上就能作到同時處理兩個做業了。
多道批處理系統
說幹就幹,接下來我進行了一些改造,目的就是「誰閒給誰活幹」——當一個做業在使用CPU時,另外一個做業能夠進行I/O,反之亦然。這樣不只實現了多個做業的同時處理,還提升了老夫的資源利用率和吞吐能力。與此同時,我再也不嚴格按照順序裝載做業,而是由個人做業調度程序負責分配做業的裝載,並由進程調度程序分配CPU,這樣權責分明,更有利於往後調度策略的優化和調整。
如今的做業已經不一樣以往,再也不獨佔全機,但它們卻面臨着共享CPU、內存、設備等問題。有共享就會有資源歸屬權的衝突,既然可預見到衝突就得提早預防,怎麼預防呢?這就須要有專門的模塊來管理規避由共享產生的衝突問題,好比CPU管理、內存管理、設備管理等,這些模塊是個人靈魂,也是之後主要圍繞的發展方向。
雖然比起單道時期的我性能獲得極大提高,但人嘛畢竟是不滿足的,機器也同樣。個人平均週轉時間還有很大的改善空間,週轉時間呢,是指從做業提交給系統到執行完畢所花費的時間,而平均週轉時間是指「全部做業的時間總和與做業總數的比值」,平均週轉時間越小意味着性能越高。減小該時間最有效的方式就是調整調度策略,讓全部做業儘量快的執行完畢,調度策略相對複雜,之後的章節再給你們講解。除平均週轉時間外,與用戶交互能力的提高也是個人重中之重,如今的我只能同時與一個程序員進行交流,但這是遠遠不夠的,要和人類長期打交道,他們的滿意度纔是我邁向成功的最高準則。
分時操做系統
爲解決人類強烈的交互慾望,努力修煉的我終於練就了一套絕世武功——時間片輪轉法。這是一套極強的掌法,用戶能夠經過若干個終端鏈接到我這裏,我按必定時間間隔輪流的爲各個終端服務,因爲我極快的處理速度,用戶徹底沒法感知我作了什麼手腳,以致於他們認爲我只爲他們本人服務,而如今天天打遊戲的你仍然在走着個人套路/滑稽,正所謂「天下武功惟快不破」,而這種戲弄大家的感受讓我奇爽無比。
實時操做系統
若是說分時的我必定要有缺陷的話,那麼在某些場景下公平的分時就是個人缺陷。剛纔講到分時是用時間片輪轉法輪流的爲每一個用戶服務,雖能誆得了小白,但在高精尖領域不太適用,好比航空航天、海底探測,絲毫的處理延遲可能會致使沒法挽回的後果,想要解決延遲,時間片就不能過於均衡,優先級高的要先執行,但總執行優先級高的又會致使低權重的一直得不到執行,或是兩個一樣高優先級的做業因互搶資源發生死鎖,聽起來很複雜吧,但這就是調度策略的藝術之處。不過我一時半會也解釋不清楚,要不就先到這裏吧,我要關機了,如下是我爲大家整理的思惟導圖,拜拜。