20135320趙瀚青LINUX第四章讀書筆記

2022-05-15 13:28:35 字數 1391 閱讀 9704

文字編輯程式顯然是 1/0 消耗型的,因為它大部分時間都在等待使用者的鍵盤輸入〈無論使用者的輸入速度有多快,都不可能趕上處理的速度λ 使用者總是希望按下鍵系統就能馬上響應。
以模組方式提供的,這樣做的目的是允許不同型別的程序可以有針對性地選

擇排程算哉。

cfs的做怯是允許每個程序執行一段時間、迴圈輪轉、選擇執行最少的程序作為下乙個執行程序,而不再採用分配給每個程序時間片的做法了,在所有可執行程序總數基礎上計算出乙個程序應該執行多久。 - -

nice 值在 cfs 中被

作為程序獲得的處理器執行比的權重:越高的nice 值(越低的優先順序)程序在得更低的處理器

使用權重。

可執行程序數量趨於無窮,每個最少也能獲得 lms 的執行時間。

任何程序所獲得的處理器時間是由它自己和其他所有可執行程序nice 值的相對差值決定的。

所有的排程器都必須對程序執行時間做記賬。

cfs 使用排程器實體結構(定義在檔案<linux/sched.h>的 struct_sched _entity 中)來追蹤程序執行記賬。

cfs 使用 vruntime 變數來記錄乙個程式到底執行了多長時間以及它還應該再執行多久。

定義在kemevsched_fair.c 檔案中的 update_curr()函式實現了該記賬功能。

update_ curro 計算了當前程序的執行時間,並且將其存放在變數delta_exec 中,update_ curr()是囪系統定時器週期性呼叫。

主要入口點是函式schedule(),它定義在檔案kemel/sched.c中。

睡眠:為了等待一些事件。

核心的操作都相同 2 程序把自己標記成休眠狀態,從可執行紅黑樹中移出,放入等待佇列,然後呼叫 schedule()選擇和執行乙個其他程序。

喚醒的過程剛好相反程序被設定為可執行狀態,然後再從等待佇列中移到可執行紅黑樹中。

核心搶占會發生在:

中斷處理程式正在執行,且返回核心空間之前

核心**再一次具有可搶占性

如果核心中的任務顯式地呼叫 schedule()

如果核心中的任務阻塞(這同樣也會導敖呼叫 schedule()

兩種策略

sched_fifo和 sched_rr

sched_fifo 實現了一種簡單的、先入先出的排程算怯

sched_rr 是帶有時鬧片的 sched_fifo,一種實時輪流排程算掛.

sched_setparam()和sched__getparam()分別用於設定和獲取程序的實時優先順序

nice()函式會呼叫核心的 set_ user_ nice()函式,這個函式會設定程序的 task_struct 的 static_prio 和prio 值。

20135320趙瀚青LINUX期中總結

本學期的linux核心這門課程已經進行了一半,這門課的學習方法和上個學期深入理解計算機系統的方式差不多,所以也沒有特別多不適應,linux核心在我看來,就是理解乙個作業系統是如何實現各個功能的,先從巨集觀上讓我們理解一下,linux作業系統,然後再讓我們看看各個功能實現的 和過程,包括程序的建立,程...

20135320趙瀚青LINUX第六周學習筆記

這周主要講解的是程序。首先老師就講解了pcb程序結構塊的資料結構,pcb程序控制塊的 包含了很多資訊,最開始就是程序的狀態資訊 然後是程序狀態符,程序排程相關資訊等等很多部分。然後老師講解了用fork 建立程序的過程,然後用gdb除錯,跟蹤建立程序的過程。本週學習的內容在上個學期婁老師的課程中有涉及...

20135320趙瀚青LINUX第三章讀書筆記

是處於執行期的程式以及它所包含的資源的總稱。執行緒的定義 是在程序中活動的物件。每個執行緒都擁有乙個獨立的程式計數器 程序棧和一組程序暫存器。核心排程的物件是執行緒,而不是程序。3.2 程序描述符及任務結構 程序描述符的結構 task struct,定義在中,包含乙個具體程序的所有資訊。task s...