程式與執行緒(Process Management)

更新於 發佈於 閱讀時間約 8 分鐘

上篇著重於作業系統在硬體的角色還有記憶體 硬體運作的基本機制(資料處理流程)

本篇學習目標:了解作業系統如何管理程式

Process、Thread 和 Process Control Block(PCB)

在作業系統裡,程式的執行涉及三個重要概念:ProcessThreadProcess Control Block(PCB)

  • Program:還沒執行時,它只是靜態的檔案,比如 .exe 檔案或某個應用程式。
  • Process:當你打開程式時,程式被載入記憶體,成為一個 Process,這時它已經開始消耗記憶體和 CPU 資源了。每個 Process 都是獨立的,擁有自己的記憶體空間和執行狀態。舉例:你同時開啟音樂播放器和文字編輯器,這兩個程式就是兩個 Process。
  • Thread:一個 Process 可以包含多個 Thread,這些 Thread 共享 Process 的資源(如記憶體)。執行緒是「真正在跑任務」的單位。一個 Process 有多個 Thread 時,可以同時執行不同的任務。舉例:在音樂播放器裡,一個 Thread 處理播放音樂,另一個 Thread 處理下載歌曲。

簡單來說,Process 像是一個運作中的工廠,而 Thread 是工廠裡的工人,他們各司其職,但又共享同一套資源。

Process Control Block(PCB)

  • PCB 是作業系統用來管理 Process 的資料結構,每個 Process 都有一個 PCB,記錄它的所有資訊,包括:
    • Process 的狀態(運行中、等待中等)。
    • 分配的記憶體和資源。
    • CPU 的寄存器狀態(暫停執行時,CPU 的暫存資料)。

舉例:當你暫停一個遊戲時,作業系統會把遊戲的狀態存到 PCB,等你重新開始遊戲時,PCB 的資料可以幫助遊戲從中斷的地方繼續運行。

以工廠來比喻,PCB 是像是「生產進度報告表」記載訂單資訊、生產狀態(待料、生產中等等)。

raw-image



Context Switch 的運作方式

當 CPU 需要從執行一個 Process 切換到另一個 Process 時,會進行以下步驟:

  1. 保存當前 Process 的上下文(Context)
    • 把這個 Process 的執行狀態存到 Process Control Block(PCB)裡,包括 CPU 的寄存器內容、記憶體位置、程序計數器(Program Counter,記錄下一條指令的位置)等。
  2. 切換到新 Process 的上下文
    • 從新 Process 的 PCB 中讀取已保存的上下文,恢復它的執行狀態。
  3. 繼續執行新 Process
    • CPU 開始執行新 Process 的指令,這樣看起來就像兩個程式在「同時運行」。

舉例:像寫作業被打斷

  • 你正在寫作業(Process A)。
  • 電話響了,你得接電話(Process B),所以你先把作業的進度記錄好(保存 A 的上下文)。
  • 接完電話後,你看回作業進度(讀取 A 的上下文),然後繼續寫作業。

為什麼需要 Context Switch?

Context Switch 的存在是為了讓多個 Process 和 Thread 能公平分享 CPU 資源。例如:

  • 你在聽音樂(Process 1)。
  • 你同時用瀏覽器上網(Process 2)。
  • 作業系統會快速在這兩個 Process 之間切換,讓音樂不會中斷,網頁也能即時顯示。

raw-image

圖片來源:FANG Interview Question | Process vs Thread


Process state 行程狀態(Process state)

行程狀態(Process State):程式是怎麼「跑起來」的?

圖片來源

AppWorks School Batch #16 Front-End Class 學習筆記&心得(Week 17)

raw-image

Process 的運作就像我們做作業的流程:先準備資料、再執行計算,最後交作業完成。同樣,行程的狀態大致分為五種:NewReadyWaitingRunningTerminated


五大狀態解釋

1. New(新生狀態)

新生狀態就像剛剛被老師分配作業的時候,還沒動手,只是程式剛開始被建立,還沒準備好運行。

例子:假設我們開啟了一個遊戲,這時候遊戲的程式還在載入,它的狀態就是 New。

2. Ready(準備狀態)

程式已經準備好了,資源也分配好了,就等 CPU 調度它去執行。

注意!

Ready 並不會直接到 Running!因為 CPU 會優先處理其他更急的任務。所以,Ready 的程式要先排隊進入 Waiting 狀態,等到時機成熟再執行。

