国产内射大片99,欧美丰满熟妇xxxx,bt天堂在线www中文,男人扒开女人的腿做爽爽视频,亚洲av影院一区二区三区

知名百科  > 所屬分類  >  其他科技   

進(jìn)程同步

進(jìn)程同步(英文名稱:Process Synchronization)是指廣義上的并發(fā)進(jìn)程在執(zhí)行序列中的相互制約,它包括進(jìn)程的同步和互斥。從狹義上講,它是指為完成某項(xiàng)任務(wù)而建立的兩個(gè)或兩個(gè)以上的流程因需要在某些崗位上協(xié)調(diào)其工作順序而產(chǎn)生的相互等待限制。進(jìn)程同步可以滿足某些共享資源(如I/O設(shè)備)中進(jìn)程獨(dú)占訪問(wèn)的要求。

進(jìn)程同步的實(shí)現(xiàn)需要遵循相應(yīng)的機(jī)制和方法,其同步機(jī)制包括空閑產(chǎn)出、繁忙等待、受限等待和產(chǎn)出等待。進(jìn)程同步的實(shí)現(xiàn)方法可以分為軟件方法和硬件方法,其中硬件方法包括中斷禁用和特殊機(jī)器指令,而軟件方法可以依靠鎖機(jī)制、信號(hào)量機(jī)制和管道機(jī)制,信號(hào)量機(jī)制可以細(xì)分為塑料信號(hào)量、記錄信號(hào)量以及信號(hào)量和信號(hào)量集類型。

典型的同步問(wèn)題包括生產(chǎn)者-消費(fèi)者問(wèn)題、讀者-作者問(wèn)題和哲學(xué)家進(jìn)餐問(wèn)題,這些問(wèn)題可以通過(guò)不同的信號(hào)量機(jī)制來(lái)解決,生活中的實(shí)際問(wèn)題可以直接或間接地參考這些經(jīng)典問(wèn)題來(lái)解決。

目錄

基本概念 編輯本段

過(guò)程限制關(guān)系:在操作系統(tǒng)中,雖然進(jìn)程可以獨(dú)立運(yùn)行,但它們之間也會(huì)相互制約。進(jìn)程同步是操作系統(tǒng)管理共享資源和避免由并發(fā)進(jìn)程引起的時(shí)間相關(guān)錯(cuò)誤的一種方法。進(jìn)程之間的關(guān)系可以表現(xiàn)為直接的相互制約(同步關(guān)系)和短暫的相互制約(互斥關(guān)系)。從廣義上講,進(jìn)程同步被定義為并發(fā)進(jìn)程在執(zhí)行時(shí)序上的相互制約,它包括進(jìn)程同步和進(jìn)程互斥。

間接相互制約(相互排斥):間接相互限制是指進(jìn)程之間競(jìng)爭(zhēng)獨(dú)占資源(互斥資源)而造成的限制,即設(shè)置不允許兩個(gè)進(jìn)程同時(shí)使用某個(gè)資源,此時(shí)一個(gè)進(jìn)程要求使用該資源,而該資源正在被另一個(gè)進(jìn)程使用,因此該進(jìn)程必須等待已占用該資源的進(jìn)程釋放該資源后才能使用。這種制約關(guān)系的基本形式是“過(guò)程-資源-過(guò)程”。這種約束關(guān)系源于多個(gè)同類進(jìn)程需要互斥共享某些系統(tǒng)資源(如打印機(jī)),同類進(jìn)程之間設(shè)置互斥以達(dá)到互斥訪問(wèn)資源的目的。

直接相互制約(同步):同步關(guān)系是指需要在某些地方協(xié)調(diào)工作并相互等待和交換信息的伙伴流程之間的約束關(guān)系。也就是說(shuō),如果一個(gè)進(jìn)程沒(méi)有收到另一個(gè)進(jìn)程提供的必要信息,它就無(wú)法繼續(xù)運(yùn)行。這種情況表明,兩個(gè)進(jìn)程需要在某個(gè)時(shí)候相互交換信息和通信。這種制約關(guān)系的基本形式是“過(guò)程-過(guò)程”。這種限制主要來(lái)自于進(jìn)程之間的協(xié)作,在不同的進(jìn)程之間設(shè)置同步以實(shí)現(xiàn)各種進(jìn)程之間的同步。

