透過 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的內容或其他額外的資料的切換。