iT邦幫忙

2025 iThome 鐵人賽

DAY 5
0
Software Development

用作業系統讀懂另一半的OS系列 第 5

【2025鐵人賽】用作業系統讀懂另一半的OS:Process 01

  • 分享至 

  • xImage
  •  

題外話,南部這一陣子一直下雨下下下
今天看的路邊長香菇的新聞,望著我家遲遲沒乾的衣服...J個雨,真的好了歐,好了就好了,真的
https://ithelp.ithome.com.tw/upload/images/20250805/201777644wA20Nis7d.jpg

當我們使用游標對執行檔.exe點兩下後,系統會把這個程式載入到記憶體並執行。這一刻起,它就不再是硬碟上靜靜躺著的檔案,而是活生生、有生命週期、有資源的執行單位:Process。

Process 本身內容涵蓋:

  • 程式計數器(Program Counter):是一個佔存器,紀錄下一條要執行的指令位置。
  • 記憶體內容:包含程式碼、資料、堆疊、堆積區等。
  • 系統資源:如檔案描述器、I/O 裝置等。

Process 與 Program 的差異:
Program是我們寫好的程式碼,會靜靜的儲存的在硬碟中;Process則是執行中版本的程式,具有活躍狀態與系統資源。
一個Program可以對應多個 process(就像是開了兩個 Google Chrome 視窗,每個就是一個 process)。

Process 結構

Process本身結構如下圖所表示。結構可以分為:

  • Text:放程式碼(機器碼),是執行的內容,不可更動。
  • Data:放全域變數,可能有初始化值或尚未初始化。
  • Heap:放動態配置的資料,例如 malloc()、new 建立的空間,可擴展或釋放。
  • Stack:當函式被呼叫時,參數、區域變數、回傳位址會被壓入堆疊,函式結束時再彈出。

https://ithelp.ithome.com.tw/upload/images/20250723/20177764x4eNH18kav.png

行程控制區塊(Process Control Block, PCB)

對於每一個Process,OS都需要去紀錄每個Process的的詳細資訊,才能進行管理。而這些紀錄就會存在一份名為Process Control Block(PCB)的資料結構中。PCB內容包含:

  • Process 狀態(例如 Running、Waiting)
  • 程式計數器(下一步要執行哪行程式)
  • CPU 註冊內容(中斷時需要保存)
  • 記憶體相關資訊(如頁表、基底/界限)
  • I/O 狀態(哪些檔案開著、使用哪些裝置)
  • CPU 排程資訊(優先權、排隊指標等)

Process States

一個 Process 不會永遠都在執行,它會根據當前情況切換狀態。以下是常見的五種狀態:

  • New:剛被建立,尚未執行。
  • Ready:等著 CPU 來執行。
  • Running:目前正在 CPU 上執行。
  • Waiting:暫時被擱置,等待某事件(如 I/O)完成。
  • Terminated:執行完畢,被結束。

對於狀態轉換原因,這邊我就直接用一張圖來整理:

https://ithelp.ithome.com.tw/upload/images/20250802/20177764ojMrwYQjBQ.png

行程排程(Process Scheduling)

也因為CPU是要在完成這些Process,

為了讓每個 Process 都有機會執行,OS會針對Process進行排程(Scheduling)。其目標有兩個:

  • 多工(Multiprogramming):讓 CPU 不要閒著,提高效能。
  • 分時系統(Time Sharing):讓使用者感覺每個程式都在「同時」運作。

那Scheduling的運作方式大致如下:

  • 使用一個 Scheduler(排程器),從就緒佇列中選出下一個要執行的 Process。
  • 每次 CPU 執行完一段時間(或發生 I/O 等事件)後會切換 Process,讓別的 Process 上場。
  • 在多核心系統中,每顆核心可同時執行一個 Process,其餘的 Process 排隊等候。

行程排程佇列(Scheduling Queues)

那在Scheduling時,OS就會根據Process States,將它們放入不同的佇列中管理:

  • 就緒佇列(Ready Queue):儲存「準備好要執行」的 processes。實作為鏈結串列,佇列頭指向第一個 PCB
  • 等待佇列(Wait Queues):當 process 執行中呼叫 I/O 等操作時,會進入等待狀態。如 I/O wait queue、child termination wait queue 等
  • I/O Queue:Process 等待硬碟、滑鼠、鍵盤等設備

上一篇
【2025鐵人賽】用作業系統讀懂另一半的OS:Overview 03
下一篇
【2025鐵人賽】用作業系統讀懂另一半的OS:Process 02
系列文
用作業系統讀懂另一半的OS30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言