作業系統概論 06

2022-04-10 12:43:45 字數 4799 閱讀 8515

【6】併發程序

6.1程序的併發性

1程序的順序性和併發性:程序的順序性是指程序在順序處理器上執行是嚴格按照順序執行 當乙個程序獨佔處理器順序執行時 具有封閉性和可再現性

若系統中存在一組可同時執行的程序

則稱為改組程序具有併發性

並把可同時執行的程序稱為

併發程序

2 併發程序相互之間可能是無關的也可能是有交往的:如果乙個程序的執行不影響其他程序的執行 則這些併發程序相互之間無關的 如果乙個程序的執行

影響程序的執行

則這些併發程序之間是有交往的

6.2與時間有關的錯誤

1併發程序的執行速度受自身原因以及程序排程策略的影響:乙個程序執行會被中斷 且斷點不是固定的 乙個勁被中斷後 哪個程序可以執行 被中斷的程序什麼時候占用處理器 是程序排程策略有關的 因此程序的執行速度是不能由自己決定的

2併發程序交替使用共享資源時會出現跟時間有關的錯誤:由於共享資源的原因 加上二進位制併發程序的隨機性 乙個程序對另乙個程序的影響是不可

**的,造成不正確的因素與程序占用處理器的時間

執行的速度以及外界的影響有關的

因此被稱為與時間有關的錯誤

3 分析與時間有關的錯誤:乙個飛機航班系統有n個售票處 每個售票區通過終端訪問系統公共資料區 嘉定工作資料區的一些單元

aj(j=1,2,...)

分別存放 x月x日

x次航班的餘票數 設

p1 p22.

。。pn

表示各個售票區的處理程序

r1 r2 rn

表示程序執行占用工作單位 當售票處有人買票

程序如下工作 process pi(i=1,2...) begin 按照旅客要求找到

aj   

ri = aj ; if ri >= 1 then; begin ri :=ri-1:aj =ri 輸出一張票

endelse :輸出票已經售完

end;

這裡如果有兩個都需要同乙個班次的票

然後同時購買

但是票只有一張

而程序併發執行可能會把一張票買個幾個使用者,核心問題就是多個程序同時訪問乙個變數產生的問題。

6.3 臨界值

pv操作

1臨界值的定義:併發程序中與共享變數有關的程序斷 稱為臨界值

2相關臨界值區管理要求

1一次到多乙個程序能進入臨界區 當有程序在臨界區執行時 其他想想進入臨界區的程序必須等待

2不能讓乙個程序無限制的在臨界區執行 即任何乙個進入臨界區的程序必須在有限的時間內退出臨界區

3不能強迫乙個程序無限的等待進入它的臨界區 即有程序退出臨界區 應讓乙個等待進入臨界區的程序進入它的臨界區執行 。

3不可中斷的過程稱為原語

pv操作分別是兩個原語

p操作原語和

v操作原語

4p操作和

v操作的定義

p操作p(s):

將訊號量s減去

1 如果結果小於

0 則呼叫

p(s)

的程序被置成等等待訊號量

s的狀態

v操作

v(s):

將訊號量s加

1 若結果不大於

0 則釋放乙個等待訊號量

s的程序

6.4 程序的互斥和同步

1程序的互斥的含義:程序的互斥是指的當有若干程序都要使用某一共享資源時 任何時刻最後只允許乙個程序去使用 其他要使用該程序的資源的程序必須等待 知道占用資源者釋放了改資源

2 用pv操作實現對相關臨界區的管理:乙個訊號量與一組涉及共享的相關臨界區聯絡起來 訊號量的初始值為

1 任何乙個程序要進入臨界區前 先呼叫

p操作 執行臨界區的操作後 退出臨界區時呼叫

v操作 由於訊號量的初始值為

1 程序退出後執行

v操作 若有程序在等待則釋放乙個程序 這樣就達到了臨界區管理的第二個和第三個要求。

3 程序同步的含義:程序同步只是併發程序之間存在的一種制約管理,乙個程序的執行依賴另乙個程序訊息,當乙個程序沒有得到另乙個程序的訊息時應等待

知道訊息到達才被喚醒

4 用pv操作實現程序同步:用乙個訊號量與乙個訊息聯絡起來 當訊號量的值為

0時 便是期望的訊息尚未產生 當訊號量值為非

0時表示期望的訊息已經存在,在用

pv操作實現同步時 乙個訊號量與乙個訊息量聯絡在一起 當有多個訊息時必須定義多個訊號量 測試不同的訊息是否到達或傳送不同訊息時 應對不同資訊量呼叫

p操作或者

v操作。

5 用pv操作解決程序的同步與互斥的混合問題

:程序的同步與程序的互斥都涉及併發程序訪問共享資源的問題 可以看到程序的互斥實際上程序同步的一種特殊情況,若干程序互斥程序發出」歸還資源」的資訊

(呼叫v操作)後,它就可以去使用資源 因此 互斥使用資源的程序之間實際上也存在乙個程序依賴另乙個程序的發出的資訊的制約關係

6.5 程序通訊

1程序通訊的含義:通過專門的通訊機制實現程序間交換大量資訊的通訊方式稱為 程序通訊

2信件和信箱 乙個程序要向其他程序傳送訊息 應先組織好一封信 信件內容應包括 傳送者名 資訊(或資訊存放位址和長度)等

