深入Linux核心架構筆記 程序管理與排程

2021-09-24 20:18:21 字數 847 閱讀 5661

概述

程序相關的基本概念

硬體實時程序有嚴格的時間限制,必須在可保證的時間範圍內得到處理,否則會有很嚴重的後果,請注意,這並不意味著所要求的時間範圍特別短,linux主流版本不支援硬實時處理

軟實時程序是硬實時程序的一種弱化形式,儘管仍然需要快速得到結果,但是稍微晚一點關係也不是很大,比如對cd機的寫入

普通程序:沒有特別的時間約束,但仍然可以根據重要性來分配優先順序

程序的生命週期

執行:此刻程序正在執行

等待 : 程序可以執行,但是沒有得到許可,因為cpu分配給另外乙個程序,排程器可以在未來的某次切換時選擇改程序

睡眠 : 程序正在睡眠,因為它正在等待乙個外部事件

終止 : 程式執行完成

殭屍 : 進行已經中止,但是其資料未從程序表刪除,附程序呼叫wait等系統呼叫後退出該狀態

程序執行狀態:使用者態和核心態,程序通常處於使用者態,只能訪問自身的資料,如果要訪問系統的功能和資料,則必須切換到核心態,主要的切換方式是系統呼叫,是程式主動要求的,還有另外一種方式是中斷,這個時候是自動觸發的,程式無法控制。

核心的搶占排程模型建立了乙個層次結構,用於判斷能否進行搶占:

a) 普通程序總是可以被搶占的,甚至是被其他程序搶占,這有助於實現良好的互動和低系統延遲.

b) 如果系統處於核心態正在處理系統呼叫,那麼系統的其他程序不能奪取其cpu時間,排程器等待系統呼叫執行結束才能選擇另外乙個程序執行,但是中斷可以中止系統呼叫

c) 中斷可以暫停使用者態和核心態的程序,因為中斷發生後要盡快處理

在核心2.5開發期間,加入了核心搶占的支援,在系統呼叫執行時也可以切換到另外的緊急程序。

深入Linux核心架構筆記 程序管理與排程2

程序表示 state 執行程序的狀態 task running 表示程序可以執行 task interruptiable 程序因為等待某種事件或者資源而睡眠,可以通過訊號喚醒 task uninterruptible 程序因為等待某種事件或者資源而睡眠,不能由訊號喚醒 task stopped 程序...

《深入Linux核心架構》讀書筆記

1.關於udev page.318 每當核心檢測到裝置時,都會建立乙個核心物件,並向使用者空間傳送乙個熱插拔訊息,該訊息包含了驅動程式為裝置分配的主從裝置號。udevd守護程序監聽該訊息,並根據訊息在 dev中建立對應的項,接下來就可以從使用者層訪問該裝置了。由於引入了udev機制,dev不再放置到...

深入Linux核心架構筆記 動態時鐘

為節省系統功耗,只在有些任務需要實際執行時,才啟用週期時鐘,否則會臨時禁用週期時鐘,對該技術的支援可以在編譯時選擇,啟用此選項的系統也稱無時鐘系統。判斷原則 當系統排程選擇idle程序來執行時,動態時鐘系統會禁用週期時鐘,直到下乙個定時器即將到期為止 struct tich sched idle t...