計算機概論-作業系統(行程管理與排班)
行程管理(Process management)
行程(process)指的是正在執行的程式,是一個具有獨立功能的程序關於某個數据集合的一次運行活動。它可以申請和擁有系统資源,是一個動態的概念,是一個活動的實體。它不只是程序的代碼,還包括當前的活動,通過程序計數器的值和處理寄存器的内容來表示。
process組成
文本區域(text region):
- 程式碼(code section)
資料區域(data region):
- 全域變數(global variable)
- 堆積(heap):動態分配的記憶體
堆疊(stack region):
- 活動過程調用的指令
- 程式計數器(program counter)
- 本地變數(local variable)
行程狀態(process state)
Process的生命週期可以劃分為一組狀態,系統根據PCB結構(process Control block)中的狀態值控制process。
Process在結束前僅處於以下三種基本狀態之一:
- 就緒狀態:當process已分配到除CPU以外的所有必要資源後,處於排班中。
- 執行狀態:process正在CPU上運行的狀態,該process已獲得必要的資源及處理器,用戶程序正在處理器上運行。
- 等待狀態:正在執行的process,由於發生某事件而暫時無法繼續執行時,放棄處理器而處於暫停狀態。
- 新建(new):該process正在產生中
- 執行中(running):process正在執行
- 等待(waiting):等待某事件發生(通常是等待I/O)
- 就緒(ready):排班中,該process正等待指定一個處理器
- 結束(terminate):該process完成執行
內文切換(context switch)
- 時機:當CPU的使用權由一個process移交給另一個process使用時
- 動作:先儲存原process狀態至PCB,再載入新process的PCB
- 時間:system overhead,且與硬體有關
註:PCB應保留在主記憶體中,以加快排程和內文切換的速度,減少system overhead
狀態中的佇列
- Job queue:由一群位於次儲存體 (如:硬碟 ) 中,等待進1入主記憶體之programs所形成的集合
- Ready queue:由一群位於記憶體中,就緒並等待執行的processes所行程的集合,一般都是用鏈結串(link list)的方式儲存
- Device queue:由一群正在等待 I/O 裝置的processes所形成的集合,毎個裝置本身都有其 device queue,以記錄不同process的請求
PCB(process control block)
說明:用來儲存process的狀態與資訊
PCB內容:
- Process state:process的狀態(new、running...)
- Program counter:下一個要執行的指令位址
- CPU register:所有暫存器內容
- CPU scheduling information:排班順序、佇列...
- Memory management information:分配給process的記憶體大小
- Accounting information:CPU實際時間的使用數量、process ID
- I/O status information:配置給process的輸出/入裝置
排班程式(scheduler)類型
類型 | 執行頻率 | 批次系統 | 分時系統 | 即時系統 |
---|---|---|---|---|
Long-term scheduler | 最低 | O | X | X |
Midium-term scheduler | 中等 | X | O | X |
Short-term scheduler | 最高 | O | O | O |
Long-term scheduler
- 從job queue選擇適合的jobs載入至記憶體內準備執行
- 可調控multiprogramming degree(記憶體中正在執行的process數量)
- 可調控CPU bound與I/O bound的比例
Midium-term scheduler
- 當記憶體空間不足,又有其它process欲進入記憶體執行,此時必須選擇某些process,將其swap out到disk,待記憶體有足夠空間,再將其swap in回記憶體中繼續執行
- 可調控multiprogramming degree
- 可調控CPU bound與I/O bound的比例
short-term scheduler
- 從ready queue中選擇已ready且適當的process,使其獲得CPU使用權
- 無法調控multiprogramming degree
- 無法調控CPU bound與I/O bound的比例
0留言