一般來(lái)說(shuō),一個(gè)進(jìn)程相對(duì)于另一個(gè)進(jìn)程的運(yùn)行速度是不確定的。也就是說(shuō),流程在異步環(huán)境中運(yùn)行,但協(xié)作流程需要在某些關(guān)鍵點(diǎn)上協(xié)調(diào)工作。直接約束關(guān)系狹義上也叫進(jìn)程同步。它是指為完成某項(xiàng)任務(wù)而建立的兩個(gè)或多個(gè)流程之間的相互等待約束關(guān)系,因?yàn)樗鼈冃枰谀承徫簧蠀f(xié)調(diào)它們的工作順序。

臨界資源 編輯本段

在運(yùn)行過(guò)程中,一個(gè)進(jìn)程一般會(huì)與其他進(jìn)程共享資源,有些資源同一時(shí)間只能由一個(gè)進(jìn)程使用。這種資源被稱為關(guān)鍵資源。包括打印機(jī)和繪圖儀在內(nèi)的許多物理設(shè)備都是關(guān)鍵資源。為了保證關(guān)鍵資源的正確使用,關(guān)鍵資源的訪問(wèn)過(guò)程一般分為四個(gè)部分,即進(jìn)入?yún)^(qū)、關(guān)鍵區(qū)、退出區(qū)和剩余區(qū)。無(wú)論是硬件關(guān)鍵資源還是軟件關(guān)鍵資源,多個(gè)進(jìn)程必須互斥地訪問(wèn)它。訪問(wèn)進(jìn)程中關(guān)鍵資源的代碼稱為關(guān)鍵部分。每個(gè)進(jìn)程的臨界區(qū)代碼可以不同。為了進(jìn)入關(guān)鍵區(qū)域并使用關(guān)鍵資源,需要在進(jìn)入?yún)^(qū)域中檢查是否有可能進(jìn)入關(guān)鍵區(qū)域;如果可以進(jìn)入臨界區(qū),通常會(huì)設(shè)置相應(yīng)的“訪問(wèn)臨界區(qū)”標(biāo)志,以防止其他進(jìn)程同時(shí)進(jìn)入臨界區(qū)。這個(gè)代碼叫做進(jìn)入臨界區(qū)。如果此時(shí)某個(gè)進(jìn)程正在訪問(wèn)關(guān)鍵資源,則該進(jìn)程無(wú)法進(jìn)入關(guān)鍵區(qū)域。用于清除關(guān)鍵區(qū)域后的“訪問(wèn)關(guān)鍵區(qū)域”標(biāo)志的部分代碼稱為出口區(qū)域。除了入口區(qū)域、關(guān)鍵區(qū)域和出口區(qū)域之外,其余區(qū)域是其他部分的代碼。

同步機(jī)制 編輯本段

為了實(shí)現(xiàn)進(jìn)程的同步,必須遵守同步規(guī)則。用于實(shí)現(xiàn)進(jìn)程間同步的工具稱為同步機(jī)制。對(duì)于關(guān)鍵區(qū)域的操作,同步機(jī)制應(yīng)遵循以下四個(gè)標(biāo)準(zhǔn)。

Idle yield:當(dāng)臨界區(qū)中沒(méi)有進(jìn)程時(shí),表明臨界資源處于空閑狀態(tài),應(yīng)該允許請(qǐng)求進(jìn)入臨界區(qū)的進(jìn)程立即進(jìn)入自己的臨界區(qū),以有效地使用臨界資源。

繁忙等待:當(dāng)現(xiàn)有進(jìn)程進(jìn)入關(guān)鍵區(qū)域時(shí),表明正在訪問(wèn)關(guān)鍵資源,因此其他試圖進(jìn)入關(guān)鍵區(qū)域的進(jìn)程必須等待,以確保對(duì)關(guān)鍵資源的互斥訪問(wèn)。