/不等回信 回信存放位址  若干個程序都可以向同一程序傳送信件 接受信件的程序可以設定乙個信箱 信箱的大小決定了信箱中可以容納的信件數 可以便於了解信箱中的情況 每個信箱可以由信箱說明

信箱體兩部分組成

3實現程序通訊的基本原語

有兩條 send 傳送 和

receive

接受原語。

1>send*

(n m

)功能:把信件

m送到指定信箱n中

2>receive(n,x)

功能 把指定信箱

n中取出一封信存放到指定的位址中

6.6 死鎖

1死鎖的形成

1>死鎖若系統中存在一組程序(兩個或者多個程序),它們中的每乙個程序都使用某種資源而又等待其中另乙個程序所占用的資源

這種等待永遠不能結束

則稱系統出現了某種死鎖或者稱這組程序處於

死鎖狀態 >2引起死鎖的原因形成死鎖的原因是系統提供的資源數比程序要求的資源要少

或者是某若干程序要求資源的總數大於系統提供的資源數

2產生死鎖的必要條件:互斥使用資源

占有目的等待資源

非搶奪式分配

迴圈等待資源

1> 互斥使用資源 :每乙個資源每次只能給乙個程序使用

2> 占有且等待資源 :乙個程序申請資源得不到滿足時處於等待資源的狀態且不釋放已佔資源

3> 非搶奪式分配 :任何乙個程序不能搶奪另乙個程序所佔資源

4> 迴圈等待資源:存在一組程序 其中每乙個程序分別等待另乙個所占用的資源

3死鎖的防止策略

1) 靜態分配資源

靜態分配資源是指程序必須在開始執行前就申請它所要的全部資源

僅當系統能滿足程序的資源申請要求且把資源分配給程序後

該程序才開始執行

顯然採用靜態分配資源策略後

程序在執行過程中不會再申請資源

故不可能出現占有某些資源再等待其他資源的情況

即四個必要條件中的

占用並等待資源和迴圈等待資源兩個條件不成立

從而防止死鎖的發生

2) 按序分配資源

對系統中每乙個資源給出乙個編號,規定任何乙個程序申請兩個以上資源時,總是申請編號小的資源,再申請編號大的資源

總是先申請編號小的資源

在申請編號大的資源

按照這種策略分配資源可破壞

迴圈等待資源的條件

達到防止死鎖的目的

3) 剝奪式分配資源:剝奪式分配資源是當乙個程序申請資源得不到滿足時則可以從另乙個程序那裡去搶奪

這種分配策略目前只適用於對處理器和主存資源的分配

這種分配策略破壞了4個必要中第三項 可方式死鎖的發生。

4死鎖的避免

死鎖的避免是解決死鎖的另一種方式,它不同於死鎖的防止

在系統中不採用防止死鎖的資源分配策略

而是估計到可能有死鎖發生時避免死鎖的發生

乙個古典的測試方法是銀行家法(系統現有的資源可以滿足程序的最大需求

就滿足程序的當前申請

否則推遲分配)

5死鎖的檢查

對資源的申請和不分配不加限制

只要有剩餘的資源就可以吧資源分配給申請者

這樣可能會出現死鎖

系統定時執行乙個死鎖檢測程式

如果檢測到死鎖發生

則必須先解除死鎖再繼續工作

實現死鎖檢測的一種方法是可以設定兩張**來記錄資源使用情況和程序等待資源的情況

spooling印表機當某程序要求列印輸出時,作業系統並不是把某台實際印表機分配給該程序,而是在磁碟上輸出井中為其分配一塊區域,該程序的輸出資料高速存入輸出井的相

關區域中,而並不直接在印表機上輸出。輸出井上的區域相當於一台虛擬的印表機,各程序的列印輸出資料都暫存放在輸出井中,形成乙個輸出佇列。最後,由 spooling的緩輸出程式依次將輸出佇列中的資料實際地列印輸出。 這樣,從使用者的角度來看,他似乎獨佔印表機,可以隨時根據執行的情況輸出各種結果,但從系統的角度來看,同一臺印表機又可以分時地為每乙個使用者服務。使用者 程序實際上獲得的是虛擬裝置。 spooling系統的引入緩和了cpu與裝置的速度的不均勻性,提高了cpu與裝置的並行程度。

作業系統概論

作業系統 operation system,縮寫為os 是管理計算機系統資源 控制程式執行 改善人機介面和應用軟體提供支援的一種系統軟體。定義 把乙個程式在乙個資料集上的一次執行稱為乙個程序 process 程序是動態的。在現代作業系統中,把使用者的乙個計算問題或乙個應用問題作為乙個程序,把該程序中...

作業系統概論

作業系統的三個基本型別是 批處理作業系統 分時作業系統和實時作業系統。批處理作業系統的主要缺點是 缺少互動性允許多個使用者以互動方式使用計算機的作業系統稱為 允許多個使用者將多個作業提交給計算機集中處理的作業系統稱為 計算機系統能及時處理過程 控制資料並做出響應的作業系統稱為 分時作業系統 批處理作...

作業系統概論

計算機系統是能夠按照人的要求接收和儲存資訊,能對資訊進行處理並提供所需結果,其結果 輸出資訊 取決於所接受的資訊 輸入資訊 及相應的處理方法。1.學習過程 原先在學習計算機四級的開始中,邊學習過一部分相關的作業系統的知識,這次也算是一步簡單的複習吧。在本次學習過程中,了解了先前沒有看過的細節的知識部...