作業系統 乙個老漢的無聲告白

2021-09-01 12:39:33 字數 1868 閱讀 2797

老夫生於上世紀五十年代,作為八零後的大叔,九零後的老伯,同時也是你們動輒就要重灌的作業系統,我的學名是「計算機管理控制程式」,英譯「operating system」,小老弟們常喊我「os」。雖說是老弟,目的卻都不怎麼單純,大部分人只想玩我,剩下一小撮人卻鍾愛探索我的身體,他們沉迷於當下,但真正願意了解我過去的所剩無幾。今兒個趁機會給你們介紹一下我的過去。

在我幼年時期,雖然跟我打交道的絕大部分都是精英程式設計師,但做的事還是很基礎的,想執行一段程式必須先把**寫到卡片上,塞到我身體裡,開啟開關,等我對資料進行計算,計算完畢後再把卡片卸下來,這才把控制權交給下乙個人,這就叫做「人工操作方式」。但是很明顯,我的處理能力是有目共睹的,本來幾秒鐘就能處理完的作業,偏偏人工操作就等了幾分鐘,不僅我心急,後面排隊的人也很容易跟他幹架,可如果把浪費的時間用來處理其它作業,效率一定會蹭蹭的往**。

為了解決等待人工操作的問題,絕頂聰明的我想到了乙個好方法,首先準備乙個磁帶作為儲存裝置,程式設計師將作業聚在一起塞給我,然後我成批的將作業讀入磁帶,這時候程式設計師們就可以走開做別的事了。showtime!接下來只需依次將作業裝入記憶體,計算資料並輸出結果即可。因我引以為傲的處理能力自然而然的就省下了等待人工操作的時間。

雖然有了批量處理的能力,但還是有很大的缺陷,因為我一次只能執行乙個作業,所以作業執行時是獨佔我所有資源的。這意味著當我進行i/o時,我的cpu是無事可做的,非常浪費資源,如果讓空閒的cpu去處理其它作業,理論上就能做到同時處理兩個作業了。

說幹就幹,接下來我進行了一些改造,目的就是「誰閒給誰活幹」——當乙個作業在使用cpu時,另乙個作業可以進行i/o,反之亦然。這樣不僅實現了多個作業的同時處理,還提高了老夫的資源利用率和吞吐能力。與此同時,我不再嚴格按照順序裝載作業,而是由我的作業排程程式負責分配作業的裝載,並由程序排程程式分配cpu,這樣權責分明,更有利於日後排程策略的優化和調整。

現在的作業已經不同以往,不再獨佔全機,但它們卻面臨著共享cpu、記憶體、裝置等問題。有共享就會有資源歸屬權的衝突,既然可預見到衝突就得提前預防,怎麼預防呢?這就需要有專門的模組來管理規避由共享產生的衝突問題,比如cpu管理、記憶體管理、裝置管理等,這些模組是我的靈魂,也是以後主要圍繞的發展方向。

雖然比起單道時期的我效能得到極大提公升,但人嘛畢竟是不知足的,機器也一樣。我的平均周轉時間還有很大的改善空間,周轉時間呢,是指從作業提交給系統到執行完畢所花費的時間,而平均周轉時間是指「所有作業的時間總和與作業總數的比值」,平均周轉時間越小意味著效能越高。減少該時間最有效的方式就是調整排程策略,讓所有作業盡可能快的執行完畢,排程策略相對複雜,以後的章節再給大家講解。除平均周轉時間外,與使用者互動能力的提公升也是我的重中之重,現在的我只能同時與乙個程式設計師進行交流,但這是遠遠不夠的,要和人類長期打交道,他們的滿意度才是我邁向成功的最高準則。

為解決人類強烈的互動慾望,努力修煉的我終於練就了一套絕世武功——時間片輪轉法。這是一套極強的掌法,使用者可以通過若干個終端連線到我這裡,我按一定時間間隔輪流的為各個終端服務,由於我極快的處理速度,使用者完全無法感知我做了什麼手腳,以至於他們認為我只為他們本人服務,而現在每天打遊戲的你仍然在走著我的套路/滑稽,正所謂「天下武功唯快不破」,而這種戲弄你們的感覺讓我奇爽無比。

如果說分時的我一定要有缺陷的話,那麼在某些場景下公平的分時就是我的缺陷。剛才講到分時是用時間片輪轉**流的為每個使用者服務,雖能誆得了小白,但在高精尖領域不太適用,比如航空航天、海底探測,絲毫的處理延遲可能會導致無法挽回的後果,想要解決延遲,時間片就不能過於均衡,優先順序高的要先執行,但總執行優先順序高的又會導致低權重的一直得不到執行,或是兩個同樣高優先順序的作業因互搶資源發生死鎖,聽起來很複雜吧,但這就是排程策略的藝術之處。不過我一時半會也解釋不清楚,要不就先到這裡吧,我要關機了,以下是我為你們整理的思維導圖,拜拜。

開發乙個作業系統(一)

筆者今年大三,來自沙坡村男子技術學院,在10月初開始打算自己製作乙個作業系統,最開始理由很簡單,自己想做乙個能夠運用最高效的 實現軟硬體的結合的programmer,再加之後來班主任評獎學金時候,覺得acm校賽的一等獎能比自己辛苦5個月參加的iot比賽的國獎更加有力,於是也更加堅定了製作屬於自己os...

作業系統(一)

1.01 歷史 1.02 分類 作業系統 桌面作業系統 redhat fedora slackware ubuntu debian suse linux centos 伺服器作業系統 linux ubuntu deepin startos mint debain suse redhat centos...

作業系統(一)

1 單道批處理系統 batch processing system 2 多道批處理系統 multiprogrammed batch processing system 3 分時系統 time sharing system 程序控制 為作業建立程序 撤銷已結束的程序 控制程序狀態轉換。程序同步 為多個...