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