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