操作系統(tǒng)——進程通信、線程

進程通信是指進程之間的信息交換。進程的互斥和同步是一種低級的進程通信機制,效率低、所能夠傳遞的信息非常有限。

1、進程通信機制:

(1)共享存儲器系統(tǒng)

通過共享數(shù)據(jù)結(jié)構(gòu)或者共享存儲區(qū)進行進程之間的通信。

(a)通過共享數(shù)據(jù)結(jié)構(gòu)。

????比如生產(chǎn)者-消費者問題中的有界的緩沖區(qū)。由于數(shù)據(jù)結(jié)構(gòu)的設(shè)置以及同步的處理都是人工的,強度大,是一種比較低級的通信機制。

(b)通過共享存儲區(qū)。

????在處理器中劃分一塊共享的存儲區(qū)域,所有共享該區(qū)域的進程通過對共享區(qū)域的數(shù)據(jù)進行讀寫來進行通信,是一種能夠傳輸較大數(shù)量的通行方式。

(2)消息傳遞系統(tǒng)

各需要通信的進程通過格式化的消息進行信息交換。這是最重要的一種進程通信方式。

(a)直接通信方式。

利用操作系統(tǒng)的原語進行通信,發(fā)送方直接指定消息的接收方;消息接收方也指定消息的來源。

(b)間接通信方式。

需要借助作為共享數(shù)據(jù)結(jié)構(gòu)的實體進行通信。該實體一般被稱為信箱。

消息傳遞系統(tǒng)中的主要問題:通信鏈路、消息格式、進程同步方式。通信鏈路的建立可以利用系統(tǒng)的“建立鏈接”原語建立通信鏈路并顯式拆除,也可以利用系統(tǒng)的“發(fā)送原語”由系統(tǒng)自動建立通信鏈路。對于單機系統(tǒng)消息格式則是簡單固定,而對于復雜系統(tǒng)的進程通信(比如網(wǎng)絡(luò))則可能要將消息分為消息頭和消息正文等。進程同步方式主要有3種:發(fā)送進程和接受進程都阻塞(兩者之間無緩沖區(qū))、發(fā)送進程不阻塞接受進程?? 阻塞(打印進程一直阻塞直到有打印請求)、發(fā)送進程和接受進程都不阻塞(兩者之間帶有緩沖區(qū))。

(3)管道通信系統(tǒng)

????管道通信主要借助于管道文件。管道文件是用來連接一個輸入進程和輸出進程并實現(xiàn)他們輸入的一個共享文件。利用管道進行通信時需要注意管道文件的互斥、對管道文件操作的同步以及輸入和輸出進程必須同時存在。

(4)Client-Server system

2、消息傳遞通信的實現(xiàn)方法

(1)直接通信方式

? ??發(fā)送進程利用OS所提供的發(fā)送命令(原語),直接把消息發(fā)送給目標進程。此時,發(fā)送進程和接收進程都以顯式方式提供對方的標識符。通常利用系統(tǒng)通信命令(原語):
?Send(Receiver, message);
?Receive(Sender, message);

(2)間接通信方式

????基于共享數(shù)據(jù)結(jié)構(gòu)的實體用來暫存發(fā)送給目標進程的消息;接收進程則從該實體中,取出對方發(fā)送給自己的消息。通常把這種實體稱為信箱。
????消息在信箱中可以安全地保存,只允許核準的目標用戶隨時讀取。既可實時通信,又可非實時通信。

3.消息傳遞系統(tǒng)的實現(xiàn)

①通信鏈路的建立
②消息格式
③同步方式

4.消息緩沖隊列通信機制

美國Hansan提出,在RC4 4000系統(tǒng)上實現(xiàn)。
1.不需要管理鏈路
2.定義簡單數(shù)據(jù)結(jié)構(gòu)(消息格式)
3.實現(xiàn)發(fā)送和接收的操作原語


認識線程

? ? 引入

? ? 多道程序管理:追求效率的目的下實現(xiàn)“并發(fā)”
????并發(fā)性與效率的討論(利用進程實現(xiàn)的多道程序中):
????進程是一個可擁有資源的獨立單位;是一個可獨立調(diào)度和分配資源的基本單位

? ? 屬性

????多線程OS中,一個進程包括多個線程,每個線程都是利用CPU的基本單位。
????輕型實體:只需一點必不可少的、能保證獨立運行的資源。(TCB)
????獨立調(diào)度和分派的基本單位:調(diào)度切換迅速且開銷小。
????可并發(fā)執(zhí)行
????共享進程資源:同進程中的線程可共享相同的進程地址空間、已打開文件、信號量機構(gòu)等。

? ? 線程的信息

? ? tcb管理的信息:標識符、運行狀態(tài)、優(yōu)先級、寄存器狀態(tài)、堆棧、專有存儲器、信號屏蔽等

? ??線程的管理

1.互斥鎖
????適用于高頻度使用的關(guān)鍵共享數(shù)據(jù)和程序段(unlock和lock兩個鎖操作原語)

2.條件變量
????與互斥鎖一起使用,鎖能保證互斥進入臨界區(qū),利用條件變量使線程阻塞
????注意不滿足條件時,wait條件變量:
????釋放互斥鎖,進程阻塞在條件變量指向隊列中,被喚醒后要重新再設(shè)互斥鎖

3.信號量
????私用信號量:用于同進程的線程同步
????公用信號量:用于不同進程間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容