os -- 進程的控制
阿新 • • 發佈:2017-09-19
rgb microsoft 正常 完成 spl 復制 wak 設備 獲得
os -- 進程的控制
新建模板小書匠參考
《計算機操作系統》(第四版) 湯小丹等編著
概念引入
進程控制
進程控制是最基本的功能,負責創建進程、結束進程等功能,一般由 OS 內核中的原語來實現
原語
所謂原語,就是由若幹條指令組成的,用於完成一定功能的一個過程,算是不可分割的、最基本的操作
Note
- 接下來原語基本用於所有的操作
操作系統內核
操作系統將一些常用或者運行頻率較高的模塊(如時鐘管理、進程調度等)常駐內存,這些就被稱為 OS 內核
兩大功能
-
支撐功能
- 中斷處理
- 時鐘管理
- 原語操作
-
資源管理功能
- 進程管理
- 存儲器管理
- 設備管理
進程的創建
進程的層次
進程可以創建另一個進程,形成父進程和子進程的關系
Note
- 進程不能拒絕子進程的繼承權
- 父進程撤銷時,子進程也得隨之 over
- 根據父子進程的關系,可以構成一棵進程樹
- Window 中,一個進程創建另一個進程時,獲得一個句柄,形成控制與被控制的關系
引起創建進程的事件
- 用戶登錄
- 作業調度
- 提供服務
- 應用請求
進程的創建
調用進程創建原語 Creat
- 申請空白 PCB(進程控制塊),獲取唯一的數字標識符
- 分配進程所需的資源
- 初始化 PCB
- 允許的情況下,插入就緒隊列
進程的終止
引起進程終止的事件
-
正常結束
-
異常終止
- 越界錯:超出進程訪問的存儲區
- 保護錯:進程試圖訪問不能被訪問的資源或文件
- 非法指令:訪問一條不存在的指令
- 運行超時
- 等待超時
- 算術運算錯
- I/O 故障
-
外界幹預
Note:最典型的算是 Ctrl + C 吧
進程的終止過程
調用進終止原語
- 根據進程的標識符, 從 PCB 集合中檢索該進程的 PCB,讀出進程狀態
- 若進程還在執行,則立即終止該進程的執行,並置調度標誌為真,用於指示該進程被終止後應重新進行調度
- 若該進程還有子孫進程,則先終止其子孫進程,防止失控進程的產生
- 將終止進程的所有資源歸還父進程或系統
- PCB 從所在集合中移除
進程的阻塞與喚醒
引起進程阻塞和喚醒的事件
- 請求共享資源失敗
- 等待某種操作的完成
- 新數據尚未到達
- 等待新任務的到達
進程阻塞進程
調用阻塞原語 Block
- 將進程停止運行
- 修改 PCB 現行狀態為“阻塞”
- 插入阻塞隊列等待喚醒
進程喚醒過程
調用喚醒原語 Wakeup
- 將進程從阻塞隊列移出
- 修改 PCB 線性狀態為“執行”
- 插入到就緒隊列
進程的掛起與激活
進程的掛起
掛起原語 suspend
- 檢查被掛起進程的狀態
- 若為活動就緒狀態,則改為靜止就緒
- 若為活動阻塞狀態,則改為靜止阻塞
- 將該進程的 PCB 復制到指定的內存區域,方便考察其運行情況
- 若進程正在執行,則轉向調度程序重新調度
進程的激活過程
激活原語 active
- 狀態轉換與掛起相反
總結
- 原語和操作系統內核
- 進程的創建和終止
- 進程的阻塞和喚醒
- 進程的掛起和激活
os -- 進程的控制