作業系統原理 處理器排程

2021-07-04 16:21:12 字數 1640 閱讀 5881

1、    處理機按照層次被劃分為為**排程

**排程按照頻率從高到低依次被命名為低階排程,中級排程和高階排程

低階排程——又稱為程序排程,此種排程頻率最高.也是最基本的排程。就是cpu不再執行當前程序,而是執行乙個就緒態的程序

中級排程——又稱為交換排程,這種排程就是將記憶體中暫時不用的程序移至外存.把外存等待的程序調入記憶體

高階排程——又稱為作業排程.這種排程頻率最低。把等待執行的作業調入記憶體,並為它建立程序。

顯然,高階排程的目的是把作業(或者說程式)調入記憶體,建立程序執行。中級排程是把記憶體中暫時不執行的程序與外存中等待執行的程序交換,低階排程是把正在執行的程序停止,然後執行就緒等待執行的程序。

2、程序排程

程序排程非常頻繁,分析程序排程對處理器高效處理非常重要。程序排程會發生程序上下文切換,主要是把當前程序的資料以及執行狀態儲存(方便下次呼叫恢復到當前狀態),然後把等待執行的程序的資料放入相關暫存器(注意暫存器與記憶體區分),完成切換之後即可執行新調入的程序

排程演算法:

先來先服務————按照在鍊錶中的先後順序執行

優先順序排程————根據優先順序的高低執行。分為搶占式和非搶占式,搶占式就是如果佇列中加入了乙個新的高優先順序程序,則搶占當前程序進行執行。非搶占式是等待程序執行完之後,在等待執行的佇列中找到優先順序最高的來執行(不會被強制搶占)

時間片輪轉法————每個程序執行乙個時間片(大概10ms,具體根據系統而定),不管是否執行完立即切換程序,保證盡可能多的程序都能被執行

其他的演算法還有很多,在linux中,主要使用 優先順序排程+時間片輪轉法 來進行排程,這樣既可以保證重要的程序被優先執行(高優先順序任務一般比較重要),也可以保證盡可能多的程序被執行(cpu不會總是被高優先順序程序占用)

3、死鎖

死鎖:是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法繼續執行,此時稱系統處於死鎖狀態或系統產生了死鎖

舉個例子:兩個人(代表兩個程序)需要抄作業,a有本和筆卻沒有借到作業,而b借到了作業卻沒有本和筆,此時兩個人都在等著對方把自己需要的東西送過來。造成兩個人一直在等待而無法繼續執行,這就是死鎖狀態。

死鎖造成的四個條件:

1、互斥資源(多個程序都需要的資源)。就像例子中的本和筆、借來的作業

2、占有且申請條件。本身占有資源,為了繼續執行還需申請資源

3、不可搶占條件。不能強制的獲得自己需要申請的資源

4、環路條件。資源申請形成乙個環,造成阻塞

死鎖的避免:

1、資源最大分配。在執行之前盡可能獲得需要的全部資源

2、釋放已佔資源。在自己無法獲得需要申請資源的時候主動放棄已佔據資源

避免死鎖的經典——銀行家演算法

(1) 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客;

(2) 顧客可以分期貸款,但貸款的總數不能超過最大需求量;

(3) 當銀行家現有的資金不能滿足顧客尚需的貸款數額時,對顧客的貸款可推遲支付,但總能使顧客在有限的時間裡得到貸款;

(4) 當顧客得到所需的全部資金後,一定能在有限的時間裡歸還所有的資金.

對程序需求的每乙個資源進行模擬分配(滿足則分配給它,不滿足則不分配),在模擬分配完之後,進行檢驗(校驗的目的是確保程序獲得了它所需要的全部資源),如果滿足則執行模擬分配計畫,否則放棄計畫(可能有某乙個資源不足無法分配)

作業系統原理之處理器排程實驗

實驗目的與要求 在採用多道程式設計的系統中,往往有若干個程序同時處於就緒狀態。當就緒狀態程序個數大於處理器數時,就必須依照某種策略來決定哪些程序優先占用處理器。本實驗模擬在單處理器情況下處理器排程,幫助學生加深了解處理器排程的工作。二 實驗要求 1 實驗題目。2 程式中使用的資料結構及符號說明。3 ...

作業系統 處理器排程

1 cpu資源的時分復用 程序切換 cpu資源的當前占用者切換。處理器排程 排程程式 挑選就緒程序的核心函式。2 排程演算法 3 死鎖 死鎖是多個程序在爭奪資源的過程中造成的僵局。例如 a和b程序都需要資源s1和s2,當a獲得了s1,b獲得了s2,但是兩個人都不釋放獲得的資源,但是也都不能執行,這就...

作業系統 單處理器排程

長程排程 決定哪乙個程式可以進入系統中處理,控制系統併發度。記憶體和外存之間的排程,頻率低。中程排程 交換功能的一部分,提高記憶體利用率和系統吞吐量,記憶體和外存之間的排程,頻率中等。為了合理處理計算機軟硬體資源,作業系統進行處理器排程。主要的排程演算法有六種,其中fcfs spn無法保證及時接收和...