例子:好比我們準備好了筆記本和筆,但老師(CPU)還在幫其他同學改作業,我們只能先坐著等。


3. Waiting(等待狀態)

到了這裡,有些同學可能會想:「老師,為什麼程式準備好還要等?」

原因是什麼?因為它還需要其他的條件才能執行!

例如:

  • 它可能在等資料讀取完成(比如讀硬碟上的檔案)。
  • 或者在等網路連線(像下載檔案時)。
    等這些資源準備好,它才有機會進一步執行。

4. Running(執行狀態)

終於輪到這個程式了!CPU 開始執行它的指令。這時候,程式處於「工作進行中」的狀態,正式使用 CPU 資源。

例子:像是在玩遊戲的時候,CPU 一直處理你的操作指令,比如控制角色移動、戰鬥等。


5. Terminated(終止狀態)

當程式執行完畢,或因為其他原因被終止,程式就會進入這個狀態。它已經完成任務,釋放資源,從作業系統的排程中消失。

例子:遊戲結束,畫面關閉,程式完成它的使命。


Ready 為什麼不直接到 Running?來畫圖搞清楚!

行程的狀態變化,其實是有一定順序的:

New → Ready → Waiting → Running → Terminated
  1. New → Ready
    程式剛建立,載入必要資料後,準備好等待執行。
  2. Ready → Waiting
    雖然 Ready 表示程式準備好了,但因為 CPU 資源有限,還需要等到它排到隊,才能進一步執行。
  3. Waiting → Running
    當程式的資源(如 I/O 資料)到位、CPU 空閒時,才會切換到 Running。
  4. Running → Waiting(有時候會這樣):
    如果程式在執行中需要其他額外資源,例如等待硬碟讀取,會暫時被中斷,重新回到 Waiting。
  5. Running → Terminated
    執行完成,或因錯誤而終止,正式結束。

小結一下!

Ready 不會直接跳到 Running,因為作業系統還需要進行「資源調度」和「等待」步驟,確保所有資源都到位,CPU 才能開始工作!

