一. 進程的基本信息
1.1 進程的概念、組成及信息
1.1.1 概念
進程的概念與程序相對,程序是靜態的而進程是動態的,一個程序執行多次會有多個不同的進程
1.1.2 組成
PCB(程序控制塊):
是一種保存下列信息的數據結構,進程創建時操作系統分配,進程結束會進行回收
進程描述信息:
PID:唯一的、不重復的進程 ID
UID:進程所屬用戶的 ID
資源分配清單:分配給該進程的資源信息,包括使用文件和 I/O 設備等
進程控制和管理信息:
CPU、磁盤等使用情況統計
進程當前狀態:就緒態、創建態、阻塞態…
處理機相關信息:各種寄存器的值(用于實現進程切換)
程序段:程序代碼(指令序列)
數據段:運行過程中產生的各種數據
1.1.3 特征
動態性:是程序的一次執行過程,是動態地產生和變化消亡的
并發性:內存中可以有多個進程實體,可以并發執行
獨立性:進程是獨立運行、獨立獲取資源、獨立接受調度的 基本單位
異步性:進程按照各自獨立的速度執行推進,由操作系統提供 進程同步機制 來解決問題
結構性:每個進程都會有一個 PCB,結構上看,進程由 PCB、程序段和數據段 組成
※ 程序的運行機制
從編寫好的代碼開始,經過編譯器的處理轉換為可執行文件,啟動可執行文件后操作系統會創建進程并自動為該進程創建 PCB,分配唯一的 PID 等信息,并將程序編譯后得到的指令放入程序段,依照指令去 CPU 取出并執行,而數據段則保存著進程執行過程中得到的程序。
1.2 進程的狀態與切換
1.2.1 進程的狀態
進程的狀態有以下五種:
創建態:在運行可執行文件后,操作系統會嘗試創建一個新的進程,此時進程處于創建態,在這個階段操作系統會為該進程分配資源、初始化 PCB
就緒態:進程創建完成后,進程處于就緒態,此時進程 已經具備運行條件,但由于 CPU 未處于空閑而處于等待狀態,暫時不能運行
運行態:當 CPU 空閑時,會從就緒態進程中選一個進程上 CPU 運行,此處進程處于運行態,CPU 會執行進程的程序段中的內容
阻塞態:當處于運行態的進程需要請求某些資源或者事件發生而使進程無法正常執行,進程會 主動請求 以進入阻塞態
終止態:進程的運行結束或者發生錯誤導致進程終止,此時進程進入終止態,操作系統會回收進程的資源并撤銷 PCB
進程的整個生命周期大部分時間都處于 就緒態、阻塞態和運行態 三種狀態,在單核 CPU 中同一時刻只能有一個進程處于運行態,而多核 CPU 則可能有多個。
1.2.2 進程的組織方式
在進程 PCB 中,有一個變量 state 儲存進程處于的狀態,如 1 表示創建態,2 表示就緒態等等,為了對同一個狀態下的各個進程進行統一管理,操作系統 會將各個進程的 PCB 組織起來
鏈接方式:以指針將處于同一狀態的進程的 PCB 以類似隊列或者列表的形式組織起來,可能根據狀態區分,而同一狀態下如阻塞態還可能根據處于該狀態的原因而分配不同隊列或列表組織起來,進程的組織方式以連接方式為多
索引方式:建立索引表儲存不同的進程的 PCB 信息