操作系统【OS】Ch2 大题 PV题型分类

  • 生产者-消费者问题:生产资源-消费资源
  • 理发师问题:服务-被服务
  • 读者-写者问题:同类进程不互斥、异类进程互斥
  • 哲学家进餐问题:只有一类进程,每个进程需要同时拥有多种资源才能运行
  • 单纯的同步问题:前驱后继图

生产者-消费者问题

  • 有几类进程?
    • 每类进程对应一个函数
  • 在每个函数内部,用中文描述进程动作
    • 只做一次:不加whlie
    • 不断重复:加while(1)
  • 分析每一动作之前是否需要p什么?
    • ⚠️隐含的互斥(eg 缓冲区的访问,需要加:P(mutex))
  • 只要有P必定有V,每写一个P,就要安排V
  • 所有PV写完之后,再去定义信号量(semaphore)
  • 定义完之后思考每个信号量的初值是多少
  • 检查多个P连续出现的地方是否可能产生死锁
    • ⚠️可以尝试调整P顺序
    • 若某个信号量PV操作总连续出现,中间没有夹其他P,则不可能因信号量产生死锁
  • 读题检查,是否满足题目要求

哲学家进餐问题

无脑让进程一口气取得所有的资源,再开始运行

- 定义大锁:``Semophore Lock = 1; //互斥信号量

- 定义资源数:

复制代码
`//eg:有a、b、c三类资源,分别有9个、8个、5个,则:`

`int a = 9; // 表示a的剩余数量`

`int b = 8; // 表示b的剩余数量`

`int c = 5; // 表示c的剩余数量`

- 代码模版:

复制代码
`Process(){`

` while(1){`

` P(Lock);`

` if(所有资源都够){`

` 所有资源的int值减少; //题目回告知每类资源需要多少个。`

` 取xxx资源; //一口气拿走所有的资源。`

` `V(Lock);` //拿完资源解锁 `

` `break;` //跳出while循环`

` }`

` `V(Lock);` //资源不够,解锁,再循环尝试一次`

` }`

` 做进程该做的事情(例如:哲学家干饭)// 用中文说明即可。`

` `P(Lock);

` 归还所有资源,所有资源的int值增加。`

` `V(Lock);

`}`

读者-写者问题

题目没有要求避免饥饿的话,用最简单的方法(读优先)可以得满分

- 读者优先:

复制代码
`semaphore lock = 1; // 用于实现对共享文件的互斥访问`

`int count = 0; //记录当前有几个读进程在访问文件`

`semaphore mutex = 1; //用于保证对count变量的互斥访问`

` `

`writer(){`

` while(1){`

` P(lock); // 写之前上锁`

` write;`

` V(lock); // 写完了解锁`

` }`

`}`

` `

`reader(){`

` while(1){`

` P(mutex); //各个进程互斥访问count`

` if(count == 0) P(lock); //第一个读者,读之前帮他的兄弟们上锁`

` count ++; //访问文件的读进程数+1`

` V(mutex);`

` `

` read;`

` `

` P(mutex); //各个进程互斥访问count`

` count----; //访问文件的读进程数-1`

` if(count == 0) V(lock); //最后一个读进程负责解锁`

` V(mutex);`

` }`

`}`
相关推荐
PMAOS2 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
MicrosoftCloud2 天前
计网 14|HTTP 协议核心:报文结构、状态码、持续连接
计算机网络·考研·http·状态码·408·万维网·持续连接
罗四强2 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
aichitang20243 天前
代数拓扑学与现代前沿视角
考研·算法·数学建模·ai·拓扑学·高考
MicrosoftCloud3 天前
计网 12|ARP、DHCP、ICMP:地址解析、动态分配与差错报告
计算机网络·考研·408·arp·dhcp·icmp·ping
优化控制仿真模型3 天前
2026【英一】考研英语一历年真题及答案解析PDF电子版(1980-2025年)
考研·pdf
希和20273 天前
考研高数综合题|二重积分(平移极坐标)
考研
Liaiyang664 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手4 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
lazy H4 天前
【计算机网络】第 15 篇:Java BIO、NIO 与高并发网络通信——从 Socket 理解 I/O 模型
网络·后端·tcp/ip·计算机网络·nio·408