1. 程式人生 > >《深入理解linux核心》筆記八

《深入理解linux核心》筆記八

任何LINUX核心都要記錄系統進行了多少CPU活動

監管器基於廢話藏簡單的蒙特卡洛演算法,在每一次時鐘中斷髮生時,核心確定該中斷若發生在核心態,則核心從堆疊取回中斷髮生前的eip暫存器的值,並用這個值揭示中斷髮生前核心區在做什麼

Linux依賴adjtimex()系統呼叫來實現

通常把系統配置成能在常規基準上執行時間同步協議,依賴網路定時協議NTP,以在每個節拍逐漸地調整時間

第七章、程序排程

LINUX的排程基於分時time sharing技術,多個程序以時間多路複用方式執行,因為CPU的時間被分為“片“slice,給每個可執行程序分配一片

互動式程序相對有較高的優先順序

核心用從100(最高優先順序)到139(最低優先順序)的數來表示普通程序的靜態優先順序。優先順序越高,基本時間片就越長

Runqueue資料結構中最重要的欄位是與可執行程序的連結串列相關的欄位

一個保持可執行狀態的程序通常被限制在一個固定的CPU上

排程域schedualing domain實際上是一個CPU集合,他們的工作量應由核心保持平衡。排程域採取分層的組織形式

第八章、記憶體管理

RAM的其餘部分稱為動態記憶體dynamicmemory,這是程序核心所寶貴資源,系統資源取決於如何有效管理動態記憶體

對於每個CPU而言,記憶體都試圖把耗時節點的訪問次數減到最少

這就要小心地選擇CPU最常用的引用的核心資料結構的存放位置

Linux2.6支援非。記憶體訪問NCMA模型,在這模型中,給定CPU對不同記憶體單元的訪問時間可能不一樣

系統的實體記憶體被劃分為幾個節點node。在一個單獨的節點內,任意給定CPU訪問頁面所需的時間都是相同的。然而對不同的CPU,這個時間可能就不同

每個節點中的實體記憶體又可以劃分為幾個管理區eone

迴圈緩衝區的作用是消除CPU負載的峰值

第十四章塊裝置驅動程式

塊裝置的主要特點是,CPU和匯流排讀寫資料所花時間與磁碟硬體的速度不匹配

塊裝置的評價訪問時間很高

塊裝置中的資料儲存裝置涉及了許多核心元件。每個元件採用不同的塊來管理:硬體塊裝置控制器採用“扇區”的固定長度來傳送資料

虛擬檔案系統,對映層檔案系統將磁碟資料存放在“塊”邏輯單元中

塊裝置驅動程式處理程式的“段“”,段是記憶體區或記憶體頁的一部分,包含磁碟上物流相連的資料塊

磁碟快取記憶體作用於磁碟資料上的頁,頁正好裝在一個頁框中

通用塊層將所有的上層和下層的元件組合在一起,因此它瞭解資料的扇區、塊、段和頁

應該把扇區作為傳遞資料的基本單元,而塊是UFS和檔案系統傳送資料的基本單位

在linux中,塊的大小必須是2的冪,而且不能超過一個頁框,另,必須是扇區的整數倍

對磁碟的每個I/O操作,就是在磁碟與一些RAM單元之間相互傳送一些相鄰扇區的內容

磁碟是一個由通用塊層處理的邏輯塊裝置

為了防止塊裝置驅動程式被掛起,每個I/O都是非同步處理的

I/O排程程式也被稱為電梯演算法

Linux2.6提供了4種:

預期anticipatory演算法、最後期限deadline演算法、CFQ complete fairness queueing完全公平佇列演算法以及NOOP no operating演算法。如果沒有給定引導引數,預設使用預期I/O排程程式

“最後期限”演算法的基本機制:兩個最後期限佇列和兩個排序佇列;I/O排程程式在讀和寫之間互動掃描排序佇列,不過更傾向於讀請求。掃描基本上是連續的

塊裝置驅動程式是Linux塊子系統中的最低層元件