第二章 進(jìn)程通信、線程

進(jìn)程通信:進(jìn)程通信是指進(jìn)程之間的信息交換。

一、低級通信——進(jìn)程之間的互斥和同步

? 信號量機制是有效的同步工具,但作為通信工具缺點如下:

(1)效率低(通信量少)

(2)通信對用戶不透明(程序員實現(xiàn),操作系統(tǒng)只提供共享存儲器供代碼操作)

二、高級進(jìn)程通信

? 用戶直接利用操作系統(tǒng)提供的一組通信命令,高效地傳送大量數(shù)據(jù)的通信方式。

操作系統(tǒng)隱藏了進(jìn)程通信的細(xì)節(jié),對用戶透明,減少了通信程序編制上的復(fù)雜性。


線程:進(jìn)程內(nèi)的一條執(zhí)行路徑。

多線程系統(tǒng)中,同一個進(jìn)程中的多個線程共享進(jìn)程資源,可并發(fā)執(zhí)行。

線程的屬性:多線程OS中,一個進(jìn)程包括多個線程,每個線程都是利用CPU的基本單位。

輕型實體:只需一點必不可少的、能保證獨立運行的資源。(TCB)

獨立調(diào)度和分派的基本單位:調(diào)度切換迅速且開銷小。

可并發(fā)執(zhí)行

共享進(jìn)程資源:同進(jìn)程中的線程可共享相同的進(jìn)程地址空間、已打開文件、信號量機構(gòu)等。


線程與進(jìn)程的比較

調(diào)度:線程作為CPU調(diào)度的基本單位,而進(jìn)程只作為其它資源分配單位。

并發(fā)性:進(jìn)程之間可以并發(fā),實質(zhì)上是不同進(jìn)程中的兩個線程并發(fā)。一個進(jìn)程的多個線程之間亦可并發(fā)。

擁有資源:進(jìn)程間資源相互獨立;同一進(jìn)程的各線程間共享。某進(jìn)程內(nèi)的線程在其它進(jìn)程不可見

系統(tǒng)開銷:線程上下文切換在同進(jìn)程環(huán)境下上下文切換要快得多。因為同進(jìn)程內(nèi)線程間共享內(nèi)存地址和打開的文件資源。


線程的管理

同步和通信機制:

1)互斥鎖

比較簡單的,控制線程互斥訪問資源;

適用于高頻度使用的關(guān)鍵共享數(shù)據(jù)和程序段;

unlock和lock兩個鎖操作原語;

2)條件變量

與互斥鎖一起使用

鎖保證互斥進(jìn)入臨界區(qū),但利用條件變量使線程阻塞

注意不滿足條件時,wait條件變量:

釋放互斥鎖

進(jìn)程阻塞在條件變量指向隊列中

被喚醒后要重新再設(shè)互斥鎖

3)信號量

私用信號量(privatesamephore)

用于同進(jìn)程的線程間同步,數(shù)據(jù)結(jié)構(gòu)存放在應(yīng)用程序的地址空間。屬于特定進(jìn)程,OS感知不到其存在。

公用信號量(publicsamephore)

用于不同進(jìn)程間或不同進(jìn)程中線程的同步,數(shù)據(jù)結(jié)構(gòu)由OS管理,存放在受保護(hù)的系統(tǒng)存儲區(qū)。

?著作權(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)容