日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

管程,进程及线程之间的区别

發(fā)布時間:2025/1/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 管程,进程及线程之间的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1,首先我們先了解進程、線程、管程各自的概念:

進程:進程是一個具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進程既是基本的分配單元,也是基本的執(zhí)行單元。

線程:線程是進程中的實體,一個進程可以擁有多個線程,一個線程必須有一個父進程。線程不擁有系統(tǒng)資源,只有運行必須的一些數(shù)據(jù)結(jié)構(gòu);它與父進程的其它線程共享該進程所擁有的全部資源。線程可以創(chuàng)建和撤消線程,從而實現(xiàn)程序的并發(fā)執(zhí)行。一般,線程具有就緒、阻塞和運行三種基本狀態(tài)。
管程:管程定義了一個數(shù)據(jù)結(jié)構(gòu)和能為并發(fā)進程所執(zhí)行的一組操作,這組操作能同步進程和改變管程中的數(shù)據(jù)。

2,現(xiàn)在我們來了解進程和線程的關(guān)系:

????? ?簡而言之,一個進程至少有一個線程. 線程的劃分尺度小于進程,使得多線程程序的并發(fā)性高。另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率。 線程在執(zhí)行過程中與進程還是有區(qū)別的。每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。?
???從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應(yīng)用,來實現(xiàn)進程的調(diào)度和管理以及資源分配。這就是進程和線程的重要區(qū)別。

?? 進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位.線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.?
???一個線程可以創(chuàng)建和撤銷另一個線程;同一個進程中的多個線程之間可以并發(fā)執(zhí)行。

3,下面我們分析進程和線程之間的關(guān)系:

?

假如我們把整條道路看成是一個“進程”的話,那么由白色虛線分隔開來的各個車道就是進程中的各個“線程”了。

①這些線程(車道)共享了進程(道路)的公共資源(土地資源)。
②這些線程(車道)必須依賴于進程(道路),也就是說,線程不能脫離于進程而存在(就像離開了道路,車道也就沒有意義了)。
③這些線程(車道)之間可以并發(fā)執(zhí)行(各個車道你走你的,我走我的),也可以互相同步(某些車道在交通燈亮時禁止繼續(xù)前行或轉(zhuǎn)彎,必須等待其它車道的車輛通行完畢)。
④這些線程(車道)之間依靠代碼邏輯(交通燈)來控制運行,一旦代碼邏輯控制有誤(死鎖,多個線程同時競爭唯一資源),那么線程將陷入混亂,無序之中。

⑤這些線程(車道)之間誰先運行是未知的,只有在線程剛好被分配到CPU時間片(交通燈變化)的那一刻才能知道,

4,管程的引用

????? 信號量機制的引入解決了進程同步的描述問題,但信號量的大量同步操作分散在各個進程中不便于管理,還有可能導致系統(tǒng)死鎖。如:生產(chǎn)者消費者問題中將PV顛倒可能死鎖。

????? 為此Dijkstra于1971年提出:把所有進程對某一種臨界資源的同步操作都集中起來,構(gòu)成一個所謂的秘書進程。凡要訪問該臨界資源的進程,都需先報告秘書,由秘書來實現(xiàn)諸進程對同一臨界資源的互斥使用。

管程由四部分組成:

??? 1).管程內(nèi)部的共享變量。

??? 2).管程內(nèi)部的條件變量。

??? 3).管程內(nèi)部并行執(zhí)行的進程。

??? 4).對于局部與管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始值的語句

由此可見,管程相當于圍墻,它把共享變量和對它進行操作的若干個過程圍了起來,所有的進程要訪問臨界資源時,都必須經(jīng)過管程才能進入,而管程每次只允許一個進程進入管程,從而實現(xiàn)了進程的互斥。

總結(jié)

以上是生活随笔為你收集整理的管程,进程及线程之间的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。