1. 程式人生 > >頁面置換、作業排程、程序排程小剖析

頁面置換、作業排程、程序排程小剖析

頁面置換、作業排程和程序排程他們之間有很多相似的地方,作業跟程序排程之間尤為相似,之前一直搞不清他們之間的區別跟聯絡,你是不是也跟我有一樣的感受呢?看完這篇文章或許會讓你對他們有更清晰的認識。


頁面置換演算法:

1,先進先出:淘汰最早進入cache的資訊塊。

2,最近最久未使用:淘汰近期使用頻率最低的資訊塊。

3,隨機替換:用隨機數發生器隨機產生一個資訊塊號,然後淘汰掉。

4:優化替換:此方法必須先執行一次程式,然後根據cache替換情況對接下來的資訊塊進行替換。

5:最佳置換:淘汰規則是將以後永遠不會用到或者最長時間不會用到的資訊塊淘汰掉。此方法能夠最大限度的減少缺頁率,但是這是一種理想的方法,現實是無法實現的,只能作為其他置換演算法的一個衡量標準。


作業排程:

1,先來先服務:按作業的到達時間進行排程,先到達先排程。

2,最短作業優先:優先執行所需時間最短的作業。

3,優先數:優先執行優先順序高的作業。

4,最高響應比優先:優先執行響應比高的作業。響應比=(等待時間+計算時間)/計算時間。


程序排程:

1,先進先出:跟作業排程的先來先服務差不多,先執行最先進入就緒佇列的程序。

2,最短優先:跟作業排程的短作業優先差不多,優先執行所需時間最短的程序。

3,最高響應比:跟作業排程的最高響應比差不多,優先執行響應比高的程序。響應比=(等待時間+要求服務的時間)/要求服務的時間。

4,優先順序:跟作業排程的優先順序演算法差不多,優先執行優先順序高的程序。

5:,時間片輪轉:按照先進先出的規則給程序分配時間片,時間片結束後不管有沒有執行完,都將執行下一程序。

看到這裡,大家會發現作業排程跟程序排程是如此的相似,那麼他們之間到底有什麼關係呢?一起看下面這張圖:


由上圖可以看出,作業排程跟程序排程是密切相關的,首先進行作業排程將使之進入就緒佇列,然後進行程序排程,或者程序執行完畢繼續下面的程序,或者掛起等待下一輪的排程。下面結合生活中的例子分析一下兩級排程。

第一級的作業排程是會將一批作業同時裝入記憶體,以淋浴公共澡堂為例,裡面可能只有1個水龍頭,但可以一次讓三四個人一起進去洗,因為洗澡的人並不是總要佔著水龍頭,只要相互錯開就行了。那麼澡堂就可以規定一次進三個人,三個洗完,再進三個。


第二級排程就是程序排程了,三個人同時用水龍頭,那這個水龍頭就相當於CPU,當然也可以多個水龍頭,那就是多處理器了。洗的過程中,三個人可能有的在搓澡,有的在幫別人搓澡,也有可能都打完香皂就等沖水了,那讓誰用水龍頭呢?一般就是排先後,先申請的先用原則,但也不一定,比如有一個人說給我十秒鐘衝一下就洗完了,那就是個短作業,不妨讓他先用,洗完他就走了,這樣大家的平均等待時間會縮短,也算是提高了效率;再就是有一個人可能在洗的過程中突然被洗髮水迷了眼,所以需要趕緊衝一下,這就是高優先順序的作業了,不同優先順序之間,先可著高優先順序的進行排程,這也是一種原則。所以總的來說,程序排程是在多個就緒程序中按一定的策略選出當前應執行的程序,合適與否,是按一定的策略遴選出來的。

我的理解大概就這些,不知道看完以後是不是對你有幫助,大家有什麼更好的理解希望不吝賜教!