進程同步是之多個進程中發生的是按存在某種關系,必須協調動作,相互配合以共同完成一個任務列一個進程等待另一個進程傳遞消息 汽車裝配的流水線上的各道工序
信號量mutex的初值是1統一時刻只允許一個進程進入臨界區k個進程在mutex等待隊列中,當前訪問臨界區的進程是k+1個 每個進程訪問臨界區時,都將mutex減一,所以最終mutex為-k
empty信號量表面是空間空閑資源數目,N個緩沖區,說明初始值為N full信號量表明是蠻的資源數目,這里為0,其初值為0 mutex信號量用於實現互斥訪問初值為1,p(full)和p(mutex)若顛倒順序會導致死鎖
P(S) s=s-1 s>=0的時候執行否則進入等待
V(S) s=s+1 s>=0的時候執行否則釋放隊列第一等待量進程
P原語操作屬於臨界管理區的進入區 V原語離開臨界管理器的退出區
P,V操作可以實現進程同步,進程互斥,進程的前驅關系,進程共享存在大量的信息交換,PV不能承擔
信號量w是為了互斥訪問操作初值為1,P(mutex)是為了互斥訪問rc這一臨界資源不能修改執行順序 P(mutex) V(mutex)存在可以使多個reader同時訪問
TS測試與設置指令是解決互斥訪問區的臨界方法 測試w的值w=1 則返回重新測試 w=0置為w=1進入臨界區 退出臨界區時復位w=0
管城管理的對象是共享數據結構 的一種操作過程
每個進程訪問臨界資源的那段代碼稱為臨界區 每只允許一個進程進入臨界區訪問臨界資源 當一個程序進入后 不允許其他程序進入
共享內存shared memory 不會再系統中產生多分相同的數據
在直接通信方式系統提供的發送源語是send(receiver,message)
信號量初始化后只能實施PV操作 在互斥信號量與同步信號量都使用的進程中,應先執行同步信號量的P操作 信號量初值不能小於0
臨界資源訪問前,先調用進入區代碼
並發進程間由於存在相互制約的關系會產生若干問題1.互斥問題2.同步問題3.死鎖問題4.飢餓問題
打印數據時 讀取數據進程處理數據進程和打印結果進程之間相互關系是同步關系 通過緩沖區相關聯
信息傳遞直接發送信息給一個進程,消息采用內存中若干緩沖區組成隊列 依賴進程或者基礎框架來調用實際執行的代碼
並發進程之間存在的關系又:1.直接感知:相互之間交互2.間接感知,雙方都與第三方交互 如共享資源3,互相不感知 相互間 完全不了解其他進程的存在
程序進入臨界區應遵循:空閑則入 忙則等待 有限等待 讓權等待
共享內存即共享緩沖方式進行通信可同步或異步
套字節是一組進程間交互的協議 可以是異步或者是同步
管道通行是以訪進程發送給另一方只能接受此方式只為同步
實現進程互斥的方法:1.Peterson算法 2.TS指令 3.swap或exchange指令4.信號量
信號量機制所謂的臨界區是指的訪問臨界區的代碼
管程互斥是管程本身實現的 管程內一次只能有一個有一個進程可以在管程內活動
信箱通信機制中接收源語receive的功能是:從指定信箱中取一封信存放到指定內存地址中
TS在進入區
TS下面到lock=false上面臨界區
lock=false退出區
lock=false后面剩余區
進程存在與時間有關的相互制約問題:1.民航飛機訂票系統2.網上銀行存取款3.汽車裝配生產線4.企業成品倉庫出入庫系統
進入去是用來檢查可以進入臨界區 需要設置正在訪問的臨界區標志
消息緩沖通行機制包括:消息緩沖區 消息隊列首地址 同步互斥信號量 發送接收消息原語
進程互斥的解決方案“1.由競爭方平等協商 2.設置進程管理者
管道通信具有傳送數據量大的優點,但唯一不足的是通信速度慢
PV操作可以實現進程的同步或者互斥 它主要的不足是:1.程序不易讀懂2.程序不利於修改和維護 3.正確性難以保證
”消息緩沖“的通訊方式:在內存中開辟若干區域發送進程中請一個區域並講信息送入 然年后后把他插入到接收進程的相應共享內存,在相互通信的進程之間設置一公共區域 一組進程 向該公共區域隊列中之后通知接受進程寫 另一組進程從公共區域的讀 通過這種法師實現兩組進程間的信息交換
”信箱“的通訊方式:發送進程首先鏈接兩個進程的通信機制,然后把信息送入該機制,發送進程不能直接建立聯系,而接受進程可以在任何時刻從該機制中取走信息
”管道“的通訊方式:發送進程創建好連接兩個進程 一個打開的共享文件 然后寫入數據流 接收進程 在需要時 可以從該文件讀取數據 寫入和讀取數據的長度是可變的
信號量是低級的通訊方法
先來先服務的調度算法不可搶占