一、定義(Process)
進程是具有獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的獨立單位
1、進程是程序的一次執行過程,是對CPU的抽象,是正在運行的程序的抽象
2、每個進程具有獨立的地址空間
3、操作系統通過調度將CPU的控制權交給某個進程
二、進程控制塊PCB(Process Control Block)
又稱進程描述符,進程屬性,是操作系統用於管理控制進程的一個專門的數據結構,記錄進程的各種屬性
PCB是系統感知進程存在的唯一標志,進程與PCB是一一對應的
進程表:所有進程的PCB集合
三、PCB包含哪些信息
進程描述信息
進程標識符PID,唯一,整數,進程名(不唯一),用戶標識符userID,進程組關系(兄弟父子關系)
進程控制信息
當前狀態,優先級,代碼執行入口,運行統計信息,進程間同步和通信,進程隊列指針,進程消息隊列指針
所擁有的資源和使用情況
虛擬地址空間的狀況,打開文件列表
CPU現場信息
進程不運行時的寄存器值和指向該進程的頁表的指針
四、進程狀態及狀態轉換
運行態(Running)
占有CPU,並在CPU上運行
就緒態(Ready)
已經具備運行條件,但由於沒有空閑CPU,而暫時不能運行
等待態(Waiting/Blocked)
或叫阻塞態,封鎖態,睡眠態,因等待某一事件而暫時不能運行
操作系統通常將進程狀態分為多種模型,這里給出三狀態和五狀態
五、進程隊列
1、操作系統為每一類進程建立一個或多個隊列
2、隊列元素為PCB
3、伴隨進程狀態的改變,其PCB從一個隊列進入另一個隊列
上圖中,一個進程創建后經許可(提交)進入就緒隊列,經過調度進入CPU,如果正常處理完畢會釋放,如超時重新進入就緒隊列
如果還有各種等待事件,則進入各類等待事件隊列,當相應的事件發生后再次進入就緒隊列,等待調度進入CPU
六、上下文切換
定義:CPU硬件狀態從一個進程換到另一個進程的過程
進程在運行時,其硬件狀態保存在CPU上的寄存器中(只有一套)
進程不運行時,這些寄存器的值保存在進程控制塊PCB中,當操作系統要運行一個新的進程時,需要將這個進程的PCB中的值送到
對應的寄存器中,這也是下一篇要講的線程的概念。
以上是操作系統關於進程的一些概述,摘自北大陳向群教授的操作系統課程學習