頁面置換、作業調度和進程調度他們之間有很多相似的地方,作業跟進程調度之間尤為相似,之前一直搞不清他們之間的區別跟聯系,你是不是也跟我有一樣的感受呢?看完這篇文章或許會讓你對他們有更清晰的認識。
頁面置換算法:
1,先進先出:淘汰最早進入cache的信息塊。
2,最近最久未使用:淘汰近期使用頻率最低的信息塊。
3,隨機替換:用隨機數發生器隨機產生一個信息塊號,然后淘汰掉。
4:優化替換:此方法必須先執行一次程序,然后根據cache替換情況對接下來的信息塊進行替換。
5:最佳置換:淘汰規則是將以后永遠不會用到或者最長時間不會用到的信息塊淘汰掉。此方法能夠最大限度的減少缺頁率,但是這是一種理想的方法,現實是無法實現的,只能作為其他置換算法的一個衡量標准。
作業調度:
1,先來先服務:按作業的到達時間進行調度,先到達先調度。
2,最短作業優先:優先執行所需時間最短的作業。
3,優先數:優先執行優先級高的作業。
4,最高響應比優先:優先執行響應比高的作業。響應比=(等待時間+計算時間)/計算時間。
進程調度:
1,先進先出:跟作業調度的先來先服務差不多,先執行最先進入就緒隊列的進程。
2,最短優先:跟作業調度的短作業優先差不多,優先執行所需時間最短的進程。
3,最高響應比:跟作業調度的最高響應比差不多,優先執行響應比高的進程。響應比=(等待時間+要求服務的時間)/要求服務的時間。
4,優先級:跟作業調度的優先級算法差不多,優先執行優先級高的進程。
5:,時間片輪轉:按照先進先出的規則給進程分配時間片,時間片結束后不管有沒有執行完,都將執行下一進程。
看到這里,大家會發現作業調度跟進程調度是如此的相似,那么他們之間到底有什么關系呢?一起看下面這張圖:
由上圖可以看出,作業調度跟進程調度是密切相關的,首先進行作業調度將使之進入就緒隊列,然后進行進程調度,或者進程執行完畢繼續下面的進程,或者掛起等待下一輪的調度。下面結合生活中的例子分析一下兩級調度。
第一級的作業調度是會將一批作業同時裝入內存,以淋浴公共澡堂為例,里面可能只有1個水龍頭,但可以一次讓三四個人一起進去洗,因為洗澡的人並不是總要占着水龍頭,只要相互差開就行了。那么澡堂就可以規定一次進三個人,這三個洗完,再進三個。
第二級調度就是進程調度了,三個人同時用水龍頭,那這個水龍頭就相當於CPU,當然也可以多個水龍頭,那就是多處理器了。洗的過程中,三個人可能有的在搓澡,有的在冥想也不一定,也有可能都就緒了等着沖水,那讓誰用水龍頭呢?最簡單就是排先后,先申請的先用原則,但也不一定,比如有一個人說我再簡單沖一下就洗完了,那就是個短作業,不妨讓他先洗,洗完他就走了,這樣大家的平均等待時間會縮短,也算是提高了效率;再就是有一個人可能在洗的過程中突然被肥皂迷了眼,所以需要趕緊沖一下,這就是高優先級的作業了,不同優先級之間,先可着高優先級的進行調度,這也是一種原則。所以總的來說,進程調度是在多個就緒進程中按一定的策略選出當前應執行的進程,合適與否,是按一定的策略遴選出來的。
我的理解大概就這些,不知道看完以后是不是對你有幫助,大家有什么更好的理解希望不吝賜教!