linux與任何分時系統一樣,通過乙個程序到另乙個程序的快速切換,達到表明上看來多個程序同時執行的神奇效果。
一.排程策略
傳統的unix作業系統的排程演算法必須實現幾個相互衝突的目標:程序響應時間盡可能快,後台作業的吞吐量盡可能高,盡可能避免程序的飢餓現象,低優先順序和高優先順序的需要盡可能調和等等。決定什麼時候以什怎樣的方式選擇乙個新的程序執行的這組規則就是所謂的排程策略。linux的排程基於分時的技術:多個程序以「時間多路復用」方式執行,因為cpu的時間被分成「片」,給每個可執行程序分配一片。程序排程也是根據程序的優先順序對它們進行分類。有時用複雜的演算法求出程序當前的優先順序,但最後的結果是相同的:每個程序都與乙個值相關聯,這個值表示把程序如何適當地分配給cpu。傳統上把程序分類為「i/o受限」或「cpu受限」。另一種分類法把程序區分為三類:互動式程序、批處理程序、實時程序。
二.排程演算法
早期的排程演算法:在每次程序切換時,核心掃瞄可執行程序的鍊錶,計算程序的優先
深入理解Linux核心 筆記
第一章 緒論 1.unix檔案可以是下列型別之一 a.正規檔案 regular file b.目錄 directroy c.符號鏈 symbolic link d.塊裝置檔案 block oriented device file e.字元裝置檔案 charactor oriented device ...
《深入理解LINUX核心》筆記(四)
每個能夠發出中斷請求的硬體裝置控制器都有一條名為 irq iinterpretrequest 的輸出線 80x86微處理器大約發布了約 20種不同的異常,核心必須位每種異常提供一種專門的異常處理程式 對某些異常,cpu控制單元會在執行異常處理程式前產生乙個硬體出錯碼 hardwareerror co...
《深入理解LINUX核心》筆記(五)
一種廣泛應用的同步技術就是加鎖 locking 當核心控制路徑必須訪問共享資料結構或進入臨界區時,就需要獲取 鎖 自旋鎖 spinlock 是用來在一種多處理器環境中工作的一種特殊的鎖 在單處理器系統上,這種鎖本身並不起鎖的作用,自旋鎖原語僅僅是禁止或啟用核心搶占 讀 寫自旋鎖的引入是為了增加核心的...