在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

用PV操作可實現(xiàn)并發(fā)進程的互斥

嵌入式應用開發(fā) ? 來源:嵌入式應用開發(fā) ? 作者:嵌入式應用開發(fā) ? 2022-05-23 08:55 ? 次閱讀

最近在準備軟考的時候看到關于PV操作的相關指示點,這里就做個記錄,希望對大家有一定的幫助。最開始我很好奇這個PV名字來源,問了好多大佬都不是很清楚,上網(wǎng)一查還覺得挺好玩,它是由老外提出來的狄克斯特拉用荷蘭文定義的,因為在荷蘭文中,通過叫passeren,釋放叫vrijgeven,PV操作因此得名。

為了在單處理機的情況下確定進程(process)能否占有處理機,狄克斯特拉將每個進程分為“就緒”(ready)、“運行”(running)和“阻塞”(blocking)三個工作狀態(tài)。由于在任一時刻最多只有一個進程可以使用處理機,正占用著處理機的進程稱為“運行”進程。當某進程已具備了使用處理機的條件,而當前又沒有處理機供其使用,則使該進程處于“就緒”狀態(tài)。當運行進程由于某種原因無法繼續(xù)運行下去時,就停止其占用處理機,使之進入“阻塞”狀態(tài),待造成其退出運行的條件解除,再進入“就緒”狀態(tài)。而對系統(tǒng)中所有同時運行的進程之間所存在的相互制約的同步(synchronization,指為了避免錯誤,在一個進程訪問共享數(shù)據(jù)時,另一個進程不訪問該數(shù)據(jù))和互斥(mutually-exclusive,指兩個進程不能同時在一個臨界區(qū)中使用同一個可重復使用的資源,諸如讀寫緩沖區(qū))兩個關系,狄克斯特拉巧妙地利用火車運行控制系統(tǒng)中的“信號燈”(semaphore,或叫“信號量”)概念加以解決。

用PV操作來管理共享資源時,首先要確保PV操作自身執(zhí)行的正確性。由于P(S)和V(S)都是在同一個信號量S上操作,為了使得它們在執(zhí)行時不發(fā)生因交叉訪問信號量S而可能出現(xiàn)的錯誤,約定P(S)和V(S)必須是兩個不可被中斷的過程,即讓它們在屏蔽中斷下執(zhí)行。把不可被中斷的過程稱為原語。于是,P操作和V操作實際上應該是P操作原語和V操作原語。

P操作的主要動作是:

①S減1;

②若S減1后仍大于或等于0,則進程繼續(xù)執(zhí)行;

③若S減1后小于0,則該進程被阻塞后放入等待該信號量的等待隊列中,然后轉(zhuǎn)進程調(diào)度。

V操作的主要動作是:

①S加1;

②若相加后結果大于0,則進程繼續(xù)執(zhí)行;

③若相加后結果小于或等于0,則從該信號的等待隊列中釋放一個等待進程,然后再返回原進程繼續(xù)執(zhí)行或轉(zhuǎn)進程調(diào)度。

PV操作對于每一個進程來說,都只能進行一次,而且必須成對使用。在PV原語執(zhí)行期間不允許有中斷發(fā)生。原語不能被中斷執(zhí)行,因為原語對變量的操作過程如果被打斷,可能會去運行另一個對同一變量的操作過程,從而出現(xiàn)臨界段問題。如果能夠找到一種解決臨界段問題的元方法,就可以實現(xiàn)對共享變量操作的原子性。

事實上,PV操作不僅是實現(xiàn)進程互斥的有效工具,而且還是一個簡單而方便的同步工具。用一個信號量與一個消息聯(lián)系起來,信號量的值為0表示期望的消息尚未產(chǎn)生;信號量的值為非0表示期望的消息已經(jīng)存在。假定用信號量S表示某個消息,現(xiàn)在來看看怎樣用PV操作達到進程同步的目的。

(1)調(diào)用P操作測試消息是否到達

任何進程調(diào)用P操作可測試到自己所期望的消息是否已經(jīng)到達。若消息尚未產(chǎn)生,則S=0,調(diào)用P(s)后,P(S)一定讓調(diào)用者成為等待信號量S的狀態(tài),即調(diào)用者此時必定等待直到消息到達;若消息已經(jīng)存在,則S≠0,調(diào)用P(S)后,進程不會成為等待狀態(tài)而可繼續(xù)執(zhí)行,即進程測試到自己期望的消息已經(jīng)存在。

