作業系統之 程序排程

2021-08-18 03:45:06 字數 1480 閱讀 6387

*程序排程的目的:

極小化平均響應時間,極大化吞吐量。

*程式使用cpu的模式:有何特點:

!程式大部分時間在cpu上執行  -》cpu導向或計算密集型程式。運用於->科學計算或天文計算

!程式大部分在進行輸入輸出操作-》io導向或輸入輸出密集型程式。->運用於人機互動,遊戲。

*比較短任務優先和優先順序排程演算法:

短任務stcf:執行時間更短的任務擁有更高的優先順序(容易出現飢餓問題和難以判斷任務具體執行時間長短)

優先順序排程:給每乙個程序賦予優先順序。可避免飢餓問題(通過動態調節優先順序可避免)該方法缺點是不能保證程式的響應時間

*保證排程和時間片排程的異同(待解決):

都致力於讓每乙個程式都擁有公平的資源使用

保證排程是讓n個程式執行1/n的時間,而時間片則是每個程式執行x 的時間.(覺得這個答案不好)

*優先順序倒掛:

!低任務持有乙個高任務優先順序所需要的共享資源。造成兩個任務的優先順序倒掛,此時若有乙個並不需要用到該公共資源的中優先順序任務,則會獲得cpu的控制權,導致高優先順序任務被臨界區外的低階任務阻塞。

!如果高優先順序倒掛時不是阻塞狀態,而是(迴圈)繁忙態,永遠無法獲得所需資源。(低優先順序程序使用不了cpu,釋放不出來共享資源)

!最麻煩的事可想而知,造成系統響應時間加長

……-》預防倒掛措施:

-----引入中斷禁止:設立可搶占優先順序(一般程式執行時的優先順序)和中斷禁止優先順序(執行於臨界區的優先順序)。我的理解:給低優先順序設定成禁止中斷優先順序,可避免中優先順序任務搶占資源。該方法適用於嵌入式系統。需要將臨界區 設定的很短。

------單一共享標誌鎖(旋鎖):多cpu中無法使用禁止中斷,引入此解決策略(填坑)。

-------優先順序上限:避免低優先順序持有資源就行了-》讓共享的臨界區有自己的優先順序,讓訪問它的程序獲得該優先順序。例項:mutex系統程序(理解成乙個保護臨界區的先)中,乙個程式進入mutex的保護區,獲得該資源的優先順序,其他程序進來時自動獲得低優先順序。(如果後來的程序具有比mutex保護程式更高的優先順序,還是容易發生倒掛)

-------優先順序繼承:持有資源的低優先暫時繼承該高優先順序的級別,整完之後換回去。

*程序排程中的適度性

響應時間和期望性要相匹配,例如:使用者期待1s解決,我們給他設計成0.1s就可以解決。

過多的去縮減意義並沒有那麼大。(反而會增加系統設計的難度且使用者還感受不到你的設計的優點)

*針對具體的商業作業系統分析其程序排程策略

**別人的部落格

作業系統之程序排程

世界上很多問題都是跟資源分配和任務排程有關,而學會了作業系統的程序排程演算法,我覺得也會給你在做事的時候帶來一些啟發吧。在現代的作業系統中,有很多程序在記憶體中。有的正在執行,有的正等待某個事件的發生 比如等待使用者敲擊鍵盤 那麼作業系統作為乙個大佬,就必須管理這些程序,讓它們按照規則來,不能亂了套...

作業系統之程序排程

程序排程是指計算機通過決策決定哪個就緒程序可以獲得cpu使用權 處理器一旦分配給某個程序,就讓該程序一直使用下去 排程程式不以任何原因搶占正在被使用的處理器 直到程序完成工作或因為i0阻塞才會讓出處理器 允許排程程式以一定的策略暫停當前執行的程序 儲存好舊程序的上下文資訊,分配處理器給新程序 排程程...

作業系統之程序排程

程序排程是指計算機通過決策決定哪個就緒程序可以獲得cpu使用權 程序的排程機制 就緒佇列的排隊機制 選擇執行程序的委派機制 新老程序的上下文切換機制 程序的排程 非搶占式的排程 處理器一旦分配給某個程序,就讓該程序一直使用下去 排程程式不以任何原因搶占正在被使用的處理器 直到程序完成工作或因為i0阻...