有限等待:對(duì)于需要訪問(wèn)關(guān)鍵資源的進(jìn)程,應(yīng)保證在有限時(shí)間內(nèi)進(jìn)入相應(yīng)的關(guān)鍵區(qū)域,進(jìn)入關(guān)鍵區(qū)域的進(jìn)程應(yīng)在有限時(shí)間內(nèi)完成其操作,釋放資源并退出關(guān)鍵區(qū)域。

讓路并等待:對(duì)于那些當(dāng)前處于阻塞狀態(tài)且無(wú)法進(jìn)入臨界區(qū)的進(jìn)程,它們應(yīng)該放棄占用CPU,以便其他進(jìn)程可以獲得CPU的使用權(quán)。

實(shí)現(xiàn)機(jī)制 編輯本段

進(jìn)程同步問(wèn)題可以通過(guò)硬件方法或軟件方法來(lái)解決。用于實(shí)現(xiàn)系統(tǒng)中進(jìn)程之間同步和互斥的機(jī)制稱為同步機(jī)制。同步機(jī)制很少單獨(dú)采用軟件方法,而使用硬件方法實(shí)現(xiàn)互斥的主要思想是使用一條指令來(lái)檢查和修改標(biāo)志,或者通過(guò)中斷禁用來(lái)確保檢查和修改作為一個(gè)整體進(jìn)行,從而確保檢查和修改操作不會(huì)中斷。它具有應(yīng)用范圍廣、簡(jiǎn)單和支持多個(gè)關(guān)鍵領(lǐng)域的優(yōu)點(diǎn)。常見(jiàn)的同步機(jī)制有:鎖機(jī)制、信號(hào)量機(jī)制和管道機(jī)制。

硬件模式

中斷禁用:中斷禁用使每個(gè)進(jìn)程在進(jìn)入臨界區(qū)后立即關(guān)閉所有中斷,并在離開(kāi)臨界區(qū)前重新打開(kāi)中斷。由于中斷禁用,時(shí)鐘中斷也被禁止,因此CPU不會(huì)切換到另一個(gè)進(jìn)程。這種賦予用戶進(jìn)程關(guān)閉中斷的權(quán)利的方法有很大的缺點(diǎn)。一旦進(jìn)程關(guān)閉中斷,如果它不再打開(kāi)中斷,系統(tǒng)可能會(huì)被終止。

特殊機(jī)器指令:許多計(jì)算機(jī)(尤其是多處理器計(jì)算機(jī))都有一個(gè)稱為T(mén)SL(測(cè)試和設(shè)置鎖定)的指令:TSLRX,Lock。它將內(nèi)存字鎖的內(nèi)容讀入寄存器RX,然后在地址單元中存儲(chǔ)一個(gè)非零值。讀取和存儲(chǔ)數(shù)據(jù)的操作是不可分的,也就是說(shuō),在此指令完成之前,其他進(jìn)程無(wú)法訪問(wèn)該單元。然而,使用TSL指令解決進(jìn)程互斥進(jìn)入臨界區(qū)的問(wèn)題可能會(huì)導(dǎo)致“忙等待”——如果一個(gè)進(jìn)程已經(jīng)進(jìn)入臨界區(qū),后者將繼續(xù)使用TSL指令進(jìn)行測(cè)試并等待前者解鎖。

軟件模式

鎖定機(jī)構(gòu):鎖機(jī)制的基本內(nèi)容是用變量w來(lái)表示一個(gè)關(guān)鍵資源的狀態(tài),w稱為鎖或鎖位置。W=0表示資源可用;W=1表示資源正在被使用。在使用關(guān)鍵資源之前,進(jìn)程需要檢查鎖變量的值。如果值為0,鎖將被設(shè)置為1(已鎖定)。如果值為1,它將返回到第一步重新檢查鎖變量的值。當(dāng)進(jìn)程使用完資源后,鎖應(yīng)該設(shè)置為0。它的標(biāo)準(zhǔn)原語(yǔ)是lock(w)和unlock(w)。

進(jìn)程同步進(jìn)程同步

雖然鎖定機(jī)構(gòu)簡(jiǎn)單方便,但其效率很低。當(dāng)一個(gè)進(jìn)程處于臨界區(qū)時(shí),其他想要進(jìn)入臨界區(qū)的進(jìn)程必須不斷地進(jìn)行測(cè)試,從而處于繁忙的等待狀態(tài),導(dǎo)致處理器時(shí)間的浪費(fèi)。