(2)調(diào)用V操作發(fā)送消息

任何進程要向其他進程發(fā)送消息時可調(diào)用V操作。若調(diào)用V操作之前S=0,表示消息尚未產(chǎn)生且無等待消息的進程,則調(diào)用V(S)后,V(s)執(zhí)行S:=S+1使S≠0,即意味著消息已存在;若調(diào)用V操作之前S<0,表示消息未產(chǎn)生前已有進程在等待消息,則調(diào)用V(S)后將釋放一個等待消息者,即表示該進程等待的消息已經(jīng)到達,可以繼續(xù)執(zhí)行。 [1]?

在用PV操作實現(xiàn)同步時,一定要根據(jù)具體的問題來定義信號量和調(diào)用P操作或V操作。一個信號量與一個消息聯(lián)系在一起,當有多個消息時必須定義多個信號量;測試不同的消息是否到達或發(fā)送不同的消息時,應對不同的信號量調(diào)用P操作或V操作。

實現(xiàn)進程互斥

用PV操作可實現(xiàn)并發(fā)進程的互斥,其步驟如下:

(1)設立一個互斥信號量S,表示臨界區(qū),其取值為1,0,-1,…其中,S=1表示無并發(fā)進程進入S臨界區(qū);S=0表示已有一個并發(fā)進程進入了S臨界區(qū);S等于負數(shù)表示已有一個并發(fā)進程進入S臨界區(qū),且有|S|個進程等待進入S臨界區(qū),S的初值為1。

(2)用PV操作表示對S臨界區(qū)的申請和釋放。在進入臨界區(qū)之前,通過P操作進行申請,在退出臨界區(qū)之后,通過V操作釋放。

pYYBAGKKD_WALqNMAAPvs0AKxYU358.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作
    +關注

    關注

    0

    文章

    43

    瀏覽量

    18927
  • 處理機
    +關注

    關注

    0

    文章

    12

    瀏覽量

    7907
  • 信號量
    +關注

    關注

    0

    文章

    53

    瀏覽量

    8379
