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