计算机操作系统生产者和消费者模型的简单介绍
生活随笔
收集整理的這篇文章主要介紹了
计算机操作系统生产者和消费者模型的简单介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
同步互斥小口訣
- 畫圖理解題目
- 判斷題目類型
- 分析進程數目 填寫進程模板
- 補充基本代碼(偽代碼)
- 補充PV代碼
- 檢查調整代碼
注意事項
- 代碼是一步一步寫出來的,代碼是反復調整寫出來的
- 60%是生產者和消費者模型
- 30%是讀者和寫者的模型
生產者和消費者
例子1
- 媽媽每次放放一個蘋果到桌子上,孩子每次從桌子上取一個蘋果。取蘋果和放蘋果不可以同時進行,而且桌子上最多只能放10個蘋果,請使用pv代碼實現同步互斥
- 箭頭 代表生產的含義,數目代表生產的數量
- 特征:1,存在一個容器,具有容量的限制;2,具有生產行為和消費行為,生產行為增加容量,消費行為減少容量
- 分析:生產者:需要考慮容器的容量,考慮的是剩余空間;消費者:需要考慮已占用空間
- 進程的數目:母親 和 孩子兩個進程
- 補充基本代碼? 取一個蘋果 和 放一個蘋果
- 補充PV代碼 full代表占用空間;empty代表已經占用的空間;p代表減;v代表加
- 使用P(s)和V(s)包住會改變容器容量的代碼,也就是臨界資源
- 代碼
例子2
- 桌子上有一個盤子,每次只能放入一個水果,媽媽放入橘子,爸爸放入蘋果,兒子吃橘子,女兒吃蘋果。盤子為空,爸爸媽媽才可以放入水果,當盤子的水果和兒子或者女兒匹配的時候,兒子和女兒才可以拿水果
- 消費者(兒子) 關注橘子;消費者(女兒)關注蘋果;生產者(媽媽)關注盤子空間;生產者(爸爸)關注盤子空間
- 四個進程?
- mutex 和 plate的效果是等價的,因此,這里不加mutex也是可以的
- 代碼
?例子3?
- AB兩個人通過信箱進行辯論,每個人都從自己的信箱取出對方的問題,將答案和新的問題組成一個郵件放入對方的信箱中,假設A的信箱可以裝入M個郵件,B的信箱可以裝入N個郵件,初始的時候,A信箱有X封郵件,B信箱有y封郵件,辯論者每次只取一封郵件,請使用PV操作實現,并解釋信號量初值和含義
- 分析
- 生產者 A? 關注 B的郵箱剩余空間
- 生產者 B 關注 A的郵箱剩余空間
- 消費者 A?關注 A的郵箱有多少封信件
- 消費者 B 關注 B的郵箱有多少封信件
- 代碼
例子4
- 系統中有多個生產者和消費者,共享一個能存放1000件產品的環形緩沖區(初始為空)。當緩沖區沒有滿的時候,生產者可以放入生產的一個產品,否則等待,當緩沖區域不為空的時候,消費者進程可以取走一件商品,否則等待。要求一個消費者從緩沖區域連續取走10個產品之后,其他消費者才可以取走產品,請使用PV實現該流程并解釋信號量的含義
- 生產者 j 剩余空間
- 消費者 i 剩余空間
- 消費者 m 物件數量
- 消費者 n? 物件數量
- 代碼
?
總結
以上是生活随笔為你收集整理的计算机操作系统生产者和消费者模型的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装solc模块4.25版本
- 下一篇: 营口生活水平怎么样(辽宁盖州人为什么最坏