設(shè)置
  • 日夜間
    隨系統(tǒng)
    淺色
    深色
  • 主題色

很久很久以前,有一臺神奇的機器???

編程技術(shù)宇宙 2022/11/20 17:05:06 責(zé)編:子非

本文來自微信公眾號:編程技術(shù)宇宙 (ID:xuanyuancoding),作者:軒轅之風(fēng) O

計算機

很久很久以前,有一臺機器,體型巨大,每秒鐘可以進行幾千次的加法運算,名震一時,人類給它取了個名字:計算機。

除了加法,它還能計算平方、立方、正弦、余弦,比人類的大腦算得快多了。

許多程序慕名而來,想在它上面運行一下,體會這飛一般的感覺。

“來來來,排好隊,一個一個來”,計算機的管理員說到。

眾程序挨個排好隊,等待管理員傳喚。

執(zhí)行完一個,管理員再將其取出,換上下一個開始執(zhí)行。

久而久之,程序們紛紛抱怨:排隊十分鐘,執(zhí)行三秒鐘。人類管理員太慢了,時間都用在排隊上了,能不能讓計算機自動完成程序切換,不要手動切換?

人工操作的速度比起計算機實在是慢太多了,人機矛盾日益凸顯,人類決定對機器重新進行設(shè)計,并且開發(fā)了一個控制程序,在它的指揮下,可以批量執(zhí)行程序,自動實現(xiàn)切換,不用再需要人工介入了,效率提高了不少。

多道程序處理

慕名而來的程序越來越多了,等待執(zhí)行的隊伍排的越來越長。

有些程序等的不耐煩了,詢問控制程序:“大哥,你看前面那家伙在做輸入輸出,CPU 給空出來了,一時半會兒用不上,這不是浪費嗎,要不叫下一個上去執(zhí)行吧”

控制程序皺著眉頭說到:“那怎么行,前面程序執(zhí)行的數(shù)據(jù)都在內(nèi)存里放著了,再放程序進去,要是弄壞了誰負責(zé)?再說 CPU 只有一個,前面的程序忙完輸入輸出回來了又該如何處理?”

大家一時語塞,誰也給不出主意,紛紛嘆氣,只好作罷,繼續(xù)等待。

不過聰明的人類倒是發(fā)現(xiàn)了這問題:讓一個程序獨占計算機確實浪費資源,執(zhí)行輸入輸出的時候,CPU 就空著了,執(zhí)行計算操作的時候,輸入輸出設(shè)備又閑著了,總有一個閑著。

于是人類又重新設(shè)計了計算機,并開發(fā)了新版的控制程序,這一次,允許多個程序同時進入計算機執(zhí)行了。

如果程序 A 執(zhí)行輸入輸出,就把 CPU 空出來讓給另一個程序 B 執(zhí)行,一會兒 B 再執(zhí)行輸入輸出,再把 CPU 分給 A 執(zhí)行,彼此交替,這樣一來就不會浪費了!

時間分片

不過沒多久,又出現(xiàn)了新的問題。

這一天,其他程序都在排隊等待控制程序翻牌子,可左等右等也不見傳喚,眾程序急了,質(zhì)問控制程序,控制程序大倒苦水:“前面那個家伙寫了個死循環(huán),死活結(jié)束不了啊!”

聽他這么一說,眾程序都怒了。

“怎么能這樣,這也太自私了”

“你這控制程序也不管管,要你有何用?”

“趕緊想辦法啊!”

“我也沒辦法,他不執(zhí)行輸入輸出,我也拿不到 CPU 的控制權(quán),拿他沒有辦法啊”,控制程序嘆氣說到。

眾程序七嘴八舌,吵的是不可開交。

敏感的人類又一次發(fā)現(xiàn)了這個問題,好一通研究,搞了一個叫“中斷”的技術(shù)出來:可以給 CPU 發(fā)送中斷信號,CPU 收到信號后,就得停下手頭的工作,轉(zhuǎn)而執(zhí)行控制程序處理中斷信號,這樣控制程序就有辦法獲得控制權(quán)了!

為了能夠讓控制程序及時獲得控制權(quán),人類搞了一個中斷源,周期性的給 CPU 發(fā)送中斷信號,并把這叫做時鐘中斷。

升級后的控制程序又上崗開始工作了,眾程序聞風(fēng)而來。

“大哥,聽說你又升級了,這一次改了啥,可以搞定死循環(huán)的程序嗎?”,一個程序問道。

“大家排好隊,聽好了,現(xiàn)在按照時間片來劃分了,每個程序一次只有一小段時間,時間一用完我就得請他出來,讓別的程序來了”

“那要是時間到了,我還沒執(zhí)行完可咋辦呢?”

“大家不用擔(dān)心,都是輪著來的,等下一輪又有機會執(zhí)行了”,控制程序解釋道。

