potplayer 多个进程_操作系统 | 进程同步与进程互斥
主題?
? ? ? ? ? ?進程同步與進程互斥? ? ?? ? ??
01
進程同步?
問題
在多道批處理系統(tǒng)中,多個進程是并發(fā)執(zhí)行的,而并發(fā)執(zhí)行的進程具有異步性,也就是說,各個進程以各自獨立的、不可預(yù)知的速度向前推進。這樣會帶來什么問題呢?如果有 AB 兩個進程分別進行讀寫數(shù)據(jù)的操作,那么寫數(shù)據(jù)應(yīng)該發(fā)生在讀數(shù)據(jù)之前,而實際上,由于異步性的存在,可能會發(fā)生先讀后寫的情況,而此時由于緩沖區(qū)為空,該讀數(shù)據(jù)進程就會被阻塞。
解決方法:
所以,我們要通過進程同步來解決此類問題。與進程同步相關(guān)的也就是直接制約關(guān)系,指的是多個進程一起完成某個任務(wù),這些進程因為合作、因為需要在某些位置上協(xié)調(diào)他們的工作次序而產(chǎn)生了某些制約關(guān)系。
?1??概念
進程同步機制對相關(guān)進程在執(zhí)行次序上進行協(xié)調(diào),使并發(fā)的進程之間按一定規(guī)則共享資源,使程序的執(zhí)行具有可再現(xiàn)性。【題目】在操作系統(tǒng)中,要對并發(fā)進程進行同步的原因是()。A.進程必須在有限的時間內(nèi)完成B.進程具有動態(tài)性C.并發(fā)進程是異步的D.進程具有結(jié)構(gòu)性解析:C。進程同步是指進程之間一種直接的協(xié)同工作關(guān)系,這些進程的并發(fā)是異步的,它們相互合作,共同完成一項任務(wù)。02
進程互斥?
問題
在多道批處理系統(tǒng)中,多個進程是并發(fā)執(zhí)行的,而并發(fā)執(zhí)行的進程不可避免地需要共享一些系統(tǒng)資源(比如內(nèi)存、打印機、攝像頭等)。有些資源在一個時間段內(nèi)只允許一個進程使用,諸如各種物理設(shè)備、變量、數(shù)據(jù)、內(nèi)存緩沖區(qū)等,這些稱之為臨界資源——也就是說,一方面,并發(fā)執(zhí)行的進程需要共享資源;另一方面,臨界資源的訪問又必須是互斥地進行(不能同時共享),這會導(dǎo)致資源訪問上的矛盾。【題目】以下()不屬于臨界資源。A.?打印機B.?非共享數(shù)據(jù)C.?共享變量D.?共享緩沖區(qū)解析:B。臨界資源是互斥共享資源,非共享數(shù)據(jù)不屬于臨界資源。打印機、共享變量和共享緩沖區(qū)都只允許一次供一個進程使用。【題目】以下()屬于臨界資源。A.?磁盤存儲介質(zhì)B.?公用隊列C.?私用數(shù)據(jù)D.?可重入的程序代碼解析:B。臨界資源與共享資源的區(qū)別在于,在一段時間內(nèi)能否允許被多個進程訪問(并發(fā)使用),顯然磁盤屬于共享設(shè)備。公用隊列可供多個進程使用,但一次只可供一個進程使用,試想若多個進程同時使用公用隊列,勢必造成隊列中的數(shù)據(jù)混亂而無法使用。私用數(shù)據(jù)僅供一個進程使用,不存在臨界區(qū)問題,可重入的程序代碼一次可供多個進程使用。解決方法:
所以,我們要通過進程互斥來解決此類問題。與進程互斥相關(guān)的也就是間接制約關(guān)系,指的是當(dāng) A 進程在訪問某個臨界資源時,另一個也想要訪問該資源的 B 進程就必須等著,直到 A 進程訪問結(jié)束并釋放資源后,B 進程才能去訪問。
03
兩種形式的制約?
?1??概念
由于進程具有獨立性和異步性等并發(fā)特征,計算機的資源有限,導(dǎo)致了進程之間的資源競爭和共享,也導(dǎo)致了對進程執(zhí)行過程的制約。
①?間接制約:進程間無關(guān),但都要使用臨界資源
② 直接制約:進程間協(xié)作,需要按照某些規(guī)則運行
例:進程A和進程B通過共享緩沖區(qū)協(xié)作完成數(shù)據(jù)處理,進程A負責(zé)產(chǎn)生數(shù)據(jù)并放入緩沖區(qū),進程B從緩沖區(qū)讀數(shù)據(jù)并輸出。進程A和進程B之間的制約關(guān)系是( )。
A.??互斥關(guān)系B.同步關(guān)系C.? 互斥和同步關(guān)系D.? 無制約關(guān)系解析:C。并發(fā)進程因為共享資源而產(chǎn)生相互之間的制約關(guān)系,可以分為兩類:①互斥關(guān)系,指進程之間因相互競爭使用獨占型資源(互斥資源)所產(chǎn)生的制約關(guān)系;②同步關(guān)系,指進程之間為協(xié)同工作需要交換信息、相互等待而產(chǎn)生的制約關(guān)系。本題中兩個進程之間的制約關(guān)系是同步關(guān)系,進程B必須在進程A將數(shù)據(jù)放入緩沖區(qū)后才能從緩沖區(qū)中讀出數(shù)據(jù)。此外,共享的緩沖區(qū)一定是互斥訪問的,所以它們也具有互斥關(guān)系。實現(xiàn)
do { extry section; // 進入?yún)^(qū) critical section; // 臨界區(qū) exit section; // 退出區(qū) remainder section; // 剩余區(qū)} while(true)04
進程對臨界資源的訪問過程?
1??概念進入?yún)^(qū):A 進程想要訪問臨界資源,首先會在進入?yún)^(qū)檢查是否可以進入,由于此時沒有其它進程占用臨界資源,所以檢查通過,同時它設(shè)置了一個 Flag 標(biāo)志當(dāng)前自己正在訪問臨界資源;臨界區(qū):實際訪問臨界資源的那段代碼退出區(qū):負責(zé)解除之前的 Flag剩余區(qū):其它處理對于 B 進程,如果此時它也想要訪問這個資源,同樣就會在進入?yún)^(qū)做一個檢查,它知道了 A 進程正在訪問,所以自己就不能訪問了。這樣就實現(xiàn)了資源訪問的互斥。例:在一段時間內(nèi)只允許一個進程訪問的資源,稱為( )。A.共享資源B.臨界區(qū)C.臨界資源D.共享區(qū)解析:C.在一段時間內(nèi)只允許一個進程訪問的資源稱為臨界資源或獨占資源。計算機系統(tǒng)中的大多數(shù)物理設(shè)備,以及某些軟件中所用的棧、變量和表格,都屬于臨界資源,它們要求被互斥地共享。05
四個原則?
1??概念空閑讓進:臨界區(qū)空閑時,說明沒有進程使用臨界資源,此時應(yīng)該讓想要進入臨界區(qū)的進程立刻進來忙則等待:如果已經(jīng)有進程進入臨界區(qū),則其它同樣想要進入的進程只能等著有限等待:不能讓進程一直干等著,要保證他在有限的時間內(nèi)可以進入臨界區(qū)讓權(quán)等待:當(dāng)進程不能進入自己的臨界區(qū)時,應(yīng)該立刻釋放處理機,防止進程陷入“忙等”狀態(tài)。例:以下不是同步機制應(yīng)遵循的準(zhǔn)則的是()。A. 讓權(quán)等待B. 空閑讓進C. 忙則等待D. 無限等待解析:D。同步機制的4個準(zhǔn)則是空閑讓進、忙則等待、讓權(quán)等待和有限等待。總結(jié)
以上是生活随笔為你收集整理的potplayer 多个进程_操作系统 | 进程同步与进程互斥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python去空格的函数_Python怎
- 下一篇: 压倒机械硬盘的最后一根稻草 微软痛下杀手