收藏 人收藏

    評論

    相關推薦

    Linux Shell多進程并發(fā)以及并發(fā)數(shù)控制

    linux后臺并發(fā)執(zhí)行,365個后臺任務,系統(tǒng)承受不住哦!既然不能一次性把365個任務放到linux后臺執(zhí)行,那么,能不能實現(xiàn)自動地每次將N個任務放到后臺并發(fā)執(zhí)行呢?當然是可以的啦。
    發(fā)表于 08-28 15:53

    信號量、互斥鎖、自旋鎖

    區(qū))信號量:是用來解決進程/線程之間的同步和互斥問題的一種通信機制,是用來保證兩個或多個關鍵代碼不被并發(fā)調(diào)用。信號量(Saphore)由一個值和一個指針組成,指針指向等待該信號量的進程
    發(fā)表于 08-29 09:48

    進程和線程的區(qū)別和聯(lián)系介紹

    的好處 (1)易于調(diào)度。 (2)提高并發(fā)性。通過線程方便有效地實現(xiàn)并發(fā)性。進程創(chuàng)建多個線程來
    發(fā)表于 07-04 00:18

    進程同步機制應遵循的規(guī)則與信號量的應用

    一次只允許一個進程使用的共享資源稱為臨界資源,如打印機,繪圖機,變量,數(shù)據(jù)等,各進程間采取互斥方式實現(xiàn)對這種臨界資源的共享,從而實現(xiàn)
    發(fā)表于 08-05 08:05

    進程互斥與同步介紹

      程之間互相競爭某一個資源,這種關系就稱為進程互斥,也就是說對于某個系統(tǒng)資源,如果一個進程正在使用,其他的進程就必須等待其用完,不能同時使用。
    發(fā)表于 08-06 08:28

    操作系統(tǒng)的進程同步

    互相協(xié)作的進程之間有共享的數(shù)據(jù),于是這里就有一個并發(fā)情況下,如何確保有序操作這些數(shù)據(jù)、維護一致性的問題,即進程同步。
    發(fā)表于 08-07 06:35

    操作系統(tǒng) : 進程與線程

    本文為《現(xiàn)代操作系統(tǒng)》的讀書筆記目錄程序順序執(zhí)行與并發(fā)執(zhí)行進程的定義進程的狀態(tài)轉(zhuǎn)換進程控制塊進程
    發(fā)表于 07-01 10:49

    進程管理的同步與互斥有何區(qū)別以及聯(lián)系

    進程管理的同步與互斥有何區(qū)別?進程管理的同步與互斥有何聯(lián)系?
    發(fā)表于 12-23 06:15

    Linux線程實現(xiàn)與線程控制步驟簡析

    廣泛用于進程或線程間的同步與互斥,它本質(zhì)上是一個非負的整數(shù)計數(shù)器。PV 原語是對整數(shù)計數(shù)器信號量 sem 的操作。一次 P 操作使 sem
    發(fā)表于 04-25 09:29

    操作系統(tǒng)講解(操作系統(tǒng)課件)

    操作系統(tǒng)講解(操作系統(tǒng)課件) 第五章 文件管理.doc第六章 設備管理(部分).doc第二章 進程管理.doc第3章 并發(fā)控制——互斥與同
    發(fā)表于 05-16 18:06 ?0次下載

    Linux 多線程互斥互斥

    的。如果操作是原子操作,那么天然的具有互斥同步:是指在互斥的基礎上(大多數(shù)情況),通過其它機制實現(xiàn)訪問者對資源的有序訪問。在大多數(shù)情況下,同
    發(fā)表于 04-02 14:47 ?282次閱讀

    軟、硬件方法解決進程互斥問題

    1.臨界資源(critical resource):系統(tǒng)中某些資源一次只允許一個進程使用,稱這樣的資源為臨界資源(或互斥資源)。
    的頭像 發(fā)表于 05-10 15:11 ?1759次閱讀
    軟、硬件方法解決<b class='flag-5'>進程</b><b class='flag-5'>互斥</b>問題

    使用Linux互斥實現(xiàn)互斥點燈

    互斥訪問是指一次只有一個線程可以訪問共享資源,不能遞歸申請互斥體。使用互斥體時要注意如下幾點。
    的頭像 發(fā)表于 04-13 15:13 ?914次閱讀
    使用Linux<b class='flag-5'>互斥</b>體<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>互斥</b>點燈

    shell腳本實現(xiàn)并發(fā)進程

    在Shell腳本中實現(xiàn)并發(fā)進程可以使用以下方法: 使用符號來將其放入后臺執(zhí)行,從而實現(xiàn)并發(fā)進程
    的頭像 發(fā)表于 11-08 10:20 ?1416次閱讀

    互斥鎖和自旋鎖的實現(xiàn)原理

    互斥鎖和自旋鎖是操作系統(tǒng)中常用的同步機制,用于控制對共享資源的訪問,以避免多個線程或進程同時訪問同一資源,從而引發(fā)數(shù)據(jù)不一致或競爭條件等問題。 互斥鎖(Mutex)
    的頭像 發(fā)表于 07-10 10:07 ?629次閱讀
    主站蜘蛛池模板: 国产美女精品久久久久中文 | 国产免费人成在线看视频 | 一区不卡 | 欧美性三级 | 看视频免费网址 | 欧美黑人粗硬大在线看 | 在线观看亚洲专3333 | 黄色大片网站 | 久久草在线精品 | 永久免费看的啪啪网站 | 黄视频网站免费看 | 一级片免费看 | 九月丁香婷婷亚洲综合色 | 日本免费黄色小视频 | 手机看片国产免费久久网 | 奇米色88欧美一区二区 | 丁香花五月婷婷开心 | 欧美日本一区二区三区 | 国产农村一级特黄α真人毛片 | 99热久久国产精品 | 国产女主播在线播放一区二区 | 32pao强力打造免费高速高清 | 四虎影院永久免费观看 | 亚洲五月激情 | 又粗又硬又猛又黄的免费视频黑人 | jizjizjizjiz日本护士出水 | 亚洲天天做日日做天天欢毛片 | 99干99| 日本电影在线观看黄 | 国产精品一区二区三区免费视频 | 新版天堂中文资源8在线 | 中文字幕在线二区 | 国产精品美女久久久久网站 | 天天靠天天擦天天摸 | 一个人看的www片免费高清视频 | 久久久午夜精品 | 色老太视频 | 日本成片视频 | 特级生活片 | 狂捣猛撞侍卫攻双性王爷受 | 国产理论最新国产精品视频 |