第二章 程序管理
引入程序的原因
為了提高資源利用率必須讓多個程式併發執行。
程式的併發執行出現了新的特徵:間斷性、 失去封閉性、 不可再現性。
為了讓程式能正確併發執行,引入程序概念。
程序的定義
程式:指令的有序集合。
程序(process)是程式的一次執行。
程序的特徵
(1)結構特徵:程式+資料+pcb =程序
(2)動態性:①是程式的執行過程;
②有生命週期;
(3)併發性:多個程序可併發執行;
(4)獨立性:是系統進行資源分配和排程的獨立單位,
是能獨立執行的基本單位;
(5)非同步性:程序以不可預知的速度向前推進。
速度不單取決於對應的程式,還受外界環境的影響。
最基本的特徵:動態性、併發性
程序與程式的區別
(1)從定義上看,程式是一組指令的有序集合;程序是程式的
執行過程;
(2)從結構上看,程序不僅包含程式段,還包含資料段和pcb;
(3)程序是動態性,而程式是靜態的;
(4)程序可獨立地、併發地執行,程式則不能獨立、併發執行;
程序與程式的對應關係
在某個時刻乙個程序對應於乙個程式;
在整個生命週期中,程序可執行多個程式;( fork+exec )
乙個程式多次執行則將對應多個程序;
程序三種基本狀態的轉換
單cpu中n個程序的情況
具有掛起狀態的程序狀態轉換
核心態與使用者態
cpu的指令:特權指令,非特權指令
特權指令:關機指令、清主存、啟動外設指令、設定系統時鐘時間、關中斷、修改儲存器管理暫存器等
非特權指令:通用暫存器清0指令,訪問記憶體指令,算術運算指令等
cpu的執行狀態:
核心態(核心態、系統態、管態):(能訪問所有的記憶體空間和i/o埠,能執行特權和非特權指令。)
使用者態(目態)(系統呼叫):(只能訪問分配給自己的記憶體空間,只能執行非特權指令。)
os的核心執行於核心態,應用程式則執行於使用者態。
(程序控制的大量原語)
程序的制約關係
直接制約:源於程序合作
間接制約:源於資源共享
同步為了保證程序正確的併發執行,對多個相關程序在執行的次序上進行協調的過程。
臨界資源
要求互斥共享的資源。
系統中一次僅允許乙個程序使用的資源。
臨界區程序中訪問臨界資源的那部分程式段。
程序必須互斥地進入相關臨界區
臨界區與原語
程序必須互斥地進入相關臨界區,但程序在臨界區內執行時可以被中斷;
原語則不能被中斷。
同步機制(如訊號量機制)應遵循的準則
空閒讓進。
忙則等待。
有限等待。
讓權等待。
用記錄型訊號量實現互斥時:
為每一類臨界資源需定義乙個訊號量:
※訊號量的初值:
s.value的初值為對應臨界資源的初始個數;
s.l的初值為null。
※訊號量中的成員value>=0時,表示當前的空閒資源 數;value<0時,其絕對值表示因競爭該類資源而阻塞的程序個數;
※ wait( )相當於申請乙個臨界資源;
※ signal( )相當於釋放乙個臨界資源。
如系統中某類臨界資源,初始個數為3,則
對應訊號量的初值為3;
當訊號量值為-2時,表示已有5個程序申請過該資源,其中3個得到了,還有2個沒得到資源被阻塞;
當n個程序申請該資源時,訊號量的取值範圍為:[3-n, 3]。
如某個資源最多同時允許2個程序同時使用,則其訊號量的初值是2。
利用訊號量實現同步
分別為每種同步關係(乙個程序等另乙個程序完成某個動作)設定乙個同步訊號量s,其初值為0;
在需要等其他程序的地方插入wait(s);
在完成其他程序所等的動作處插入signal(s)。
使用訊號量解決程序同步問題的步驟
(1)確定程序:
包括程序的數量、程序的工作內容。
(2)確定程序之間的互斥、同步關係:
檢查程序間要競爭哪些臨界資源,以及有哪些工作必須在合作程序完成某個動作後才能進行,以此來確定程序間是互斥還是同步。
(3)確定訊號量:
分別為每種臨界資源定義乙個訊號量,初值為臨界資源的初始個數;分別為每種同步關係定義乙個訊號量,初值為0。
每個訊號量在使用以前都必須先定義並賦好初值。
(4)用類程式語言描述演算法。
根據程序的工作內容寫出程序對應的關鍵動作;然後:
在需要使用臨界資源的程式段前通過加相應訊號量的p操作來申請該資源,在使用完臨界資源後加相應訊號量的v操作來釋放該資源。
在需要等合作程序完成某個動作才能執行的程式段之前加相應訊號量的p操作;在完成被合作程序所等的動作之後加相應訊號量的v操作。
注意:每個訊號量的p、v操作通常是成對的。
管程用來實現同步的一張機制;
管程比訊號量容易保證正確性;
管程的組成:
管程名稱
區域性於管程內部的共享資料結構的說明;
對該資料結構進行操作的一組過程;
初始化共享資料結構的語句。
程序通訊的三種型別:
共享儲存器通訊
訊息通訊
直接通訊(如共享訊息佇列通訊)
間接通訊(如信箱通訊)
管道通訊
訊息緩衝佇列通訊機制
執行緒的引入
將擁有資源的實體和執行的實體分開,使執行的實體具有較少的資源,從而減少併發執行的開銷,從而提高系統的併發程度。
擁有資源的基本單位——程序;
執行的基本單位(即cpu排程和分派的單位)——執行緒。
執行緒是程序內乙個相對獨立的執行單位,乙個程序可以有乙個或多個執行緒(至少有乙個),這些執行緒共享這個程序的**、資料及大部分管理資訊,但每個執行緒有自己的程式計數器、堆疊和執行緒控制塊。
但對使用者級執行緒而言,核心進行cpu排程仍然以程序(而不是使用者級執行緒)為單位。
第二章 作業系統
考試題型分析 選擇題 考試時間 上午試題型別 選擇題分值 6 8分 分值佔比 舉例 包餃子。前驅圖表示出了有些任務是有先後順序的,有些任務是可以並行操作的,箭頭表示約束。首次適應法 最佳適應法 最差適應法 迴圈首次適應法 邏輯位址與實體地址轉換 那麼如何根據邏輯位址求實體地址呢?我們得首先知道那一部...
作業系統重點快覽第四章
第四章 儲存器管理 符號位址 邏輯位址 實體地址的概念 邏輯位址,也叫做相對位址,或虛擬位址 邏輯位址空間可以是一維的 如連續分配 分頁系統 或二維的 如分段系統和段頁式系統 實體地址,也叫做絕對位址,實位址,或記憶體位址 實體地址空間始終是一維的 重定位 即位址對映 將程式中使用的邏輯位址轉換成處...
作業系統重點快覽第四章
第四章 儲存器管理 符號位址 邏輯位址 實體地址的概念 邏輯位址,也叫做相對位址,或虛擬位址 邏輯位址空間可以是一維的 如連續分配 分頁系統 或二維的 如分段系統和段頁式系統 實體地址,也叫做絕對位址,實位址,或記憶體位址 實體地址空間始終是一維的 重定位 即位址對映 將程式中使用的邏輯位址轉換成處...