模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制
生活随笔
收集整理的這篇文章主要介紹了
模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
操作系統第二章--進程的描述與控制
前趨圖和程序執行
- 前趨圖
- 前趨圖是一個有向無循環圖DAG,用來描述進程之間執行的前后關系
- 初始結點:沒有前趨的結點
- 終止結點:沒有后繼的結點
- 重量:表示該結點所含有的程序量或結點的執行時間
- 程序執行
- 順序執行
- 順序性
- 封閉性:程序運行時獨占全機資源
- 可再現性
- 并發執行
- 間斷性
- 失去封閉性
- 不可再現性
- 順序執行
- 前趨圖
進程的描述
- 進程的定義和特征
- 進程定義
- 進程是程序的一次執行
- 進程是一個程序及其數據在處理機上順序執行時發生的活動
- 進程是系統進行資源分配和調度的一個獨立單位
- 進程結構
- 進程控制塊PCB:使程序能獨立運行
- 程序段、相關的數據段、PCB
- 進程特征
- 動態性:它由創建而產生,由調度而執行,由撤銷而消亡
- 程序是指令集是靜態的,進程是動態的
- 并發性:多個進程實體在一段時間內同時進行
- 獨立性:進程實體是獨立運行、獨立分配資源和獨立接受調度的基本單位
- 異步性:各進程獨立、異步(速度不一致)地運行
- 進程定義
- 進程的定義和特征
- 進程的基本狀態和轉換
- 基本狀態
- 就緒狀態:萬事俱備,只差CPU資源
- 執行狀態:獲得CPU資源,正在執行
- 阻塞狀態:由于突發事件,進程放棄處理機而處于暫停狀態
- 轉換
- 進程調度:就緒態-->運行態
- 被高優先級任務搶占或超時:運行態-->就緒態
- I/O請求:運行態-->阻塞態
- I/O完成:阻塞態-->就緒態
- 基本狀態
- 掛起操作
- 執行的進程暫停下來,處于靜止狀態
- 進程的基本狀態和轉換
- 進程管理中的數據結構
- 進程控制塊的作用PCB
- 獨立運行基本單位的標志
- 間斷性運行:保護CPU現場
- 進程管理:OS通過CPU對進程實施控制和管理
- 進程調度:提供進程狀態、優先級等信息
- 進程同步與通信:消息隊列指針,信號量
- 進程控制塊的內容
- 進程標識符:唯一標識一個進程
- 內部標識符:Pid
- 外部標識符:進程的名字
- 處理機狀態:由各種寄存器內容構成
- 通用寄存器
- 指令計數器PC
- 程序狀態字PSW
- 用戶棧指針SP
- 當進程切換時需要把當前進程的狀態的內容保存在進程控制塊中
- 進程標識符:唯一標識一個進程
- 進程控制塊的作用PCB
- 進程管理中的數據結構
- 進程調度信息
- 進程狀態:sched.h定義了6個進程狀態
- 可運行狀態
- 可中斷阻塞狀態
- 不可中斷阻塞狀態
- 僵死狀態
- 暫停態
- 交換態
- 進程優先級
- 其他信息:進程已執行時間
- 事件:阻塞原因
- 進程控制信息
- 程序和數據地址:基地址
- 進程同步和通信機制
- 資源清單
- 鏈接指針
- 進程調度信息
- 進程控制塊的組織方式
- 鏈接方式:指針指向PCB地址
- 索引方式:通過不同狀態的索引表指向PCB地址
- 多級隊列:按照不同狀態組織PCB隊列,同一狀態按照優先級鏈接
進程控制
- 原語:由若干條指令組成,用于完成一定功能
- 是原子操作,一個操作中的所有動作要么不做,要么全做
- 進程的創建
- 進程圖:描述一個進程的家族關系的有向圖
- 子進程可以繼承父進程所擁有的資源
- 當子進程被撤銷時,應將其從父進程那里獲得的資源歸還給父進程
- 在撤銷父進程時,也必須同時撤銷其所有的子進程
- 引導進程創建另一個進程的事件
- 用戶登錄
- 作業調度
- 提供服務
- 應用請求
- 進程創建 fork()函數
- 申請空白PCB
- 為新進程分配資源
- 初始化進程控制塊
- 將進程插入就緒隊列,啟動調度
- 進程圖:描述一個進程的家族關系的有向圖
- 進程終止 exit()函數
- 根據被終止進程的PID,找到PCB,讀取進程狀態
- 若處于執行狀態,則終止執行,重新調度
- 若有子孫進程,則終止所有子孫進程
- 歸還所有資源給父進程或系統
- 從所在隊列移除終止進程PCB
- 進程的阻塞與喚醒
- 阻塞過程 block
- 調用阻塞原語block把自己阻塞
- 狀態由執行改為阻塞,將PCB插入阻塞隊列
- 重新調度,將處理機分配給另一就緒進程
- 喚醒過程 wakeup
- 從阻塞隊列中移除
- 狀態由阻塞改為就緒
- PCB插入到就緒隊列
- 阻塞過程 block
- 進程的掛起與激活
- 掛起原語 suspend
- 檢查被掛起進程的狀態
- 活動就緒:靜止就緒
- 活動阻塞:靜止阻塞
- PCB復制到指定區域
- 檢查被掛起進程的狀態
- 激活原語 active
- 檢查激活進程的狀態
- 靜止就緒:活動就緒
- 靜止阻塞:活動阻塞
- 檢查激活進程的狀態
- 掛起原語 suspend
- 原語:由若干條指令組成,用于完成一定功能
進程的同步
- 進程同步的基本概念
- 臨界資源:互斥使用的資源
- 臨界區:訪問臨界資源的那段代碼
- 信號量機制
- 按照功能分為
- 互斥信號量:0或1
- 資源信號量:數字表示資源的可用個數
- 按照機制分為
- 整型信號量:定義一個整型量,wait、signal,P、V操作
- 記錄型信號量:不存在忙等現象
- AND型信號量:同步機制,原子操作
- 信號量集:分配多個資源
- 按照功能分為
- 管程機制
- 進程同步的基本概念
經典進程的同步問題
- 生產者/消費者問題
- 生產者和消費者進程共享一個大小固定的緩沖區n
- 分別設置兩個指針in和out
- in指向生產者將存放數據的存儲單元
- out指向消費者將取出數據的存儲單元
- 創建信號量實現生產者和消費者進程的同步
- 互斥信號量mutex:進程對緩沖池互斥使用
- 資源信號量empty:空緩沖區的數量
- 資源信號量full:滿緩沖區的數量
- 讀者/寫者問題
- 允許多個讀者進程可以同時讀數據
- 寫者進程互斥寫數據
- 若有寫者進程正在寫數據,則不允許讀者進程讀數據
- 讀者優先:只有當全部讀者退出,才允許寫者進入寫數據
- 哲學家進餐問題
- 記錄型信號量:wait、signal考慮左筷子和右筷子(可能存在死鎖)
- AND信號量:Sswait、Ssignat
- 生產者/消費者問題
進程通信
- 進程通信的類型
- 共享存儲器系統
- 基于共享數據結構的通信方式
- 基于共享存儲區的通信方式
- 管道Pipe通信
- 用于連接讀寫進程以實現通信的共享文件
- 消息傳遞方式
- 直接通信:利用OS提供的發送命令Send、Receive
- 間接通信
- 信箱:通過中間實體(如共享數據結構)
- 消息隊列:msgsnd、msgrcv、msgget
- 共享存儲器系統
- 進程通信的類型
線程VS進程
- 調度:線程是調度分配的基本單位,進程是擁有資源的基本單位
- 并發性:線程并發執行效率更高
- 擁有資源:線程僅有少量資源來完成運行需求,不擁有系統資源
- 獨立性:線程獨立性更低
- 系統開銷:切換線程系統開銷低
網站閱讀
https://geminiplanet.cn/Operating-System-4/?geminiplanet.cn總結
以上是生活随笔為你收集整理的模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字体怎么安装到电脑上_文章还在使用电脑上
- 下一篇: android 删除文件 代码_代码审计