270 likes | 478 Views
第二章. 行程管理. 朱肇明 資管系 講師 大華技術學院. 行程 (process). 行程就是一個執行中的程式。 行程包括了 程式區段 資料區段 堆疊區段 CPU 中各暫存器的值 ( 行程執行時所需控制資訊 ). 行程 (process) 與程式 (program). 行程 (process) 與程式 (program) 的不同: 程式是放在外部的儲存裝置如硬碟上,而行程則放在記憶體中。 程式在儲存裝置中是靜態的,而行程在記憶體中是動態的,它會隨著一些事件的發生而產生相對的改變。 行程,簡單來說,就是一個執行中的程式。. 行程的狀態.
E N D
第二章 行程管理 朱肇明 資管系 講師 大華技術學院
行程(process) • 行程就是一個執行中的程式。 • 行程包括了 • 程式區段 • 資料區段 • 堆疊區段 • CPU 中各暫存器的值(行程執行時所需控制資訊)
行程(process)與程式(program) • 行程(process)與程式(program)的不同: • 程式是放在外部的儲存裝置如硬碟上,而行程則放在記憶體中。 • 程式在儲存裝置中是靜態的,而行程在記憶體中是動態的,它會隨著一些事件的發生而產生相對的改變。 • 行程,簡單來說,就是一個執行中的程式。
行程的狀態 • 一個行程在執行過程中,會改變很多狀態。 • 一個行程的狀態通常有下列幾種: • 建立 • 執行 • 懸置 • 就緒 • 終止
行程狀態轉換圖 建立 允許進入 離開 終止 中斷 執行 就緒 分派 等待事件 事件發生 懸置
行程控制區塊 • 行程控制區塊(PCB),儲存行程在執行時相關的資訊。 • PCB 中通常包括了 • 行程狀態 • CPU 暫存器 • 排程資訊 • I/O 狀態 • 當行程進行切換時,需要將目前行程的相關資訊記錄在該行程的 PCB 中,並將另一個行程的 PCB 載入至系統中,這個動作稱為內文切換。
行程的佇列 • 一個行程在執行期間會在各種不同的佇列中進出。 • 一個系統中通常有 • 工作佇列 • 就緒佇列 • 等待佇列 • 裝置佇列
head head head tail tail tail 暫存器 … ….. … 暫存器 … 暫存器 … 暫存器 … 行程控制區塊a 行程控制區塊b 就緒佇列 行程控制區塊l 行程控制區塊n 磁碟裝置佇列 行程控制區塊P 行程等待佇列 就緒佇列與裝置佇列
行程A 作業系統 行程B 中斷或系統呼叫 執行中 將狀態儲存至PCB A 閒置 由 PCB B 載入狀態 執行中 中斷或系統呼叫 閒置 將狀態儲存至PCB B 閒置 由 PCB A 載入狀態 執行中 行程的切換
內文切換 • 當 CPU 的使用權由一個行程轉到另一個行程時需進行內文切換。 • 內文切換動作所花的時間對系統而言是額外的負擔 。 • 執行緒降低內文切換所花的時間。
行程排程 • 為了增加 CPU 的使用效率而提出多個行程的觀念。 • 一個單 CPU 的系統來說,隨時只能有一個行程在執行。 • 當行程不只一個的時候,如何選擇最適當行程來執行就是行程排程。 • 如何排程是影響作業系統效能最重要的因素。
排程效能的衡量 • 使用率 • 產量 • 回覆時間 • 等待時間 • 反應時間 • 可預測性 • 公平性
先到先做排程法 • First Come, First Served • FCFS Scheduling • 不可搶先排程法 • 先進入的行程先執行。
P1 P3 P2 10 0 5 30 平均等待時間:(10 + 0 + 5)/ 3 = 5 毫秒 先到先做排程法 - 範例 行程CPU 暴衝時間(毫秒) P1 20 P2 5 P3 5 P1 P2 P3 25 0 20 30 平均等待時間:(0 + 20 + 25)/ 3 = 15 毫秒
最短工作優先排程 • Shortest Job First • SJF Scheduling • 不可搶先排程法 • 需要的時間最短者先執行。 • 如果不只一個行程有相同最短時間則以 • FCFS決定
行程CPU 暴衝時間(毫秒) P1 15 P2 4 P3 3 P1 P2 P3 7 0 3 22 平均等待時間:(7 + 3 + 0)/ 3 = 3.3 毫秒 最短工作優先排程– 範例圖示 時間 若使用 FCFS 排程法,行程到達的順序為 P1、P2、P3 則平均等待時間:(0 + 15 + 19)/ 3 = 11.3 毫秒 FCFS 的平均等待時間大約為 SJF 的 3.4 倍。
最短剩餘優先排程 • SJF 也可以是可搶先的。 • 可搶先的 SJF 排程又稱為最短剩餘時間優先的排程法(SRT)
最短剩餘優先排程– 範例 行程CPU 暴衝時間(毫秒)到達時間 P1 6 0 P2 3 1 P3 7 2 P4 4 3 P4 P2 P1 P1 P3 時間 0 1 4 8 13 20 平均等待時間:(7 + 0 + 11 + 1)/ 4 = 4.75 毫秒
優先權排程 • Priority Scheduling • 可為不可搶先排程法或不可搶先排程法 • 最高優先權的行程先執行 • Highest Priority First
優先權排程 – 範例 使用不可搶先的優先權排程 優先權數值愈小代表優先權愈高 行程CPU 暴衝時間(毫秒)優先權 P1 6 2 P2 5 0 P3 7 3 P4 4 1 P5 3 2 P1 P4 P2 P5 P3 時間 0 5 9 15 18 25 平均等待時間:(9 + 0 + 18 + 5 + 15)/ 5 = 9.4毫秒
循環分時排程 • Round-Robin Scheduling • 將時間等切成一小片一小片的時間切片,每一個時間切片則為每個行程每次得到 CPU 使用權後可執行的時間。 • 特別為分時系統所設計,為可搶先的。
循環分時排程 – 範例 行程CPU 暴衝時間(毫秒) P1 6 P2 5 P3 7 (時間切片為 5 毫秒) P3 P2 P1 P1 P1 9 0 5 25 13 18 平均等待時間:(8 + 5 + 9)/ 3 = 7.33 毫秒
多層佇列排程Multilevel Feedback Queue Scheduling 方法: • 將行程分類,相同類型的行程分在同一佇列,而每一佇列都有自己的排程方法。 • 最常見的分類將行程分成 • 前景(互動)行程 - RR 排程法 • 背景(批次)行程 - FCFS 排程法 • 佇列與佇列之間還有優先權的關係,且佇列之間還需要另一個整體排程方法 • 可搶先的固定優先權排程法 • 可能會產生飢餓的現象。
多層佇列排程法 – 圖示 高優先權 系統行程 伺服精靈行程 使用者行程 批次行程 低優先權
多層反饋佇列排程 • 多層反饋佇列排程法允許行程在各個佇列間移動。 • CPU 暴衝時間愈長的行程就移到優先權比較低佇列中。 • 能避免飢餓的現象發生。
A: 時間切片 = 5 ms B: 時間切片 = 20 ms C: FCFS 多層反饋佇列排程 – 圖示