計(jì)算機(jī)操作系統(tǒng)進(jìn)程(線程)的同步與通信
發(fā)布時(shí)間:2009/1/17 0:00:00 訪問(wèn)次數(shù):1024
系統(tǒng)以并發(fā)方式運(yùn)行的各個(gè)進(jìn)程,不可避免地要共同使用一些共享資源以及相互之間的通信。因此,對(duì)于一個(gè)完善的多進(jìn)程操作系統(tǒng)來(lái)說(shuō),系統(tǒng)必須具有完各的同步和通信機(jī)制。
為了實(shí)現(xiàn)各進(jìn)程之間的合作和無(wú)沖突的運(yùn)行,在各進(jìn)程之間必須建立一些制約關(guān)系,其中 一種制約關(guān)系叫做直接制約關(guān)系,另一種制約關(guān)系則叫做間接制約關(guān)系。
直接制約關(guān)系源于進(jìn)程之間的合作。例如,有進(jìn)程a和進(jìn)程b兩個(gè)進(jìn)程,它們需要通過(guò)訪問(wèn)同一個(gè)數(shù)據(jù)緩沖區(qū)合作完成一項(xiàng)工作,進(jìn)程a負(fù)責(zé)向緩沖區(qū)寫入數(shù)據(jù),進(jìn)程b負(fù)責(zé)從緩 沖區(qū)讀取該數(shù)據(jù)。顯然,當(dāng)進(jìn)程a還未向緩沖區(qū)寫入數(shù)據(jù)時(shí)(緩沖區(qū)為空時(shí)),進(jìn)程b因不能從緩沖區(qū)得到有效數(shù)據(jù)而應(yīng)處于等待狀態(tài);只有等進(jìn)程a向緩沖區(qū)寫入了數(shù)據(jù)后,才應(yīng)通知 進(jìn)程b去取數(shù)據(jù)。相反,當(dāng)緩沖區(qū)的數(shù)據(jù)還未被進(jìn)程b讀取時(shí)(緩沖區(qū)為滿時(shí)),進(jìn)程a就不 能向緩沖區(qū)寫入新的數(shù)據(jù)而應(yīng)處于等待狀態(tài);只有等進(jìn)程b自緩沖區(qū)讀取數(shù)據(jù)后,才應(yīng)通知 進(jìn)程a去寫入數(shù)據(jù)。顯然,如果這兩個(gè)進(jìn)程不能如此協(xié)調(diào)工作,則勢(shì)必造成嚴(yán)重的后果。
間接制約關(guān)系源于對(duì)資源的共享。例如,進(jìn)程a和進(jìn)程b共享一臺(tái)打印機(jī),如果系統(tǒng)已經(jīng)把打印機(jī)分配給了進(jìn)程a,則進(jìn)程b因不能獲得打印機(jī)的使用杈而應(yīng)處于等待狀態(tài);只有當(dāng)進(jìn)程a把打印機(jī)釋放后,系統(tǒng)才能喚醒進(jìn)程b使其獲得打印機(jī)的使用權(quán)。如果這兩個(gè)進(jìn)程不這樣做,那么也會(huì)造成極大的混亂。
由上可知,在多進(jìn)程合作工作的過(guò)程中,操作系統(tǒng)應(yīng)解決兩個(gè)問(wèn)題:一是各進(jìn)程間應(yīng)該具有一種互斥關(guān)系,即對(duì)于某個(gè)共享資源,如果一個(gè)進(jìn)程正在使用,則其他進(jìn)程只能等待,等到該進(jìn)程釋放該資源后,等待的進(jìn)程之l才能使用它;二是相關(guān)的進(jìn)程在執(zhí)行上要有先后的次序,一個(gè)進(jìn)程要等其伙伴發(fā)來(lái)通知,或建立了某個(gè)條件后才能繼續(xù)執(zhí)行,否則只能等待。
進(jìn)程之間這種制約性的合作運(yùn)行機(jī)制叫做進(jìn)程間的同步。系統(tǒng)中進(jìn)程的同步是依靠進(jìn)程與進(jìn)程之間互相發(fā)送消息來(lái)保證的。
進(jìn)程間的同步依賴于進(jìn)程間的通信。在操作系統(tǒng)中,是使用信號(hào)量、郵箱(消息郵箱)和消息隊(duì)列這些被稱做事件的中間環(huán)節(jié)來(lái)實(shí)現(xiàn)進(jìn)程之間的通信的。
圖是兩個(gè)進(jìn)程通過(guò)事件進(jìn)行通信的示意圖。進(jìn)程1是發(fā)信方,進(jìn)程2是收信 方。作為發(fā)信方,進(jìn)程1的責(zé)任是把信息發(fā)送到事件上,這項(xiàng)操作叫做發(fā)送事件;而作為收信 方,進(jìn)程2的責(zé)任是通過(guò)讀事件操作對(duì)事件進(jìn)行查詢,如果有信息則讀取信息,如果沒(méi)有則等 待。讀事件操作叫做請(qǐng)求事件。
圖 兩個(gè)進(jìn)程在使用事件進(jìn)行通信的示意圖
用于同步和通信的事件,不同的操作系統(tǒng)有所不同。不過(guò),常用的事件有信號(hào)量、消息郵 箱、消息隊(duì)列等。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
系統(tǒng)以并發(fā)方式運(yùn)行的各個(gè)進(jìn)程,不可避免地要共同使用一些共享資源以及相互之間的通信。因此,對(duì)于一個(gè)完善的多進(jìn)程操作系統(tǒng)來(lái)說(shuō),系統(tǒng)必須具有完各的同步和通信機(jī)制。
為了實(shí)現(xiàn)各進(jìn)程之間的合作和無(wú)沖突的運(yùn)行,在各進(jìn)程之間必須建立一些制約關(guān)系,其中 一種制約關(guān)系叫做直接制約關(guān)系,另一種制約關(guān)系則叫做間接制約關(guān)系。
直接制約關(guān)系源于進(jìn)程之間的合作。例如,有進(jìn)程a和進(jìn)程b兩個(gè)進(jìn)程,它們需要通過(guò)訪問(wèn)同一個(gè)數(shù)據(jù)緩沖區(qū)合作完成一項(xiàng)工作,進(jìn)程a負(fù)責(zé)向緩沖區(qū)寫入數(shù)據(jù),進(jìn)程b負(fù)責(zé)從緩 沖區(qū)讀取該數(shù)據(jù)。顯然,當(dāng)進(jìn)程a還未向緩沖區(qū)寫入數(shù)據(jù)時(shí)(緩沖區(qū)為空時(shí)),進(jìn)程b因不能從緩沖區(qū)得到有效數(shù)據(jù)而應(yīng)處于等待狀態(tài);只有等進(jìn)程a向緩沖區(qū)寫入了數(shù)據(jù)后,才應(yīng)通知 進(jìn)程b去取數(shù)據(jù)。相反,當(dāng)緩沖區(qū)的數(shù)據(jù)還未被進(jìn)程b讀取時(shí)(緩沖區(qū)為滿時(shí)),進(jìn)程a就不 能向緩沖區(qū)寫入新的數(shù)據(jù)而應(yīng)處于等待狀態(tài);只有等進(jìn)程b自緩沖區(qū)讀取數(shù)據(jù)后,才應(yīng)通知 進(jìn)程a去寫入數(shù)據(jù)。顯然,如果這兩個(gè)進(jìn)程不能如此協(xié)調(diào)工作,則勢(shì)必造成嚴(yán)重的后果。
間接制約關(guān)系源于對(duì)資源的共享。例如,進(jìn)程a和進(jìn)程b共享一臺(tái)打印機(jī),如果系統(tǒng)已經(jīng)把打印機(jī)分配給了進(jìn)程a,則進(jìn)程b因不能獲得打印機(jī)的使用杈而應(yīng)處于等待狀態(tài);只有當(dāng)進(jìn)程a把打印機(jī)釋放后,系統(tǒng)才能喚醒進(jìn)程b使其獲得打印機(jī)的使用權(quán)。如果這兩個(gè)進(jìn)程不這樣做,那么也會(huì)造成極大的混亂。
由上可知,在多進(jìn)程合作工作的過(guò)程中,操作系統(tǒng)應(yīng)解決兩個(gè)問(wèn)題:一是各進(jìn)程間應(yīng)該具有一種互斥關(guān)系,即對(duì)于某個(gè)共享資源,如果一個(gè)進(jìn)程正在使用,則其他進(jìn)程只能等待,等到該進(jìn)程釋放該資源后,等待的進(jìn)程之l才能使用它;二是相關(guān)的進(jìn)程在執(zhí)行上要有先后的次序,一個(gè)進(jìn)程要等其伙伴發(fā)來(lái)通知,或建立了某個(gè)條件后才能繼續(xù)執(zhí)行,否則只能等待。
進(jìn)程之間這種制約性的合作運(yùn)行機(jī)制叫做進(jìn)程間的同步。系統(tǒng)中進(jìn)程的同步是依靠進(jìn)程與進(jìn)程之間互相發(fā)送消息來(lái)保證的。
進(jìn)程間的同步依賴于進(jìn)程間的通信。在操作系統(tǒng)中,是使用信號(hào)量、郵箱(消息郵箱)和消息隊(duì)列這些被稱做事件的中間環(huán)節(jié)來(lái)實(shí)現(xiàn)進(jìn)程之間的通信的。
圖是兩個(gè)進(jìn)程通過(guò)事件進(jìn)行通信的示意圖。進(jìn)程1是發(fā)信方,進(jìn)程2是收信 方。作為發(fā)信方,進(jìn)程1的責(zé)任是把信息發(fā)送到事件上,這項(xiàng)操作叫做發(fā)送事件;而作為收信 方,進(jìn)程2的責(zé)任是通過(guò)讀事件操作對(duì)事件進(jìn)行查詢,如果有信息則讀取信息,如果沒(méi)有則等 待。讀事件操作叫做請(qǐng)求事件。
圖 兩個(gè)進(jìn)程在使用事件進(jìn)行通信的示意圖
用于同步和通信的事件,不同的操作系統(tǒng)有所不同。不過(guò),常用的事件有信號(hào)量、消息郵 箱、消息隊(duì)列等。
歡迎轉(zhuǎn)載,信息來(lái)自維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
熱門點(diǎn)擊
- ARM通用寄存器
- PIE中斷向量的映射方式
- PIE模塊級(jí)中斷
- ARM復(fù)位原理
- FIQ異常的描述
- ARM硬件電路設(shè)計(jì)
- ARM程序狀態(tài)寄存器
- ARM時(shí)序
- 什么是嵌入式實(shí)時(shí)操作系統(tǒng)
- 計(jì)算機(jī)操作系統(tǒng)調(diào)度策略(箅法)
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說(shuō)新車間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- RA Arm Cortex-M
- 110V, 75A RMS集成
- 微型C語(yǔ)言可編程處理器技術(shù)參數(shù)
- iNEMO系統(tǒng)級(jí)封裝 (SiP
- 首款 EVC 技術(shù)ST31N
- 嵌入式Flash技術(shù)制造ST54L芯片
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究