介紹 Process Scheduling


透過 Process Sheduler,將一個或一組Process指派給CPU core,一個CPU core一次運行處理一個Process。在記憶體中的process數量稱作degree of multiprogramming,若Processes的數量超過CPU core核心的數量,沒有分配到CPU core會等待直到被分配。

花比較多時間處理運算的Process叫作 CPU-bound process,而花比較多時間在I/O上的則叫作 I/O-bound process。

Scheduling Queues

Scheduling Queue 通常是 Linked List 的結構,Queues的類型分成:

  • Ready Queue: 當Process剛產生或是從其他Queue準備讓CPU執行而離開,會到Ready Queue。
  • I/O Wait Queue: 當Process進行I/O請求而等待時,會到I/O Wait Queue。
  • Interrupt Wait Queue: 當Interrupt發生時。
  • Child Termination Wait Queue: 等待產生的子Process結束時。

CPU Scheduling

CPU Scheduling從 Ready Queue選擇將要運行的Process並分配給一個CPU core。在一段時間可能會採取從 CPU core 抽離Process並分配其其他Process。當 degree of multiprogramming 過高時,記憶體資源可能不夠,有些作業系統可以藉由 Swapping 暫時將記憶體的Process存至Disk (Swapped out),等待時機再取回來 (Swapped in)。

Context Switch

透過Interrupt將一Process從一CPU core暫停、儲存狀態並切換到其他Process及讀取他先前的狀態,這種過程叫作 Context switch。Context switch 中,會做Registers的內容或其他額外的資料的切換。


See also