cpu的虛擬化(下)———— 調度
前言
前兩篇介紹了進程與上下文,而這篇介紹的對象是調度器,因為我也不懂調度器的原因,所以,這篇筆記只談調度器的工作過程,不涉及調度器的具體實現。筆記中若有錯漏,望不吝指正。
調度器的一天
在一個清涼的午后,job飯館(CPU)來了一群氣勢洶洶的餓漢(進程),店小二(調度器)立馬為這些不速之客安排飯桌,可難為人的是這家店只有一張桌子,這下店小二不知如何是好了,店長這時出來給小二出了個主意,讓這些餓漢按先來后到的順序進餐(調度方式),這樣以來每個人都可以吃到飯。小二覺得這是一個好主意,便膽戰心驚去與他們商量,一聊后發現這些人雖然看起來兇兇的,但極好交流。一問后得知,原來他們只是被繁忙的工作折騰壞了身體,小二心想原來是同道??! 隨后小二便張羅了起來。
可是,漸漸的,小二發現了不對的地方,一個是有的客人吃飯極快(運行時間短的進程),而有的吃飯極慢(運行時間長的進程)。另一個是有的客人吃飯就吃飯,他竟然還用手機繼續工作(等待外部資源),小二心中頓時便五味雜陳,何至于斯!心情平復之后,小二發現了一個問題,這些占用餐桌而去用手機的人不是在浪費資源嗎?后面還有那么多的客人等著呢。這是聰明的店長再次現身了,他告訴小二,對于這些吃飯的時候工作的人,你就把他拎到一邊,讓后面的客人用餐。小二茅塞頓開,心想不愧能是做店長的人。在之后,對于那些在吃飯過程中做其他事的人,小二就把他們拎到一邊,同時也把他們未吃完的菜保存好(保存上下文),等他們做完其他事之后,再讓他們去排隊。就這樣,在job飯店中出現了兩條隊伍:一條是用餐的(就緒隊列),另一條是中途做其他事的(阻塞隊列)。
最后,我要說明的是在以上的例子中只是對調度器的工作過程做了一個簡陋的類比,有許多復雜的部分被隱藏了。

浙公網安備 33010602011771號