1,,首先我們先了解進(jìn)程,、線程,、管程各自的概念: 進(jìn)程:進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元,,在傳統(tǒng)的操作系統(tǒng)中,,進(jìn)程既是基本的分配單元,也是基本的執(zhí)行單元,。 線程:線程是進(jìn)程中的實(shí)體,,一個(gè)進(jìn)程可以擁有多個(gè)線程,一個(gè)線程必須有一個(gè)父進(jìn)程,。線程不擁有系統(tǒng)資源,,只有運(yùn)行必須的一些數(shù)據(jù)結(jié)構(gòu);它與父進(jìn)程的其它線程共享該進(jìn)程所擁有的全部資源,。線程可以創(chuàng)建和撤消線程,,從而實(shí)現(xiàn)程序的并發(fā)執(zhí)行。一般,,線程具有就緒,、阻塞和運(yùn)行三種基本狀態(tài)。 2,現(xiàn)在我們來(lái)了解進(jìn)程和線程的關(guān)系: 簡(jiǎn)而言之,一個(gè)進(jìn)程至少有一個(gè)線程. 線程的劃分尺度小于進(jìn)程,,使得多線程程序的并發(fā)性高,。另外,進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,,而多個(gè)線程共享內(nèi)存,,從而極大地提高了程序的運(yùn)行效率。 線程在執(zhí)行過(guò)程中與進(jìn)程還是有區(qū)別的,。每個(gè)獨(dú)立的線程有一個(gè)程序運(yùn)行的入口,、順序執(zhí)行序列和程序的出口。但是線程不能夠獨(dú)立執(zhí)行,,必須依存在應(yīng)用程序中,,由應(yīng)用程序提供多個(gè)線程執(zhí)行控制。 進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位.線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源. 3,,下面我們分析進(jìn)程和線程之間的關(guān)系: 假如我們把整條道路看成是一個(gè)“進(jìn)程”的話,那么由白色虛線分隔開(kāi)來(lái)的各個(gè)車道就是進(jìn)程中的各個(gè)“線程”了,。 ①這些線程(車道)共享了進(jìn)程(道路)的公共資源(土地資源),。 ⑤這些線程(車道)之間誰(shuí)先運(yùn)行是未知的,,只有在線程剛好被分配到CPU時(shí)間片(交通燈變化)的那一刻才能知道, 4,,管程的引用 信號(hào)量機(jī)制的引入解決了進(jìn)程同步的描述問(wèn)題,但信號(hào)量的大量同步操作分散在各個(gè)進(jìn)程中不便于管理,,還有可能導(dǎo)致系統(tǒng)死鎖,。如:生產(chǎn)者消費(fèi)者問(wèn)題中將P、V顛倒可能死鎖,。 為此Dijkstra于1971年提出:把所有進(jìn)程對(duì)某一種臨界資源的同步操作都集中起來(lái),,構(gòu)成一個(gè)所謂的秘書(shū)進(jìn)程。凡要訪問(wèn)該臨界資源的進(jìn)程,,都需先報(bào)告秘書(shū),,由秘書(shū)來(lái)實(shí)現(xiàn)諸進(jìn)程對(duì)同一臨界資源的互斥使用。 管程由四部分組成: 1).管程內(nèi)部的共享變量,。 2).管程內(nèi)部的條件變量,。 3).管程內(nèi)部并行執(zhí)行的進(jìn)程。 4).對(duì)于局部與管程內(nèi)部的共享數(shù)據(jù)設(shè)置初始值的語(yǔ)句,。 由此可見(jiàn),,管程相當(dāng)于圍墻,它把共享變量和對(duì)它進(jìn)行操作的若干個(gè)過(guò)程圍了起來(lái),,所有的進(jìn)程要訪問(wèn)臨界資源時(shí),,都必須經(jīng)過(guò)管程才能進(jìn)入,而管程每次只允許一個(gè)進(jìn)程進(jìn)入管程,,從而實(shí)現(xiàn)了進(jìn)程的互斥,。 |
|
來(lái)自: 哈飛揚(yáng) > 《操作系統(tǒng)》