信號(hào)量機(jī)制:在操作系統(tǒng)中,信號(hào)量是一個(gè)代表資源的物理量,它是一個(gè)與隊(duì)列相關(guān)的整數(shù)變量。它的值只能通過(guò)P和V操作來(lái)更改,操作系統(tǒng)使用它的狀態(tài)來(lái)管理資源和進(jìn)程。信號(hào)量同步機(jī)制是由荷蘭計(jì)算機(jī)科學(xué)家Dijkstra于1965年首次提出的。其基本思想是使用標(biāo)準(zhǔn)原語(yǔ)操作來(lái)解決多個(gè)協(xié)作進(jìn)程之間的信號(hào)同步。其標(biāo)準(zhǔn)原語(yǔ)包括wait(S)和signa(S)訪問(wèn),也可以記錄為“P操作”和“V操作”。常見(jiàn)的信號(hào)量機(jī)制有:整形信號(hào)量由資源號(hào)的整數(shù)S表示,并由基元wait和signal操作。信號(hào)量的值只能由兩個(gè)標(biāo)準(zhǔn)原子操作wait和signal訪問(wèn)。

和旗語(yǔ):一個(gè)進(jìn)程在運(yùn)行過(guò)程中經(jīng)常需要申請(qǐng)多個(gè)共享資源。如果使用整數(shù)或記錄信號(hào)量,進(jìn)程可能會(huì)由于申請(qǐng)資源的順序不正確而死鎖。為了解決這個(gè)問(wèn)題,引入了信號(hào)量同步機(jī)制。其基本思想是將進(jìn)程在整個(gè)運(yùn)行過(guò)程中所需的所有資源一次性分配給該進(jìn)程,然后在該進(jìn)程被使用后一起釋放。只要有一種資源不能分配給該進(jìn)程,所有其他可能分配給它的資源都不會(huì)分配給它。

信號(hào)量集類型:在記錄信號(hào)量機(jī)制中,一次只能獲得或釋放一個(gè)單位的關(guān)鍵資源。如果一次需要N個(gè)關(guān)鍵資源,則需要N次等待操作,這是非常低效的。此外,在某些情況下,當(dāng)資源量低于某個(gè)限制時(shí),它將不會(huì)被分配。因此,在每次分配之前,必須測(cè)試資源的數(shù)量,看它是否大于其下限?;谝陨蟽牲c(diǎn),AND信號(hào)量機(jī)制可以擴(kuò)展為廣義的“信號(hào)量集”機(jī)制。Swait操作可以描述如下,其中s是信號(hào)量,d是所需值,t是下限。

在信號(hào)量機(jī)制中,由于每個(gè)想要訪問(wèn)關(guān)鍵資源的進(jìn)程都必須有自己的同步操作等待和信號(hào),因此大量的同步操作分散在每個(gè)進(jìn)程中。它不僅給系統(tǒng)的管理帶來(lái)了麻煩,而且由于同步操作的使用不當(dāng)而導(dǎo)致系統(tǒng)死鎖。

管程機(jī)構(gòu):為了解決信號(hào)量機(jī)制中存在的問(wèn)題,1974年和1975年,Hansen和Hoare提出了管道機(jī)制,該機(jī)制集中管理分散在各個(gè)進(jìn)程中的關(guān)鍵區(qū)域,并用數(shù)據(jù)結(jié)構(gòu)抽象地表示系統(tǒng)中的共享資源。Pipeline定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)和一組可以由并發(fā)進(jìn)程(在數(shù)據(jù)結(jié)構(gòu)上)執(zhí)行的操作,這些操作可以同步進(jìn)程并更改管道中的數(shù)據(jù)。

