程序順序執行和並發執行的比較
順序執行
並行執行
程序順序執行
間歇執行,多個程序以“走走停停”的方式進行。
該程序已關閉。
該計劃失去了它的關閉。
獨家資源
共享資源
具備當下的能力。
失去再現性
有直接和簡單的約束。
l多通道編程概念及其優勢
1.多道程序設計:就是在壹臺計算機上同時運行兩個或多個程序。
2.多道程序設計的特點:多個程序共享系統資源並同時執行。
3.多道程序的優點:提高資源利用率,增加系統吞吐量。
什麽是過程,過程和程序的區別和聯系
1.工藝介紹:
由於多頻道節目的特點,節目具有並行性、限制性和動態性,這使得難以描述和反映系統中的情況。
2.進程:程序在並發環境中的執行過程。
3.過程和程序的主要區別:
1)程序是永久的,過程是暫時的。
2)程序是靜態的,過程是動態的。
3)該過程由三部分組成。
程序
數據
過程控制塊(描述過程活動的數據結構)
4)流程和程序不是壹壹對應的。
壹個程序可以對應多個進程,即多個進程可以執行同壹個程序。
壹個進程可以執行壹個或幾個程序。
4.程序和過程之間的類比
工藝步驟
預先的
歌唱或樂器的樂譜。
性能還是性能
戲劇
履行
菜單
廚師
5.流程特征:動態、並發、調度、異步和結構化。
l過程的基本狀態及其變換
1.流程的基本狀態:
1)正在運行:進程正在占用CPU;
2)就緒狀態:進程具備運行條件,但尚未占用CPU;
3)阻塞狀態:進程不能享受CPU,因為它在等待壹個事件。
2.流程狀態轉換:
l過程的組成部分和過程控制塊的功能是什麽?
1.工藝組成:由程序、數據集、PCB三部分組成。
2.過程控制塊的作用:過程控制塊是過程組成中最關鍵的部分。
1)每道工序都有獨特的PCB。
2)操作系統根據PCB控制和管理進程。
3)過程的動態性和並發性用PCB表示。
4) PCB是工藝存在的唯壹標誌。
L PCB組織模式
線性隊列、鏈接表、索引表
L UNIX進程管理命令:
L UNIX進程管理命令:
1.PS-顯示流程狀態
功能:檢查系統中當前的流程狀態。
例如
$ ps顯示與控制中斷相關的進程的基本信息
2.休眠——讓進程休眠
函數:暫停進程執行壹段時間,其參數單位為秒。
例如
$ sleep 60將等待60秒,然後返回到$提示符。
3.& amp-後臺命令字符
功能:添加&;在命令行的末尾。字符,這個命令過程將在後臺執行。
例如
$ ls–l/usr & amp;創建壹個顯示目錄命令的進程,該進程在後臺執行,即只有在沒有前臺進程運行時才能運行。
4.等待-等待後臺進程結束。
功能:等待後臺進程結束。
例如
$ wait 2080等待PID為2080的後臺進程終止。
5.終止-終止進程
功能:終止壹個進程的執行。
例如(在超級用戶模式下)
# kill 678停止PID為678的進程。
6.很好-設置優先級
功能:就是執行壹個不同優先級的命令。
例如
普通用戶只能降低優先級:
$ nice–n 10cc f 1 . c執行命令cc f1.c時,nice值為30(即20+10)。
超級用戶(root)可以提高進程的優先級(即增量值可以是不小於-20的負數)。
# nice -n -10 vi abc執行vi abc(編輯命令)的nice值為10(即20-10)。
l進程的同步和互斥
1.同步:是指流程之間在共同完成壹項任務時的直接交互。
2.互斥:獨占訪問是指對同壹物理資源的競爭,相互制約。
什麽是關鍵資源和關鍵領域?
1.關鍵資源:壹次只允許壹個進程使用的資源。
2.關鍵區域:在每個進程中訪問關鍵資源的程序。
3.互斥進入關鍵區域的標準:
1)如果多個進程請求進入空閑臨界區,壹次只允許壹個進程進入。
2)在任何時候,關鍵區域都不能有壹個以上的過程。如果壹個現有的進程進入它自己的臨界區,所有其他試圖進入臨界區的進程都必須等待。
3)進入臨界區的進程要在限定時間內退出,以便其他進程及時進入自己的臨界區。
4)如果進程不能進入自己的臨界區,就應該放棄CPU,避免進程“忙”。
l旗語
1.信號量定義:
信號量(信號燈)= <信號量值,指向PCB的指針>
2.旗語的物理意義:
大於0:表示當前資源的可用數量。
1)信號的值
小於0:其絕對值表示等待使用資源的進程數。
2)信號量的初始值是壹個非負整數變量,代表資源的數量。
3)信號幅度是可變的,但只能通過P和V操作來改變。
操作原語
1.操作原語:
1) P操作壹次,S的值減1,即S = S-1(請求分配壹個資源);
2)如果S≥0,流程繼續執行;
如果s < 0表示沒有資源,則進程的狀態設置為阻塞狀態,對應的PCB連接到信號量隊列的末尾,處理器放棄等待(直到另壹個進程執行V(S)操作)。
2.V操作原語(荷蘭等待)V(S):
1) V操作壹次,S的值加到1,即S = S+1(釋放壹個單位資源);
2)如果s > 0,說明有資源,那麽進程繼續執行;
如果S≤0,信號量隊列上第壹個PCB對應的進程被釋放(阻塞狀態改為就緒狀態),執行V操作的進程繼續執行。
L個進程間簡單同步和互斥的實現
1.P和V原語互斥的壹般模型:
將互斥體的初始值設置為1。
2.壹個簡單的P和V原語操作同步的例子。
供應商和用戶使用緩沖器的關系如下:
S1緩沖區為空(0表示非空,1表示空),初始值為s 1 = 0;
S2緩沖區是否滿(0表示不滿意,1表示滿),初始值S2 = 0;
3.生產者-消費者問題(操作系統的典型例子)
互斥互斥信號量,初始值1;滿緩沖區的數量,初始值為0;空緩沖區的空數量,初始值為n;
4.應用示例
【例1】假設系統中只有壹臺打印機,三個用戶的所有程序在執行時都會使用打印機輸出計算結果。讓每個用戶程序對應壹個進程。問:這三個過程之間的制約因素是什麽?使用P和V運算寫出這些進程使用打印機的算法。
[解決方案]
因為打印機是關鍵資源,三個進程只能互斥使用這臺打印機。設三個進程分別為PA、PB、PC,互斥量初始值為1。執行過程如下:
【例2】判斷下列同步問題的算法是否正確?如有錯誤,請指出原因並改正。
1)讓A和B兩個進程共享壹個緩沖區Q,A向Q寫入信息,B從Q讀取信息,算法框圖如圖所示。
註意:信號量S的初始值是0。
【解決方法】此算法不正確。因為A和B兩個進程共用壹個緩沖區Q,如果A先運行,並且有足夠的信息,那麽緩沖區Q中的信息會在後面被洗出,導致信息丟失,B無法從Q中讀取完整的信息,修正方法如下:
a和B進程同步使用緩沖區Q,應該設置兩個信號量:
Empty表示緩沖區q為空,初始值為1;Full表示緩沖區Q已滿,初始值為0。
算法框圖如下:
2)設A和B是兩個並發進程,它們共享壹個關鍵資源。其運行臨界區的算法框圖如圖所示。
【解決方法】此算法不正確。因為A和B兩個進程並發執行,共享壹個關鍵資源,所以A和B應該互斥使用該關鍵資源,即在某壹時刻只允許壹個進程進入該關鍵資源,沒有時序關系。
修正算法:A和B進程要互斥進入臨界區,設置壹個信號量互斥體,初始值為1。
【例2】有壹臺計算機有兩個I/O通道,分別連接到壹臺卡片輸入機和壹臺打印機。卡機將壹疊卡片壹張壹張地輸入緩沖器B1,處理後移至緩沖器B2,並在打印機上打印。問:
1)系統要設置多少個流程才能完成這個任務?他們的工作是什麽?
2)這些過程之間的相互制約是什麽?
3)用P和V運算寫出這些進程的同步算法。
[解決方案]
1)系統可以設置三個進程來完成這個任務:Read進程負責從卡片輸入機讀取卡片信息並輸入到緩沖區b 1;Get進程負責從buffer B1中取出信息,進行處理,然後將結果發送給buffer B2;打印進程負責從緩沖區B2獲取信息,並在打印機上打印輸出。
2)操作流程:
讀取過程受獲取過程的影響。B1緩沖區充滿信息後,讀取進程無法讀取信息,直到get進程取走所有信息。
Get進程受到Read進程和Print進程的約束:Get進程只能在滿的時候從B1緩沖區取信息,Get進程只能在空的時候把處理結果送入B2緩沖區;
打印進程受到Get進程的約束,只有在B2緩沖區滿了之後,打印進程才能取出信息進行打印輸出。
3)信號量的含義和初始值:
B1滿-緩沖區B1已滿,初始值為0。
B1空-緩沖區B1為空,初始值為0。
B2 full-緩沖區B2已滿,初始值為0。
B2 empty-緩沖區B2為空,初始值為0。
4)操作框圖如下:
l處理簡單的溝通
分類
低級通信機制
高級通信組織
特性
傳輸的信息量非常有限。
溝通效率低
方便高效地交換大量信息。
app應用
互斥同步機制
共用存儲器
信息傳遞
管道文件