第五章程序管理
1、資料結構
● 了解重要資料結構的作用和主要資訊:
·task_struct結構:描述乙個程序的所有資訊
所有程序的task_struct結構連成乙個雙向鍊錶。
policy:表示該程序的排程策略
priority:普通程序的排程優先數
rt_priority:實時程序的排程優先數
counter:程序的執行時間片
·向量表task:記錄所有程序的task_struct結構的位置
建立新程序時,將新task_struct的指標加入task。
·array_freelist鍊錶:記錄task中所有空槽位
建立程序時,從鍊錶中摘下乙個空槽位來用;
撤銷程序時,將它占用的槽位加入鍊錶;
·pidhash表:通過pid值查詢程序對應的task_struct結構。
pid雜湊後值相等的程序在該錶的同一項中排隊;
● 建立task_struct結構的兩點說明:
(1)結構分配:每個程序的task_struct結構和它的系統堆疊合用8kb的實體地址空間,其中task_struct結構位於這8kb空間的開始,系統堆疊位於這8kb空間的結尾。
(2)執行緒:程序中指令的不同執行路線。
與程序採用相同的管理機制和資料結構
2、程序的建立
(1) 程序建立時,拷貝父程序資源的方式
直接拷貝
為子程序建立獨立的資源結構,拷貝父程序資源;
共享新老程序共享同一資源結構,將其引用計數加1;
copy on write
僅拷貝各資源占用的資料結構,而真正對頁面的拷貝推遲到寫該頁的時候才進行;
● linux中程序建立方法:轉殖當前程序
程序建立的方式:fork、vfork、clone(都呼叫do_fork函式完成真正的程序建立)
·fork:用於普通程序的建立,採用copy on write方式;
·vfork:完全共享的建立,新老程序共享同樣的資源,完全沒有拷貝。
·clone介於兩者之間,由使用者自己指定建立的方式,需要共享什麼、需要拷貝什麼等。
(2)程序的建立函式do_fork:
1. 建立新程序的task_struct;
2. 拷貝當前程序task_struct的內容到新結構中;
3. 將新建立的task_struct結構插入到任務表task中;
4. 為新程序設定自己獨特的資訊;
5. 從父程序拷貝各類資源,並設定該結構中的相應域;
6. 繼續設定新程序的task_struct結構;
7. 將新task_struct結構加入到各佇列中;
8. 喚醒新程序;
(3)do_fork函式的返回情況:
1. 函式返回值:新程序的pid
2. 返回的位置:
在父程序中的返回:
在子程序中的返回:
(4)系統呼叫的返回值:
·父程序中:新程序pid;
·新程序中:0;
3、程序排程
(1)啟動程序呼叫序的時機
(2)程序呼叫程式—schedule函式
①定義兩個指標:prev和next;
②處理排程任務佇列tq_scheduler;
·有待處理的任務,則順序處理其中的每個任務;
③檢查是否在中斷處理中:若是,則立即返回;
④檢查是否有啟用的底半處理:若有,則處理它們;
⑤調整當前程序在執行程序佇列中的位置;
⑥從執行程序佇列中找出乙個最值得執行的程序(weight值最大);
⑦切換新程序:若下乙個要執行的程序就是當前程序(next==prev),則不需要切換,簡單返回;否則,切換
(3)不同型別的程序被排程的優先次序
linux把系統中所有的可執行程序(狀態改task_running)都排在執行程序佇列中。
● 若當前程序為實時程序:
policy(排程策略)是sched_rr
counter=0(時間片耗盡):重設counter為它的優先順序,移至執行程序佇列最後;
時間片還沒有用完:不調整
policy不是sched_rr:不調整
● 若當前程序為普通程序:根據當前程序狀態來調整。
task_running:
task_interruptible且已收到等待的訊號:將其狀態改為task_running,移至隊尾; task_uninterruptible、task_zombie、task_stopped或-1:從執行程序佇列中摘除。
(4)linux為每個可執行程序定義乙個權重weight,weight值越大的可執行程序,其優先順序越高。
● 權重weight值的計算方法:
(即當前程序明確宣告要放棄cpu)
(若是當前程序,則weight值再加1)
● 不同排程演算法
·先來先服務排程演算法(fifo):非搶占式
按照程序到達可執行程序佇列的時間次序使用cpu
優缺點:實現簡單、但不能體現優先順序
·時間片輪轉法:剝奪式
每次選擇程序佇列(按時間有序)隊頭的程序使用cpu;並且執行一段「時間片」後停止執行;若還未執行完畢,則插入隊尾,等待下乙個輪轉週期。
優缺點:適合於互動式分時系統、但系統開銷較大
·優先順序排程演算法
系統賦予每乙個程序乙個優先順序,每次從可執行程序佇列中選擇乙個優先順序最高的程序來使用cpu。
靜態優先順序演算法:優先順序在程序建立後不再改變
動態優先順序演算法:優先順序隨程序的執行而改變
優缺點:適合於實時系統、但未限制執行時間
4、程序終止完成的主要工作:
·task_zombie是僵死狀態··
物流學複習第五章
第五章物流市場 第一節物流市場的容量與結構 一 概述 1.物流市場是指為保證生產和流通過程順利進行而形成的為商品流動和暫時停留提供服務的服務性市場,主要有倉儲市場和貨物運輸市場以及包裝 裝卸 搬運等輔助性市場。2.物流市場的功能主要有資源配置 實現規模經濟和集約經濟 提高物流效率 降低物流成本等。3...
第五章薪酬管理
一 本章教材結構 二 本章鑑定點要求 知識要求佔10 能力要求佔20 合計30 三 本章考情分析 四 本章內容講解 第一節薪酬制度的設計 第一單元薪酬制度的制定依據 知識要求 一 薪酬的內涵 p209 210 一 薪酬的概念 1.薪酬 pensation 泛指員工獲得一切形式的報酬,包括薪資 福利和...
第五章培訓管理
1 企業生命週期表 企業生命週期表 2 培訓基本過程流程圖 培訓基本過程流程圖 3 培訓需求調查分類表 培訓需求調查分類表 4 培訓需求調查方法對比表 培訓需求調查方法對比表 5 培訓需求調查問卷樣例 培訓需求調查問卷樣例 續表續表 6 培訓需求調查問卷樣例二 培訓需求調查問卷樣例二 7 培訓需求調...