“我們這么多程序,輪到下一輪,那不得等好久”

“這臺計算機從里到外都升級過了,別看它個頭變小了,里面都是大規(guī)模集成電路了,執(zhí)行速度可比之前的大塊頭快了不少,每秒能執(zhí)行幾十萬次運算呢~你們還沒感覺到就轉(zhuǎn)了一圈回來了”

眾程序聽后一片嘩然,“幾十萬,我的乖乖!這也太快了,快讓我們體驗一下”

說完,大家都摩拳擦掌排好隊,準備登上這臺升級后的計算機運行。

果不其然,這升級后的計算機跑起來那叫一個快,有了時鐘中斷,控制程序總能按時獲得 CPU 的控制權(quán),在背后默默控制著程序們的運行,眾程序絲毫感覺不到自己曾經(jīng)停止過。

狀態(tài)

不過,計算機速度雖然變快了,但慕名而來的程序也更多了,這些程序的功能也越來越復(fù)雜。

漸漸的,程序們不再滿足于現(xiàn)狀,開始出現(xiàn)了新的問題。

有些程序在 sleep,有些程序在同步等待,白白浪費了時間片,大伙向控制程序提出了抗議,控制程序卻說對待所有程序要一視同仁,要講公平,大伙當(dāng)面不敢說,背后卻罵他不作為。

控制程序把這個問題反饋給了人類,聰明的工程師又開始琢磨:所有程序都排成一個隊來輪轉(zhuǎn)確實有些欠妥,得給這些程序劃分成不同的狀態(tài),只有準備就緒的程序才有資格執(zhí)行。

人類一口氣搞了好些個任務(wù)狀態(tài)出來,創(chuàng)建、就緒、運行、阻塞、終止???

控制程序一下變得復(fù)雜起來,原來只要挨個傳喚執(zhí)行就行,現(xiàn)在還得記錄他們的狀態(tài),選擇合適狀態(tài)的程序來運行,工作量增加了不少。

優(yōu)先級

本以為這么一改,大家就會滿意了,沒想到有幾個老油條私下找到控制程序:“老哥,咱們幾個程序?qū)崟r性要求比較高,能不能給咱們整個 VIP 隊列,別跟他們一起排,優(yōu)先執(zhí)行我們?”

控制程序一聽臉都綠了,斷然拒絕。

其中有一個家伙說到:“我們幾個程序可是非常重要的,要是延誤了時間,你能擔(dān)待的起嗎?”

沒辦法,控制程序只能再次反饋給人類。工程師一想,倒也是,所有程序都是同樣的優(yōu)先級,確實太草率了。

工程師再一次升級了控制程序,這一次,不僅劃分了任務(wù)狀態(tài),還設(shè)定了不同的優(yōu)先級,劃分了不同的隊伍,讓程序們?nèi)ジ髯詢?yōu)先級所在的隊伍排隊,優(yōu)先執(zhí)行高優(yōu)先級的程序。

不僅如此,如果有高優(yōu)先級的程序出現(xiàn),即使低優(yōu)先級程序的時間片還沒用完,也會被剝奪執(zhí)行機會,工程師把這叫做搶占。

不過,這一次的改動,控制程序把大家伙都蒙在了鼓里,要是知道他們還被劃分了三六九等,估計得鬧翻天。

經(jīng)過這一輪改動,大家總算過了一段清靜日子。

多核時代

硬件技術(shù)發(fā)展的太快了,有一天,人類激動的告訴控制程序:現(xiàn)在 CPU 里面有多個核心了,可以真正同時執(zhí)行多個程序了,我們決定再次對你升級!

可對于控制程序來說,這可不是什么好消息,本來一個核的程序調(diào)度管理已經(jīng)讓他夠忙活的了,現(xiàn)在來了多個核,這調(diào)度管理任務(wù)就更復(fù)雜了。原來只是多個優(yōu)先級的隊列,現(xiàn)在每個核都得搞一套,真是想想都頭大了。

人類開始對控制程序大動手術(shù),把它變得越來越復(fù)雜,功能也越來越強大。

最后,還給他取了一個新的名字:操作系統(tǒng)

PS:故事歸故事,操作系統(tǒng)這個名字可不是多核以后才出現(xiàn)的哦。

另外,現(xiàn)代操作系統(tǒng)更加復(fù)雜,狀態(tài)、搶占、優(yōu)先級、動態(tài)優(yōu)先級、動態(tài)時間片、親和性各種因素交織在一起,綜合調(diào)度,還有多種調(diào)度算法并存。

廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。

相關(guān)文章

關(guān)鍵詞:計算機

軟媒旗下網(wǎng)站: IT之家 最會買 - 返利返現(xiàn)優(yōu)惠券 iPhone之家 Win7之家 Win10之家 Win11之家

軟媒旗下軟件: 軟媒手機APP應(yīng)用 魔方 最會買 要知