操作系統(tǒng) 生產(chǎn)者 消費者(操作系統(tǒng)生產(chǎn)者消費者問題例題)

      網(wǎng)友投稿 892 2025-04-01

      本篇文章給大家談?wù)劜僮飨到y(tǒng) 生產(chǎn)者 消費者,以及操作系統(tǒng)生產(chǎn)者消費者問題例題對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 今天給各位分享操作系統(tǒng) 生產(chǎn)者 消費者的知識,其中也會對操作系統(tǒng)生產(chǎn)者消費者問題例題進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!

      本文目錄一覽:

      計算機操作系統(tǒng)生產(chǎn)者消費者

      生產(chǎn)者-消費者是一種設(shè)計模式。生產(chǎn)者往緩沖區(qū)寫入數(shù)據(jù),消費者從緩沖區(qū)拿取數(shù)據(jù),兩者通過緩沖區(qū)來進行通信。這樣的話生產(chǎn)者不必?fù)?dān)心要等待消費者使用完數(shù)據(jù),消費者也不用擔(dān)心不夠時間處理完所有數(shù)據(jù)。

      操作系統(tǒng) 關(guān)于生產(chǎn)者消費者的問題

      empty是資源信號量,意思生產(chǎn)者、消費者都靠這個信號量來進行生產(chǎn)、消費。
      為什么“生產(chǎn)者進程向n個緩沖區(qū)投滿產(chǎn)品后消費者進程才開始從中取產(chǎn)品”?
      其實可以轉(zhuǎn)為問進程間為什么需要同步、互斥?您對這問題的研究不夠請再看書。
      這里我和您舉個例子。
      信號量的目的是管理生產(chǎn)者、消費者對公共資源(緩沖區(qū))的訪問
      p原語對資源進行占有,V原語對資源進行釋放
      缺少empty資源信號量,那么只有互斥信號量。
      但是empty和FUll需要成對出現(xiàn),就算缺少signal(empty),那么消費者沒對empty信號進行釋放,產(chǎn)生的結(jié)果只會是下次生產(chǎn)者想進去生產(chǎn)東西但因為信號量缺失,進不去。
      我也很想知道為什么“生產(chǎn)者進程向n個緩沖區(qū)投滿產(chǎn)品后消費者進程才開始從中取產(chǎn)品”?

      操作系統(tǒng) 判斷題 生產(chǎn)者消費者問題

      一、明確定義
      要理解生產(chǎn)消費者問題,首先應(yīng)弄清PV操作操作系統(tǒng) 生產(chǎn)者 消費者的含義:PV操作是由P操作原語和V操作原語組成(原語是不可中斷的過程),對信號量進行操作,具體定義如下:
      P(S):①將信號量S的值減1,即S=S-1;
      ②如果S30,則該進程繼續(xù)執(zhí)行;否則該進程置為等待狀態(tài),排入等待隊列。
      V(S):①將信號量S的值加1,即S=S+1;
      ②如果S0,則該進程繼續(xù)執(zhí)行;否則釋放隊列中第一個等待信號量的進程。
      這只是書本的定義,對于這部分內(nèi)容,老師先不要急于解釋上面的程序流程,而是應(yīng)該讓學(xué)生首先知道P操作與V操作到底有什么作用。
      P操作相當(dāng)于申請資源,而V操作相當(dāng)于釋放資源。所以要學(xué)生記住以下幾個關(guān)鍵字:
      P操作-----à申請資源
      V操作----à釋放資源
      二、形象啟發(fā)
      為此舉兩個生活中的例子:
      例一:在公共電話廳打電話
      公共電話廳里有多個電話,如某人要打電話,首先要進行申請,看是否有電話空閑,若有,則可以使用電話,如果電話亭里所有電話都有人正在使用,那后來的人只有排隊等候。當(dāng)某人用完電話后,則有空電話騰出,正在排隊的第一個人就可以使用電話。這就相當(dāng)于PV操作:
      某人要打電話,首先要進行申請,相當(dāng)于執(zhí)行一次P操作,申請一個可用資源(電話);
      某人用完電話,則有空電話騰出,相當(dāng)于執(zhí)行一次V操作,釋放一個可用資源(電話)。
      在多媒體課件中,這部分內(nèi)容充分通過動畫效果,演示整個申請電話資源(P操作)與釋放電話資源(V操作)的過程,同時顯示當(dāng)前可用的資源個數(shù)(電話個數(shù))。課件直觀生動,一目操作系統(tǒng) 生產(chǎn)者 消費者了然,學(xué)生非常容易接受,并且理解深刻。
      三、分層解剖
      在理解了PV操作的的含義后,就必須講解利用PV操作可以實現(xiàn)進程的兩種情況:互斥和同步。根據(jù)互斥和同步不同的特點,就有利用PV操作實現(xiàn)互斥與同步相對固定的結(jié)構(gòu)模式。這里就不詳細(xì)講解了。但生產(chǎn)者-消費者問題是一個有代表性的進程同步問題,要學(xué)生透徹理解并不容易。但是如果操作系統(tǒng) 生產(chǎn)者 消費者我們將問題細(xì)分成三種情況進行講解,理解難度將大大降低。
      1)一個生產(chǎn)者,一個消費者,公用一個緩沖區(qū)。
      可以作以下比喻:將一個生產(chǎn)者比喻為一個生產(chǎn)廠家,如伊利牛奶廠家,而一個消費者,比喻是學(xué)生小明,而一個緩沖區(qū)則比喻成一間好又多。第一種情況,可以理解成伊利牛奶生產(chǎn)廠家生產(chǎn)一盒牛奶,把它放在好又多一分店進行銷售,而小明則可以從那里買到這盒牛奶。只有當(dāng)廠家把牛奶放在商店里面后,小明才可以從商店里買到牛奶。所以很明顯這是最簡單的同步問題。
      解題如下:
      定義兩個同步信號量:
      empty——表示緩沖區(qū)是否為空,初值為1。
      full——表示緩沖區(qū)中是否為滿,初值為0。
      生產(chǎn)者進程
      while(TRUE){
      生產(chǎn)一個產(chǎn)品;
      P(empty);
      產(chǎn)品送往Buffer;
      V(full);
      }
      消費者進程
      while(TRUE){
      P(full);
      從Buffer取出一個產(chǎn)品;
      V(empty);
      消費該產(chǎn)品;
      2)一個生產(chǎn)者,一個消費者,公用n個環(huán)形緩沖區(qū)。
      第二種情況可以理解為伊利牛奶生產(chǎn)廠家可以生產(chǎn)好多牛奶,并將它們放在多個好又多分店進行銷售,而小明可以從任一間好又多分店中購買到牛奶。同樣,只有當(dāng)廠家把牛奶放在某一分店里,小明才可以從這間分店中買到牛奶。不同于第一種情況的是,第二種情況有N個分店(即N個緩沖區(qū)形成一個環(huán)形緩沖區(qū)),所以要利用指針,要求廠家必須按一定的順序?qū)⑸唐芬来畏诺矫恳粋€分店中。緩沖區(qū)的指向則通過模運算得到。

      解題如下:
      定義兩個同步信號量:
      empty——表示緩沖區(qū)是否為空,初值為n。
      full——表示緩沖區(qū)中是否為滿,初值為0。
      設(shè)緩沖區(qū)的編號為1~n-1,定義兩個指針in和out,分別是生產(chǎn)者進程和消費者進程使用的指針,指向下一個可用的緩沖區(qū)。

      生產(chǎn)者進程
      while(TRUE){
      生產(chǎn)一個產(chǎn)品;
      P(empty);
      產(chǎn)品送往buffer(in);
      in=(in+1)mod n;
      V(full);
      }
      消費者進程
      while(TRUE){
      P(full);
      從buffer(out)中取出產(chǎn)品;
      out=(out+1)mod n;
      V(empty);
      消費該產(chǎn)品;
      }
      3)一組生產(chǎn)者,一組消費者,公用n個環(huán)形緩沖區(qū)
      第三種情況,可以理解成有多間牛奶生產(chǎn)廠家,如蒙牛,達能,光明等,消費者也不只小明一人,有許許多多消費者。不同的牛奶生產(chǎn)廠家生產(chǎn)的商品可以放在不同的好又多分店中銷售,而不同的消費者可以去不同的分店中購買。當(dāng)某一分店已放滿某個廠家的商品時,下一個廠家只能把商品放在下一間分店。所以在這種情況中,生產(chǎn)者與消費者存在同步關(guān)系,而且各個生產(chǎn)者之間、各個消費者之間存在互斥關(guān)系,他們必須互斥地訪問緩沖區(qū)。
      解題如下:
      定義四個信號量:
      empty——表示緩沖區(qū)是否為空,初值為n。
      full——表示緩沖區(qū)中是否為滿,初值為0。
      mutex1——生產(chǎn)者之間的互斥信號量,初值為1。
      mutex2——消費者之間的互斥信號量,初值為1。
      設(shè)緩沖區(qū)的編號為1~n-1,定義兩個指針in和out,分別是生產(chǎn)者進程和消費者進程使用的指針,指向下一個可用的緩沖區(qū)。

      生產(chǎn)者進程
      while(TRUE){
      生產(chǎn)一個產(chǎn)品;
      P(empty);
      P(mutex1);
      產(chǎn)品送往buffer(in);
      in=(in+1)mod n;
      V(mutex1);
      V(full);
      }
      消費者進程
      while(TRUE){
      P(full);
      P(mutex2);
      從buffer(out)中取出產(chǎn)品;
      out=(out+1)mod n;
      V(mutex2);
      V(empty);

      操作系統(tǒng)--進程管理

      進程實體=PCB(process control block)+程序段+數(shù)據(jù)段
      PCB,用于描述進程的基本情況和運行狀態(tài)。創(chuàng)建進程=創(chuàng)建對應(yīng)進程的PCB;撤銷進程=撤銷對應(yīng)的PCB。
      PCB是進程存在的唯一標(biāo)志

      1.創(chuàng)建態(tài)
      2. 就緒態(tài)
      3. 運行態(tài)
      4. 阻塞態(tài)
      5.運行態(tài)
      除了五狀態(tài)還有七狀態(tài)。

      重點在于就緒態(tài)、運行態(tài)、阻塞態(tài)之間的轉(zhuǎn)換
      1.就緒態(tài)的進程被調(diào)度后,獲得處理機資源,變?yōu)檫\行態(tài)。
      2.運行態(tài)的進程在時間片用完后,讓出處理機,轉(zhuǎn)換為就緒態(tài)。
      3.進程請求某一資源時,資源無法分配或等待某一事件發(fā)生,進程由運行態(tài)變?yōu)樽枞麘B(tài)
      4.當(dāng)阻塞態(tài)的進程等待的資源和事件得帶滿足,進程由阻塞態(tài)變?yōu)榫途w態(tài)

      1.共享存儲:通信進程之間存在可直接訪問的共享空間,通過對共享空間進行讀寫操作實現(xiàn)通信
      2.消息傳遞:以格式化的信息為單位,通過發(fā)送消息和接受消息兩個原語實現(xiàn)
      3.管道通信:共享存儲的優(yōu)化和發(fā)展,時一種半雙工的通行方式。

      1.進程時資源分配和擁有的基本單位;線程自己不擁有資源,但可以訪問所屬進程所擁有的資源。
      2.在沒有引入線程的操作系統(tǒng)中進程是調(diào)度的基本單位;引入線程后,線程是調(diào)度的基本單位。
      3.進程切換開銷較大;線程切換開銷很小。
      4.進程的地址空間之間互相獨立;同一進程的各線程間共享進程的地址空間。

      用戶級:線程的創(chuàng)建、撤銷、同一進程的線程的切換都要在用戶空間中實現(xiàn)。線程阻塞會導(dǎo)致整個進程阻塞。
      內(nèi)核級:線程的創(chuàng)建、撤銷、切換都在內(nèi)核空間實現(xiàn)。系統(tǒng)開銷大

      1.作業(yè)調(diào)度(高級調(diào)度):內(nèi)存與輔存之間的調(diào)度,每個作業(yè)只調(diào)度一次,調(diào)出一次。
      2.內(nèi)存調(diào)度(中級調(diào)度):將暫時不能運行的進程調(diào)至外存等待。
      3.進程調(diào)度(低級調(diào)度)
      作業(yè)調(diào)度為進程活動做準(zhǔn)備,進程調(diào)度使進程正常活動起來,中級調(diào)度將暫時不用的進程掛起。

      1.先來先服務(wù)
      2.短作業(yè)優(yōu)先
      3.優(yōu)先級調(diào)度算法
      4.高響應(yīng)比優(yōu)先
      5. 時間片輪轉(zhuǎn)調(diào)度算法
      6. 多級反饋隊列調(diào)度算法

      1.空閑讓進
      2.忙則等待
      3.有限等待
      4.讓權(quán)等待

      1.單標(biāo)志法
      2.雙標(biāo)志法先檢查:違背忙則等待
      3.雙標(biāo)志法后檢查:違背空閑讓進,有限等待
      4.皮特森算法:違背讓權(quán)等待

      1.中斷屏蔽方法:簡單、高效,但不適用于多處理機
      2.硬件指令方法:TSL(TestAndSet)指令:原子操作,讀出指定標(biāo)志后,把標(biāo)志設(shè)為真 Swap指令:原子操作,交換兩個字的內(nèi)容。

      P操作可以理解為資源減一,資源不夠就加入等待隊列
      V操作可以理解為資源數(shù)加一,如果有隊列,就將資源分給正在等待的隊列
      1. 同步問題 :a事件---V-------------------P---b事件
      2. 互斥問題 :P-----互斥事件-----V

      為了解決大量分散的同步操作給系統(tǒng)管理帶來了麻煩,因此引入了管程的概念。
      管程是一種代表共享資源的數(shù)據(jù)結(jié)構(gòu),包括對該共享數(shù)據(jù)結(jié)構(gòu)進行操作

      1.生產(chǎn)者-消費者問題
      2.讀者-寫者問題
      3.哲學(xué)家進餐問題
      4.吸煙者問題

      定義:多個進程因競爭資源而造成的互相等待的僵局
      產(chǎn)生條件:1.互斥 2.不剝奪 3.請求并保持 4.循環(huán)等待
      死鎖的處理:1.死鎖預(yù)防 2.避免死鎖 3.死鎖的檢測及解除

      破壞產(chǎn)生死鎖的四個條件任意一個。

      銀行家算法

      通過資源分配圖是否產(chǎn)生死鎖,然后采取措施解除死鎖,包括:1.資源剝奪法 2.撤銷進程法 3.進程回退法

      關(guān)于計算機操作系統(tǒng) 生產(chǎn)者和消費者問題 哪位來解答一下

      wait(x)是把x這個信號量進入臨界區(qū),
      signal(y)是把y這個信號量離開臨界區(qū)。
      此題中,wait順序不可變,signal可變。
      進入臨界區(qū)的話,其他線程再申請進入同一個信號量的臨界區(qū)就會block,等待。。
      1)wait順序不可逆原因:
      對于消費者,這里先wait(full)是為了確保full不是0(即確保可以消費),不然先wait(mutex)的話,如果full為0,就會一直停在這里,等待消費。然后生產(chǎn)者就一直在等待進入mutex而無法進行生產(chǎn),導(dǎo)致死鎖。
      對于生產(chǎn)者也是如此。
      2)signal可逆原因:
      對生產(chǎn)者,因為已經(jīng)生產(chǎn)完了,所以先退出mutex臨界區(qū)或者或者對full的數(shù)目加一,都不會產(chǎn)生影響。
      設(shè)full=0,此時消費者無法進入full臨界區(qū),如果先signal(full),那么full數(shù)目加1,消費者可以進入full臨界區(qū),但是metux還被生產(chǎn)者使用,所以消費之要等到生產(chǎn)者signal(mutex)才能進入,沒有任何影響。
      對于消費者也是如此。 關(guān)于操作系統(tǒng) 生產(chǎn)者 消費者和操作系統(tǒng)生產(chǎn)者消費者問題例題的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。 操作系統(tǒng) 生產(chǎn)者 消費者的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于操作系統(tǒng)生產(chǎn)者消費者問題例題、操作系統(tǒng) 生產(chǎn)者 消費者的信息別忘了在本站進行查找喔。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:35個Excel表格的基本操作技巧
      下一篇:exl里如何實現(xiàn)行轉(zhuǎn)成列(excel怎么把行變成列)
      相關(guān)文章
      jizzjizz亚洲日本少妇| 亚洲youwu永久无码精品| 无码色偷偷亚洲国内自拍| 国产成人亚洲精品| 亚洲国产中文在线视频| 中文字幕人成人乱码亚洲电影| 国产成人亚洲综合a∨| 亚洲?V无码乱码国产精品| 亚洲欧洲日产国码久在线| 亚洲一级毛片免费观看| 亚洲综合网美国十次| 亚洲欧洲精品在线| 亚洲人成网网址在线看| 亚洲伊人久久大香线焦| 亚洲国产成a人v在线观看| 亚洲成a人片毛片在线| 亚洲av成人一区二区三区| 国产精品高清视亚洲精品| 亚洲一卡2卡三卡4卡无卡下载| 亚洲欧美国产精品专区久久| 亚洲av无码兔费综合| 亚洲av日韩专区在线观看| 国产亚洲高清在线精品不卡| 亚洲精品偷拍视频免费观看| 亚洲综合伊人久久大杳蕉| 亚洲va无码手机在线电影| 久久精品国产亚洲AV香蕉| 亚洲女人初试黑人巨高清| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲欧洲另类春色校园网站| 亚洲国产成人久久综合| 国产亚洲精品仙踪林在线播放| 亚洲人成色7777在线观看不卡| 亚洲人成伊人成综合网久久久| 亚洲AV无码专区亚洲AV伊甸园| 亚洲色av性色在线观无码| 丁香婷婷亚洲六月综合色| 九九精品国产亚洲AV日韩| 亚洲精品综合久久| 亚洲国产精品成人精品无码区| 在线免费观看亚洲|