留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
14會員
65內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/24
本系列文章將循序漸進地介紹 JavaScript 的核心概念,從基礎語法到進階應用,例如非同步程式設計和 React 基礎。內容淺顯易懂,並使用生活化的比喻幫助讀者理解,搭配程式碼範例,適合 JavaScript 初學者學習。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/21
本文介紹行動通訊網路的演進歷史,從1G到5G,並說明ITU與3GPP在制定通訊規格上的重要角色,以及5G的三大關鍵應用場景:URLLC、eMBB和mMTC。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
2025/04/11
這篇文章說明網路的七層模型、IP 位址、通訊埠、TCP/UDP 協定、HTTP 協定、HTTP 狀態碼以及 WebSocket,並解釋它們之間的關係與互動方式。文中包含許多圖表和範例,幫助讀者理解這些網路概念。
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
本文深入淺出地介紹工廠製造部門的組織架構、運作流程、關鍵報表以及品質管控,並針對不同職位(製造部長、組長、物料員、文員、測試員、外觀檢查員、維修員、技術員、生產作業員)的職責與工作內容作詳細說明。文章亦涵蓋6S管理、生產線運作流程、以及提升品質及稼動效率的策略,並強調準時交貨的重要性。
Thumbnail
本文深入淺出地介紹工廠製造部門的組織架構、運作流程、關鍵報表以及品質管控,並針對不同職位(製造部長、組長、物料員、文員、測試員、外觀檢查員、維修員、技術員、生產作業員)的職責與工作內容作詳細說明。文章亦涵蓋6S管理、生產線運作流程、以及提升品質及稼動效率的策略,並強調準時交貨的重要性。
Thumbnail
本文深入淺出地介紹工廠運作,從組織結構、部門功能到生產流程,並說明業務人員瞭解工廠運作的重要性,以及如何將此知識應用於業務溝通和市場競爭中,提升專業度、掌握交期、解決客戶問題,最終提升業績和客戶滿意度。
Thumbnail
本文深入淺出地介紹工廠運作,從組織結構、部門功能到生產流程,並說明業務人員瞭解工廠運作的重要性,以及如何將此知識應用於業務溝通和市場競爭中,提升專業度、掌握交期、解決客戶問題,最終提升業績和客戶滿意度。
Thumbnail
在產品開發過程中,PM 對技術概念的理解深度可能會影響需求落地精準度 與開發時程可控性,若能掌握一些基本技術用語,不僅能幫助 PM 更好地理解技術限制與實作可能性,更能提升與工程師的溝通效率。
Thumbnail
在產品開發過程中,PM 對技術概念的理解深度可能會影響需求落地精準度 與開發時程可控性,若能掌握一些基本技術用語,不僅能幫助 PM 更好地理解技術限制與實作可能性,更能提升與工程師的溝通效率。
Thumbnail
業務流程圖(Transaction Flow Diagram)是一種描述管理系統內各單位、人員之間的業務關係、作業順序和管理資訊流向的圖表。它以一些規定的符號及連線表示某個特定業務的處理過程,幫助分析人員找出業務流程中不合理的流向。
Thumbnail
業務流程圖(Transaction Flow Diagram)是一種描述管理系統內各單位、人員之間的業務關係、作業順序和管理資訊流向的圖表。它以一些規定的符號及連線表示某個特定業務的處理過程,幫助分析人員找出業務流程中不合理的流向。
Thumbnail
流程圖是以特定的圖形符號加上說明,表示演算法的圖,簡而言之,就是表示流程行為的圖,形象直觀,便於理解,不會產生歧義。流程圖是高效率工具,在工作、生活以及學習等各方面幫助我們整理流程。
Thumbnail
流程圖是以特定的圖形符號加上說明,表示演算法的圖,簡而言之,就是表示流程行為的圖,形象直觀,便於理解,不會產生歧義。流程圖是高效率工具,在工作、生活以及學習等各方面幫助我們整理流程。
Thumbnail
目標:理解程式的排程策略,如何讓多個應用程式同時執行 CPU Scheduling Criteria(CPU 調度準則) CPU Scheduling(Preemptive & Non-Preemptive)
Thumbnail
目標:理解程式的排程策略,如何讓多個應用程式同時執行 CPU Scheduling Criteria(CPU 調度準則) CPU Scheduling(Preemptive & Non-Preemptive)
Thumbnail
步驟二:組織層級設定 [組織結構&職級] 為什麼要設定組織層級呢[組織結構&職級]? 因為我們知道某些公文類別的流程是固定的,比如請購單,一定要職員 -> 科級主管 -> 部級主管,在公文內,一定會走的流程,我們把它稱之為[串簽]流程,所以這時候就用運用到組織層級的設定資訊。至於後續的流程是否.
Thumbnail
步驟二:組織層級設定 [組織結構&職級] 為什麼要設定組織層級呢[組織結構&職級]? 因為我們知道某些公文類別的流程是固定的,比如請購單,一定要職員 -> 科級主管 -> 部級主管,在公文內,一定會走的流程,我們把它稱之為[串簽]流程,所以這時候就用運用到組織層級的設定資訊。至於後續的流程是否.
Thumbnail
首先輸入這段指令 我需要製定一條陌生業務的業務思路,你首先要採用提問的方式告訴我,你認為還需要的最關鍵的6個信息,要求我考慮各種因素獲得更清晰的信息。之後根據我的回答,從業務的起始、評估、執行、回饋、獎勵到調整可以運用一些管理或思考模型來幫我進行詳細規劃。
Thumbnail
首先輸入這段指令 我需要製定一條陌生業務的業務思路,你首先要採用提問的方式告訴我,你認為還需要的最關鍵的6個信息,要求我考慮各種因素獲得更清晰的信息。之後根據我的回答,從業務的起始、評估、執行、回饋、獎勵到調整可以運用一些管理或思考模型來幫我進行詳細規劃。
Thumbnail
近期拜讀彭建文老師PJ法的書 學習到系統圖(邏輯樹狀圖)、WHY WHY分析時 發現跟下面這些課程有可鏈結的地方 1.職能分析-工作說明書 2.郭老師的2W1H模型-WHAT、WHY、HOW 3.圖解思考-心智圖
Thumbnail
近期拜讀彭建文老師PJ法的書 學習到系統圖(邏輯樹狀圖)、WHY WHY分析時 發現跟下面這些課程有可鏈結的地方 1.職能分析-工作說明書 2.郭老師的2W1H模型-WHAT、WHY、HOW 3.圖解思考-心智圖
Thumbnail
為什麼要對任務進行排班呢?這篇文章將會告訴你,在作業系統當中,是如何利用排班演算法來處理交互式與非交互式任務,以及如何提升CPU使用率!
Thumbnail
為什麼要對任務進行排班呢?這篇文章將會告訴你,在作業系統當中,是如何利用排班演算法來處理交互式與非交互式任務,以及如何提升CPU使用率!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News