程序排程:作業系統規定下的程序選取模式
面臨問題:多工選擇問題
多工作業系統就是能同時併發地互動執行多個程序的作業系統,在單處理器機器上這會產生多個程序在同時執行的幻覺,在多處理器機器上,這會使多個程序在不同的處理機上真正同時、並行地執行。無論在單處理器或者多處理器機器上,多工作業系統都能使多個程序處於堵塞或者睡眠狀態,也就是說,實際上不被投入執行,直到工作確實就緒。
多工系統可以劃分為兩類:非搶占式多工和搶占式多工。linux提供了搶占式的多工。
策略選擇:
一般選擇任務方式可以分為:當乙個程序正在執行時,系統可以基於某種原則,剝奪已分配給它的處理機,將之分配給其它程序。剝奪原則有:優先權原則、短程序優先原則、時間片原則。
優先順序:每個任務程序都有自己的進入等級,高者先行進入
時間片:根據基本時間單位來選擇程序
通常linux將他們進行結合運用
演算法提供:
先進先出演算法:演算法總是把處理機分配給最先進入就緒佇列的程序,乙個程序一旦分得處理機,便一直執行下去,直到該程序完成或阻塞時,才釋放處理機。
輪轉法:在分時系統中,都採用時間片輪轉法。簡單輪轉法:系統將所有就緒程序按fifo規則排隊,按一定的時間間隔把處理機分配給佇列中的程序。這樣,就緒佇列中所有程序均可獲得乙個時間片的處理機而執行。多級佇列方法:將系統中所有程序分成若干類,每類為一級。
linux通常使用公平性演算法:
cfs演算法:需要選擇下乙個執行程序時,它會挑乙個具有最小vruntime的程序,這其實就是csf排程演算法的核心:選擇具有最小、vruntime的任務。那麼剩下的內容我們就來討論到底是如何實現選擇具有最小、vruntime值的程序。linux中,紅黑樹稱為rbtree,它是乙個自平衡二叉搜尋樹,紅黑樹是一種以樹節點形式儲存的資料,這些資料都會對應乙個鍵值,我們可以通過這些鍵值來快速檢索節點上的資料
選擇結構為紅黑樹,節點為最小節點
程序上下文切換:在作業系統中,cpu切換到另乙個程序需要儲存當前程序的狀態並恢復另乙個程序的狀態:當前執行任務轉為就緒(或者掛起、刪除)狀態,另乙個被選定的就緒任務成為當前任務。上下文切換包括儲存當前任務的執行環境,恢復將要執行任務的執行環境。
用程序的pcb也稱為pcb,即任務控制塊表示,它包括程序狀態,cpu暫存器的值等。
通常通過執行乙個狀態儲存來儲存cpu當前狀態,然後執行乙個狀態恢復重新開始執行。
在三種情況下可能會發生上下文切換:中斷處理,多工處理,使用者態切換。在中斷處理中,其他程式」打斷」了當前正在執行的程式。當cpu接收到中斷請求時,會在正在執行的程式和發起中斷請求的程式之間進行一次上下文切換。在多工處理中,cpu會在不同程式之間來回切換,每個程式都有相應的處理時間片,cpu在兩個時間片的間隔中進行上下文切換。對於一些作業系統,當進行使用者態切換時也會進行一次上下文切換,雖然這不是必須的。
linux的實時排程演算法提供了―種軟實時工作方式,軟實時的含義是,核心排程程序,盡力使程序在它的限定時間到來前執行,但核心不保證總能滿足這些程序的要求。相反,硬實時系統保證在一定條件下,可以滿足任何排程的要求。linux對於實時任務的排程不做任何保證。
與排程相關的系統呼叫:
1與排程策略和優先順序相關的系統呼叫
2 與處理器繫結有關的系統呼叫
3 放棄處理器時間
對於我們關於程序排程,基本的思想就是怎麼有限的資源盡最大能力利用,使用的手段有助於我們解決問題,程序排程的方式也是計算機作業系統不可避免的問題,我們可以假設cpu就是我們的日常生活中的資金,怎樣更好的支出與收入直接影響到我們的日常生活,程序排程的方向我認為現在在於擴大cpu的總操作量的同時,引入乙個審核機構,進行判斷程序的需求度與可以利用資源的最小空間,把不需要恢復或者作用不大的部分給予上下文恢復與儲存,或者對程序間相似部分進行替換即可,可以引入更小的操作單位,向執行緒,在程序共同應用的時候,將其保留乙份提供給2個程序來達到共享的目的。
Linux核心分析 讀書筆記 (第四章)
排程程式負責決定將哪個程序投入執行,何時執行以及執行多長時間。程序排程程式可看做在可執行態程序之間分配有限的處理器時間資源的核心子系統。只有通過排程程式的合理排程,系統資源才能最大限度地發揮作用,多程序才會有併發執行的效果。1.多工作業系統就是能同時併發地互動執行多個程序的作業系統。無論在單處理或者...
第四章 Linux核心模組
注 內容大多摘自 linux裝置驅動開發詳解 第2版 1.特點 2.模組程式結構 1 模組載入函式 一般需要 2 模組解除安裝函式 一般需要 3 模組許可證宣告 必須 4 模組引數 可選 5 模組匯出符號 可選 6 模組作者等資訊宣告 可選 3.模組的載入,解除安裝,檢視 4.printk函式 核心...
第四章 Linux核心模組
4.1 linux核心模組簡介 核心模組特點 1 模組本身不被編譯進核心映像中,從而控制核心的大小。2 模組被載入後,它跟核心中的其他部分完全一樣。核心載入命令 lsmod 核心解除安裝命令 rmmod 加強型核心載入函式 modprobe 優點 載入模組所以來的模組。模組之間的依賴關係可以在 li...