操作系统第二章进程的描述与控制
生活随笔
收集整理的這篇文章主要介紹了
操作系统第二章进程的描述与控制
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第二章進(jìn)程的描述與控制
前驅(qū)圖和程序執(zhí)行
程序并發(fā)執(zhí)行
程序的并發(fā)執(zhí)行
程序并發(fā)執(zhí)行時的特征
- 間斷性
- 失去封閉性
- 不可再現(xiàn)性
進(jìn)程的描述
進(jìn)程的定義
- 進(jìn)程是程序的一次執(zhí)行
- 進(jìn)程是一個程序及其數(shù)據(jù)在處理機上順序執(zhí)行時所發(fā)生的活動
- 進(jìn)程是具有獨立功能的程序在一個數(shù)據(jù)集合上運行的過程,它是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位
進(jìn)程的特征
- 動態(tài)性
- 并發(fā)性
- 獨立性
- 異步性
從操作系統(tǒng)角度分類
- 系統(tǒng)進(jìn)程
- 用戶進(jìn)程
進(jìn)程和程序的區(qū)別
- 進(jìn)程是動態(tài)概念,而程序則是靜態(tài)概念
- 程序是指令的有序集合,永遠(yuǎn)存在;進(jìn)程強調(diào)是程序在數(shù)據(jù)集上的一次執(zhí)行,有創(chuàng)建有撤銷,存在是暫時的;
- 進(jìn)程具有并發(fā)性,而程序沒有
- 進(jìn)程可創(chuàng)建其他進(jìn)程,而程序并不能形成新的程序
- 進(jìn)程是競爭計算機資源的基本單位,程序不是
進(jìn)程和程序的聯(lián)系
- 進(jìn)程是程序在數(shù)據(jù)集上的一次執(zhí)行
- 程序是構(gòu)成進(jìn)程的組成部分,一個程序可對應(yīng)多個進(jìn)程,一個進(jìn)程可包括多個程序
- 進(jìn)程的運行目標(biāo)是執(zhí)行所對應(yīng)的程序
- 從靜態(tài)看,進(jìn)程由程序、數(shù)據(jù)和進(jìn)程控制塊(PCB)組成
進(jìn)程的基本狀態(tài)及轉(zhuǎn)換
- 進(jìn)程的三種基本狀態(tài)
- 就緒狀態(tài)ready
- 執(zhí)行狀態(tài)running
- 阻塞狀態(tài)block
- 三種基本狀態(tài)的轉(zhuǎn)換
- 創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)
- 五狀態(tài)進(jìn)程模型
- 注意
- 阻塞態(tài)->運行態(tài)和就緒態(tài)->阻塞態(tài)這二種狀態(tài)轉(zhuǎn)換不可能發(fā)生
掛起操作和進(jìn)程狀態(tài)的轉(zhuǎn)換
- 掛起和阻塞的區(qū)別
- 掛起操作的目的
- 終端用戶的需要: 修改、檢查進(jìn)程
- 父進(jìn)程的需要:修改、協(xié)調(diào)子進(jìn)程
- 對換的需要:緩和內(nèi)存
- 負(fù)荷調(diào)節(jié)的需要:保證實時任務(wù)的執(zhí)行
- 關(guān)鍵圖
進(jìn)程管理中的數(shù)據(jù)結(jié)構(gòu)
- 進(jìn)程控制塊PCB的作用
- 作為獨立運行基本單位的標(biāo)志
- 能實現(xiàn)間斷性運行方式
- 提供進(jìn)程管理所需要的信息
- 提供進(jìn)程調(diào)度所需要的信息
- 實現(xiàn)與其他進(jìn)程的同步與通信
- 進(jìn)程控制塊的信息
- 進(jìn)程標(biāo)識符
- 外部標(biāo)識符PID
- 內(nèi)部標(biāo)識符(端口)
- 處理機狀態(tài)
- 通用寄存器
- 指令計數(shù)器
- 程序狀態(tài)字PSW
- 用戶棧指針
- 進(jìn)程調(diào)度信息
- 進(jìn)程狀態(tài)
- 進(jìn)程優(yōu)先級
- 進(jìn)程調(diào)度所需的其他信息
- 事件
- 進(jìn)程控制信息
- 程序和數(shù)據(jù)的地址
- 進(jìn)程同步和通信機制
- 資源清單
- 鏈接指針
- 進(jìn)程控制塊的組織方式
- 線性方式
- 鏈接方式
- 索引方式
- 進(jìn)程標(biāo)識符
進(jìn)程控制
操作系統(tǒng)內(nèi)核
- 兩大功能
- 支撐功能
- 中斷管理
- 時鐘管理
- 原語操作
- 進(jìn)程的管理,由若干原語(primitive)來執(zhí)行
- 資源管理功能
- 進(jìn)程管理
- 存儲器管理
- 設(shè)備管理
- 支撐功能
- 狀態(tài)
- 系統(tǒng)態(tài),管態(tài),內(nèi)核態(tài)
- 用戶態(tài),目態(tài)
進(jìn)程的創(chuàng)建
- 進(jìn)程的層次結(jié)構(gòu)
- 父進(jìn)程
- 子進(jìn)程
- 引起創(chuàng)建進(jìn)程的事件
- 用戶登錄
- 作業(yè)調(diào)度
- 提供服務(wù)
- 應(yīng)用請求
- 進(jìn)程的創(chuàng)建過程
- 1.申請空白PCB
- 2.為新進(jìn)程分配其運行所需的資源
- 3.初始化進(jìn)程塊PCB
- 4.如果進(jìn)程就緒隊列能夠接納新進(jìn)程,便將新進(jìn)程插入就緒隊列
- 進(jìn)程的終止
- 引起進(jìn)程終止的事件
- 1.正常結(jié)束
- 2.異常結(jié)束
- 3.外界干預(yù)
- 進(jìn)程的終止過程
- 1.根據(jù)被終止進(jìn)程的標(biāo)識符
- 引起進(jìn)程終止的事件
- 進(jìn)程的阻塞與喚醒
- 引起進(jìn)程阻塞和喚醒的事件
- 請求系統(tǒng)服務(wù)而未滿足
- 啟動某種操作而阻塞當(dāng)前進(jìn)程
- 新數(shù)據(jù)尚未到達(dá)
- 無新工作可做:系統(tǒng)進(jìn)程
- 進(jìn)程阻塞過程(自己阻塞自己)
- 進(jìn)程喚醒過程(系統(tǒng)或其他進(jìn)程喚醒自己)
- 引起進(jìn)程阻塞和喚醒的事件
- 進(jìn)程的掛起與激活
- suspend
- active
進(jìn)程同步
- 基本概念
- 兩種形式的制約關(guān)系
- 間接相互制約關(guān)系
- 互斥——競爭
- 直接相互制約關(guān)系
- 同步——協(xié)作
- 間接相互制約關(guān)系
- 臨界資源
- 分區(qū)
- 進(jìn)入?yún)^(qū)enter section
- 臨界區(qū)critical section
- 退出區(qū)exit section
- 剩余區(qū)remainder section
- 同步機制應(yīng)遵循的規(guī)則
- 1.空閑讓進(jìn)
- 2.忙則等待
- 3.有限等待
- 4.讓權(quán)等待
- 兩種形式的制約關(guān)系
- 進(jìn)程同步機制
- 軟件同步機制:都沒有解決讓權(quán)等待,而且部分方法還會產(chǎn)生死鎖的情況
- 硬件同步機制
- 關(guān)中斷
- 利用Test-and-Set指令實現(xiàn)互斥
- 利用swap指令實現(xiàn)進(jìn)程互斥
- 信號量機制
- 整型信號量
- 記錄型信號量
- 由于整型信號量沒有遵循讓權(quán)等待原則,記錄型允許負(fù)數(shù),即阻塞鏈表
- AND型信號量
- 信號量集
- 理解:AND型號量的wait和signal僅能對信號施以加1或減1操作,意味著每次只能對某類臨界資源進(jìn)行一個單位的申請或釋放。當(dāng)一次需要N個單位時,便要進(jìn)行N次wait操作,這顯然是低效的,甚至?xí)黾铀梨i的概率。此外,在有些情況下,為確保系統(tǒng)的安全性,當(dāng)所申請的資源數(shù)量低于某一下限值時,還必須進(jìn)行管制,不予以分配。因此,當(dāng)進(jìn)程申請某類臨界資源時,在每次分配前,都必須測試資源數(shù)量,判斷是否大于可分配的下限值,決定是否予以分配
- 操作
- Swait(S1,t1,d1…Sn,tn,dn)
- Ssignal(S1,d1…Sn,dn)
- 特殊情況
- 經(jīng)典進(jìn)程的同步問題
- 生產(chǎn)者–消費者問題
- 哲學(xué)家進(jìn)餐問題
- 讀者–寫者問題
進(jìn)程通信
進(jìn)程通信是指進(jìn)程之間的信息交換,又稱低級進(jìn)程通信
進(jìn)程通信的類型
- 共享存儲器系統(tǒng)
- 基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式
- 生產(chǎn)者和消費者
- 基于共享存儲區(qū)的通信方式
- 高級通信
- 基于共享數(shù)據(jù)結(jié)構(gòu)的通信方式
- 管道通信系統(tǒng)(pipe)
- 高級通信
- 消息傳遞系統(tǒng)
- 高級通信
- 方式分類
- 直接通信
- 間接通信
- 客服機–服務(wù)器系統(tǒng)
消息傳遞通信的實現(xiàn)方式
- 直接消息傳遞系統(tǒng)
- 信箱通信
線程的基本概念
線程的引入
- 線程的引入正是為了簡化線程間的通信,以小的開銷來提高進(jìn)程內(nèi)的并發(fā)程度
- 多線程并發(fā)的不足
- 進(jìn)程的兩個基本屬性
- 一個擁有資源的獨立單位,可獨立分配系統(tǒng)資源
- 一個可獨立調(diào)度和分派的基本單位,PCB
- 程序并發(fā)執(zhí)行所需付出的時空開銷
- 創(chuàng)建進(jìn)程
- 撤銷進(jìn)程
- 進(jìn)程切換
- 進(jìn)程間通信效率低
- 將分配資源和調(diào)度兩個屬性分開
- 進(jìn)程的兩個基本屬性
- 線程——作為調(diào)度和分派的基本單位
- 進(jìn)程是系統(tǒng)資源分配的單位,線程是處理器調(diào)度的單位
- 線程表示進(jìn)程的一個控制點,可以執(zhí)行一系列的指令。通常,和應(yīng)用程序的一個函數(shù)相對應(yīng)
- 進(jìn)程分解為線程還可以有效利用多處理器和多核計算機
線程與進(jìn)程的比較
- 不同點
- 調(diào)度的基本單位
- 并發(fā)性
- 相似點
- 狀態(tài):運行、阻塞、就緒
- 線程具有一定的生命期
- 進(jìn)程可創(chuàng)建線程,一個線程可創(chuàng)建另一個子線程
- 多個線程并發(fā)執(zhí)行時仍然存在互斥與同步
線程的實現(xiàn)
- 線程的實現(xiàn)方式
- 內(nèi)核支持線程KST
- 用戶級線程ULT
- 組合方式
- 多線程OS中的進(jìn)程屬性
- 進(jìn)程是一個可擁有資源的基本單位
- 多個線程可并發(fā)執(zhí)行
- 進(jìn)程已不是可執(zhí)行的實體
- 線程的狀態(tài)和線程控制塊
- 線程運行的三個狀態(tài)
- 執(zhí)行狀態(tài)
- 就緒狀態(tài)
- 阻塞狀態(tài)
- 線程控制塊TCB
- 線程運行的三個狀態(tài)
思維導(dǎo)圖下載地址
github:希望大家可以給一個star,謝謝支持
碼云:希望大家可以給一個star,謝謝支持
總結(jié)
以上是生活随笔為你收集整理的操作系统第二章进程的描述与控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读《The C Programming
- 下一篇: 为新购Thinkpad T410打造Wi