優(yōu)先級
1.什么是優(yōu)先級
優(yōu)先級是指計算機分時操作系統(tǒng)在處理多個作業(yè)程序時,決定各個作業(yè)程序接受系統(tǒng)資源的優(yōu)先等級的參數(shù)。
2.優(yōu)先級的內(nèi)容
邏輯運算符中,邏輯非運算符(?。┖退械膯文窟\算符同級,高于雙目的算術(shù)運算符、關(guān)系運算符、邏輯運算符與(&)和邏輯運算符或(‖);與運算高于或運算,它們都低于算數(shù)運算符和關(guān)系運算符。
各個作業(yè)在輸入計算機之前,都要按一定的要求對它指定優(yōu)先級。例如要按程序的性質(zhì)或其長度,或是按作業(yè)的來源等,指定其優(yōu)先級。然后計算機根據(jù)各作業(yè)程序優(yōu)先級的高低,來決定處理各程序的先后次序。甚至在處理過程中,還能允許優(yōu)先級較高的程序中斷優(yōu)先級較低的程序。進程是有優(yōu)先級的。如果即將被運行的進程的優(yōu)先級比正在運行的進程的優(yōu)先級高,則系統(tǒng)可以強行剝奪正在運行的進程的CPU,讓優(yōu)先級高的進程先運行。
高優(yōu)先級任務(wù)需要等待低優(yōu)先級任務(wù)釋放資源,而低優(yōu)先級任務(wù)又正在等待中等優(yōu)先級任務(wù)的現(xiàn)象叫做優(yōu)先級反轉(zhuǎn)。 此時高優(yōu)先級任務(wù)和中等優(yōu)先級任務(wù)之間沒有任何共享資源但執(zhí)行順序卻發(fā)生了倒置,這種情況稱為優(yōu)先級反轉(zhuǎn),而高優(yōu)先級任務(wù)因為等待低優(yōu)先級任務(wù)釋放資源而阻塞的情況則不稱為優(yōu)先級反轉(zhuǎn)。
3.優(yōu)先級的反轉(zhuǎn)
兩種經(jīng)典的防止反轉(zhuǎn)的方法:
優(yōu)先級繼承策略(Priority inheritance):繼承現(xiàn)有被阻塞任務(wù)的最高優(yōu)先級作為其優(yōu)先級,任務(wù)退出臨界區(qū),恢復(fù)初始優(yōu)先級。
優(yōu)先級天花板策略(Priority ceilings): 優(yōu)先級天花板是指將申請(占有)某資源的任務(wù)的優(yōu)先級提升到可能訪問該資源的所有任務(wù)中最高優(yōu)先級任務(wù)的優(yōu)先級.(這個優(yōu)先級稱為該資源的優(yōu)先級天花板) 。
優(yōu)先級繼承策略對任務(wù)執(zhí)行流程的影響相對較小,因為只有當高優(yōu)先級任務(wù)申請已被低優(yōu)先級任務(wù)占有的臨界資源這一事實發(fā)生時,才抬升低優(yōu)先級任務(wù)的優(yōu)先級。而天花板策略是誰占有就直接升到最高。