日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统(二十三)生产者消费者问题

發布時間:2025/3/15 windows 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统(二十三)生产者消费者问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.3.6 生產者消費者問題

? 生產者消費者問題(The proceducer-consumer problem)是一個經典的進程同步的問題,問題是這樣描述的:在操作系統中有一組生產者進程一組消費者進程,生產者每次會生產一件產品并放入緩沖區,消費者每次從緩沖區取出一件產品并使用。生產者、消費者共享一個初始為空、大小為n的緩沖區。只有緩沖區沒滿時,生產者才能把產品放入緩沖區,否則必須等待。只有緩沖區不空時,消費者才能從中取出產品,否則必須等待。緩沖區是臨界資源,各進程必須互斥地訪問。??

? 從上面這段話中我們可以總結出一個同步問題以及一個互斥問題:生產者只有生產了產品放入緩沖區之后消費者才能使用(同步問題),同時緩沖區只能由一種進程進行訪問(互斥問題)。對于同步問題可以描述為,檢查緩沖區沒滿之后生產者放入產品;檢查緩沖區不空之后消費者才可以取用產品。下面開始對問題進行描述:

semaphore mutex = 1; //互斥信號量,實現對緩沖區的互斥訪問 semaphore empty = n; //同步信號量,表示空閑緩沖區的數量 semaphore full = 0; //同步信號量,表示產品的數量,也即非空緩沖區的數量producer (){while(1){生產一個產品;P(empty);P(mutex);把產品放入緩沖區;V(mutex);V(full);} }consumer (){while(1){P(full);P(mutex);取走一個產品;V(mutex);V(empty);使用產品;} }

? 不知道大家有沒有發現,兩個進程發生聯系的橋梁一定是他們的同步信號量,換句話說,同步信號量的P與V必須出現在兩個不同的進程中。并且實現互斥的P操作一定要在實現同步的P操作之后。V操作不會導致進程阻塞,因此兩個V操作順序可以交換

總結

以上是生活随笔為你收集整理的操作系统(二十三)生产者消费者问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。