wordpress网站插件下载失败,个人如何申请网址,通州建设局网站,网站建设的主要功能及定位生产者-消费者问题#xff1a;生产资源-消费资源理发师问题#xff1a;服务-被服务读者-写者问题#xff1a;同类进程不互斥、异类进程互斥哲学家进餐问题#xff1a;只有一类进程#xff0c;每个进程需要同时拥有多种资源才能运行单纯的同步问题#xff1a;前驱后继图 生… 生产者-消费者问题生产资源-消费资源理发师问题服务-被服务读者-写者问题同类进程不互斥、异类进程互斥哲学家进餐问题只有一类进程每个进程需要同时拥有多种资源才能运行单纯的同步问题前驱后继图 生产者-消费者问题 有几类进程 每类进程对应一个函数在每个函数内部用中文描述进程动作 只做一次不加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); } }