管道的主要特征包括共享:一個(gè)進(jìn)程通過(guò)調(diào)用管道的一個(gè)進(jìn)程進(jìn)入管道,管道中的移除進(jìn)程可以由所有想要調(diào)用管道進(jìn)程的進(jìn)程共享。安全性:管道的本地?cái)?shù)據(jù)變量只能由管道的進(jìn)程訪問(wèn),而不能由任何其他外部進(jìn)程訪問(wèn),并且管道的進(jìn)程不能訪問(wèn)任何不屬于其本地的變量?;コ?在任何時(shí)候,只有一個(gè)進(jìn)程可以進(jìn)入管道執(zhí)行,其他任何調(diào)用管道的進(jìn)程都將被阻塞,只能等待當(dāng)前正在訪問(wèn)的進(jìn)程退出管道。

使用管道實(shí)現(xiàn)進(jìn)程同步時(shí),必須設(shè)置同步工具,如兩個(gè)同步操作原語(yǔ)wait和signal。當(dāng)進(jìn)程通過(guò)管道請(qǐng)求獲得關(guān)鍵資源但未能滿足這些資源時(shí),管道調(diào)用wait原語(yǔ)使進(jìn)程等待并將其放入等待隊(duì)列。只有在另一個(gè)進(jìn)程訪問(wèn)并釋放資源后,管道才會(huì)再次調(diào)用signal原語(yǔ)來(lái)喚醒隊(duì)列頭進(jìn)程。管道流程由四個(gè)部分組成,它們是管道流程的名稱;共享數(shù)據(jù)的描述和說(shuō)明;用于操作共享數(shù)據(jù)結(jié)構(gòu)的一組過(guò)程;共享數(shù)據(jù)的初始化設(shè)置。

同步問(wèn)題 編輯本段

在現(xiàn)實(shí)生活中,許多事件需要相互同步。在多程序環(huán)境中,進(jìn)程同步是一個(gè)非常重要和有趣的問(wèn)題,吸引了許多學(xué)者對(duì)其進(jìn)行研究,并由此產(chǎn)生了一系列經(jīng)典的進(jìn)程同步問(wèn)題,其中比較經(jīng)典的有生產(chǎn)者-消費(fèi)者問(wèn)題、讀者-作者問(wèn)題、哲學(xué)家進(jìn)餐問(wèn)題等。參考經(jīng)典問(wèn)題可以直接或間接解決生活中的實(shí)際問(wèn)題。

問(wèn)題描述

生產(chǎn)者-消費(fèi)者問(wèn)題,也稱為緩沖區(qū)問(wèn)題,是計(jì)算機(jī)操作系統(tǒng)中相互協(xié)作的并發(fā)進(jìn)程之間的抽象。其核心內(nèi)容是一組生產(chǎn)者流程和消費(fèi)者流程。生產(chǎn)者負(fù)責(zé)生產(chǎn)產(chǎn)品,消費(fèi)者負(fù)責(zé)消費(fèi)產(chǎn)品。在它們之間設(shè)置一個(gè)具有n個(gè)緩沖區(qū)的緩沖池,供生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程共享。生產(chǎn)者的工作是生產(chǎn)產(chǎn)品并將其放入空緩沖區(qū);消費(fèi)者從包含用于消費(fèi)的產(chǎn)品的緩沖器中取出產(chǎn)品。兩人互相等待,互相喚醒。

在這個(gè)過(guò)程中,如果生產(chǎn)者進(jìn)程沒(méi)有空的緩沖區(qū)來(lái)放置產(chǎn)品,它將轉(zhuǎn)入等待狀態(tài),直到消費(fèi)者取走產(chǎn)品并將其喚醒;同樣,消費(fèi)者流程將轉(zhuǎn)變?yōu)榈却隣顟B(tài),因?yàn)樵谏a(chǎn)者放置產(chǎn)品后將其喚醒之前沒(méi)有產(chǎn)品。

問(wèn)題解決

以記錄信號(hào)量為例,它使用互斥體來(lái)實(shí)現(xiàn)進(jìn)程對(duì)緩沖區(qū)的互斥使用。此外,信號(hào)empty和full分別表示空緩沖區(qū)的數(shù)量和滿緩沖區(qū)(即產(chǎn)品)的數(shù)量。

附件列表


0

詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。

如果您認(rèn)為本詞條還有待完善,請(qǐng) 編輯

上一篇 央視頻    下一篇 快播

標(biāo)簽

同義詞

暫無(wú)同義詞