作業系統原理第六章(程序排程)

2021-08-20 17:29:05 字數 1733 閱讀 8358

一、排程/分派結構

排程:依照完全確定的策略將一批程序進行排序

分派:從就緒佇列中移出乙個程序並給它提供處理機的使用權

排程程式負責將乙個程序插入到就緒佇列中,並按一定原則保持佇列結構;分派程式將程序下從就緒佇列中移出並建立該程序執行的機器狀態。

二、程序排程的功能和排程準則

1.程序排程的功能:

記錄和保持系統中所有程序的有關情況和狀態特徵;

決定分配策略;

實施處理機的分配和**;

程序排程的時機:

程序完成其任務時;

在一次管理程式呼叫之後,該呼叫使現行程式暫時不能繼續執行時;

在一次出錯陷入之後,該陷入使現行程序在出錯處理時被掛起;

在分時系統中,當程序使用完規定的時間片,時鐘中斷使該程序讓出處理機時;

在採用可剝奪排程方式的系統中,當具有更優先順序的程序要處理機時。

2.程序排程準則:

cpu使用率:40%(輕負荷系統)-----90%(重負荷系統)

吞吐量:乙個時間單元內所完成的程序數量

3.排程方式:

非剝奪方式:若有更高優先順序的程序進入就緒佇列時,仍然讓正在執行的程序繼續執行,知道該程序完成或者進入「阻塞」「完成」狀態的時候,才把處理機分配給具有更高優先順序的程序;

可剝奪方式:若有更高優先順序的程序進入就緒佇列時,立即暫停正在執行的程序,把處理機分配給它;

可搶占策略:(u,v)標誌

u=1:該程序可搶占另一程序              u=0:該程序不可搶占另一程序

v=1:該程序可被另一程序搶占            v=0:該程序不可被另一程序搶占

三、典型排程演算法:

1.先來先服務排程:按照作業進入系統的時間先後次序來挑選作業,先進入系統的作業優先被執行

容易實現,效率不高

只考慮作業的等待時間,沒考慮作業的執行時間長短,不利於短作業

2.短作業優先排程:參考執行時間,選取執行時間最短的作業投入執行

容易實現,效率不高

忽視了作業的等待時間,乙個早來但是長的作業可能在長時間內得不到排程,容易出現資源「飢餓」現象。

3.響應比高者優先排程:排程作業時計算作業列表中每個作業的響應比,選擇響應比高的優先投入執行

等待時間相同,有利於短作業;執行時間相同,有利於等待時間很長的作業

4.優先數排程演算法:根據程序優先數,將cpu分配給最高的程序

程序優先數=靜態優先數+動態優先數

靜態優先數:程序建立時給定,整個程序執行期間不會變動

動態優先數:在程序執行期間可以改變

靜態優先數的確定:根據程序所需要的資源來計算;

基於程式執行時間的估計;

基於程序的型別。

動態優先數的確定:當程序使用cpu超過一定數值時,降低優先數;

當程序進行io操作時,增加優先數;

當程序等待時間超過一定數值時,增加優先數。

5.迴圈輪轉排程法:把所有就緒程序按先進先出原則排成佇列,新來的程序加到佇列末尾;程序以時間片q為單位輪流使用cpu,剛剛執行了乙個時間片的程序排到佇列末尾,等待下一輪排程;邏輯上是環形的。

優點:公平性(每個就緒程序獲得cpu的機會均等)

互動性(每個程序等待一定時間後就可以重新獲得cpu)

若時間片太大,互動性差,甚至退化為先進先出排程演算法;

若時間片太小,程序切換頻繁,系統開銷增加。

改進:時間片的大小可變(可變時間片輪轉排程法)

組織多個就緒佇列(多重時間片迴圈輪轉 )

作業系統 第六章 程序同步

實驗 經典同步問題之讀者寫者問題 關於前面討論過的共享記憶體問題,為了讓它能夠儲存buffersize個元素,我們修改其 如下。生產者 while true 消費者 while true 乍一看,消費者和生產者 都正確,但是當這兩段 併發執行的時候就有問題了。併發時,兩個程序會同時操作counter...

作業系統 第六章 同步

協作程序能與系統內的其他執行程序相互影響。協作程序或能直接共享邏輯位址空間 即 和資料 或能通過檔案或訊息來共享資料,然而共享資料的併發訪問可能導致資料的不一致 共享資料併發 並行訪問 例 有界緩衝 防止競爭條件方法 併發程序同步或互斥 互斥若能保證諸程序互斥進入關聯的臨界區,可實現對臨界資源的互斥...

作業系統概念第六章 同步

多個程序併發訪問和操作同一資料並且執行結果與訪問順序有關,稱為競爭條件。為防止出現競爭條件,需確保一次只有乙個程序可以運算元據,為此要求這些程序按照一定方式來進行同步。同步的解決方案1 互斥鎖 當乙個程序試圖獲取不可用的鎖時,它會阻塞,知道鎖被釋放。當有乙個程序在臨界區時,任何其他程序在進入臨界區時...