《操作系统概念》第六版作业解答2
Chapter 7进程同步
进程的同步隐含了系统中并发进程之间存在的两种相互制约关系:竞争 (互斥)与协作(同步)
互斥:两个并行的进程A、B,如果当A进行某个操作时,B不能做这一操作, 进程间的这种限制条件称为进程互斥,这是引起资源不可共享的原因。 同步:我们把进程间的这种必须互相合作的协同工作关系,称为进程同步。
进程之间的互斥是由于共享系统资源而引起的一种间接制约关系 进程之间的同步是并发进程由于要协作完成同一个任务而引起的一种直 接制约关系 如果无进程在使用共享资源时,可允许任何一个进程去使用共享资源 (即使某个进程刚用过也允许再次使用),这是通过进程互斥的方式来 管理共享资源 如果某个进程通过共享资源得到指定消息时,在指定消息未到达之前, 即使无进程在共享资源仍不允许该进程去使用共享资源,这是通过采用 进程同步的方式来管理共享资源。有些问题是互斥问题,有些是同步问题,有些是互斥同步混合问题
实现临界区互斥的基本方法
临界资源:一些被共享的资源,具有一次仅允许一个进程使用的 特点 临界区:并发进程访问临界资源的那段必须互斥执行的程序 实现临界区互斥一个遵循的准则
有空让进,临界区空闲时,允许一个进程进入执行 无空等待,有进程在临界区执行时,要进入的进程必须等待 让权等待,有进程在临界区执行时,要求进入的进程必须立即释放 CPU而等待 有限等待,不应该使进入临界区的进程无限期地等待在临界区之外
实现方法:软件方法、硬件方法
临界区问题的解决方案-满足三个基本条件
Mutual Exclusion(互斥条件): If process Pi is executing in its CS, then no other processes can be executing in their CSs Progress(进入条件):If no process is executing in its CS and some processes wish to enter their CSs, then only those processes that are not executing in their RSs can participate in the decision on which will enter its CS next, and this selection cannot be postponed indefinitely. Bounded Waiting(有限等待的条件):There exists a bound, or limit, on the number of times that other processes are allowed to enter their CSa after a process has made a request to enter its CS and before that request is granted.
信号量
信号量表示资源的物理实体
typedef struct { int value;//系统初始化时根据代表资源类可用的数量给其赋值 struct process *L;//等待使用该资源的进程列表 } semaphore
信号量的操作:P(wait)、V(signal)
P相当于申请资源 V相当于释放资源
操作系统利用信号量的状态对进程和资源进行管理,根
据用途不同,可 以把信号量分为公用信号量和私有信号量
公用信号量,用于解决进程之间互斥进入临界区 私有信号量,用于解决异步环境下进程之间的同步,
利用信号量解决临界区互斥,设置一个公用信号量Mutext,初始值为1, 任何要使用临界区资源的进程:调用P(Mutext) ,使用临界区,调用 V(Mutex) 利用信号量和PV操作实现进程同步,对所有协作关系的并发进程,他们 在使用共享资源时必须互通消息,仅当进程收到指定的消息后才能使用 共享资源,否则需等待,直到指定的消息到达。
经典同步问题
生产者-消费者
同步,生产者将生产的产品放入缓存区,消费者从缓存区取 用产品,所以他们要互通消息,生产者放之前要测试缓存区 是不是满,消费者在从缓存区取之前要测试是不是为空。 互斥,任何时候只有一个生产者或者消费者可以访问缓存区 读写互斥访问 写写互斥访问 允许多个读者同时读,多个读者共享读者计数器变量,互斥 操作
读者-写者
哲学家就餐
读者-写者(写者优先)
int readcount=0, writecount=0;//读者、写者计数 semaphore rmutex=1, wmutex=1;//读者、写者分别互斥访问readcount, writecount semaphore rwmutex=1;//读者、写者互斥访问文件 semaphore r=1;//所有读者排队 semaphore rw=1;//一个读者与一个写者竞争访问文件
//读者 do{ wait(r);//其他读进程在r上排队 wait(rw);//一个读进程与一个写进程在rw上竞争 wait(rmutex); readcount++; if(readcount ==1) wait(rwmutex); signal(rmutex); signal(rw); signal(r); 读数据…//CS wait(rmutex); readcount--; if(readcount ==0) signal(rwmutex); signal(rmutex); }while(1);
//写者 Do{ wait(wmutex); writecount++; if(writecount==1) wait(rw);//一个写进程在rw竞争 signal(wmutex); wait(rwmutex);//其他写进程在rwmutex上排队 写数据…//CS wait(wmutex); writecount--; if(writecount==0) signal(rw); //都写完通知读进程 signal(wmutex); }While(1)
读者-写者(两者公平)
int readcount=0;//读者计数 semaphore rmutex=1;//读者互斥访问readcount semaphore rwmutex=1;//读者、写者互斥访问文件 semaphore rw=1;//读者与写者竞争访问文件
//读者 do{ wait(rw);//读进程与写进程在rw上竞争 wait(rmutex); readcount++; if(readcount ==1) wait(rwmutex); signal(rmutex); signal(rw); 读数据…//CS wait(rmutex); readcount--; if(readcount ==0) signal(rwmutex); signal(rmutex); }while(1);
//写者 Do{ wait(rw);//读者写者竞争 wait(rwmutex); 写数据…//CS signal(wmutex); signal(rw); }While(1)
哲学家就餐
共享变量 semaphore chopstick[5], mutex;//Initially all values are
1 Philosopher i: do {
wait(mutex); wait(chopstick[i]) wait(chopstick[(i+1) % 5]) signal(mutex); … eat … signal(chopstick[i]); signal(chopstick[(i+1) % 5]); … think … } while (1);
Chapter 7
7.4 The first known correct software solution to the critical-section problem for two threads was developed by Dekker. The two threads, T0 and T1, share the following variables:Boolean flag[2]; /* initially false */ int turn;
The structure of thread Ti (i=0 or 1), with Tj (j=1 or 0) being the other thread, is shown as:do { flag [i] = true; while ( flag [j] ){ if (turn == j){ flag [i] = false; while (turn = = j); flag [i] = true; } } critical section turn = j; flag [i] = false; remainder section } while (1);
Prove that the algorithm satisfies all three requirements for the critical-section problem. 互斥:只能有一个在临界区 Pi在临界区,Pj想进,看flag 某进程进入临界区之前,Pi、Pj都置flag为true,看turn,只有进了的进程退出临界区以后另一个才能进 进度: 当前没有进程在临界区,只有一个进程试图进,看flag 两个都试图进,看turn,进了进程在有限时间内复位flag 有限等待: Pi被拒绝进入临界区,Pj已在临界区或者获准进入,当Pj退出临界区,置turn为i,复位flag,Pi可以进
7-cont.
相关推荐:
- [实用文档]李践-有效提升销售的12大黄金法则8-大
- [实用文档]党支部换届工作方案
- [实用文档]2013年下期电子商务专业部宣传工作计划
- [实用文档]方庄一矿通风、钻探绩效工资考核管理办
- [实用文档]项目一 认识企业物流认识企业物流
- [实用文档]MBI_Display_产品蓝图规画
- [实用文档]北京市建筑业劳务作业人员普法维权培训
- [实用文档]锅炉燃烧调整与运行优化
- [实用文档]4支付结算业务的核算
- [实用文档]米什金_货币金融学_第9版各章学习指导
- [实用文档]水泥混凝土路面硬化工程施工组织设计
- [实用文档]钢筋工程安全技术交底书
- [实用文档]关于公布华中师范大学本科毕业论文
- [实用文档]太原市园林绿化施工合同范本 2
- [实用文档]周日辅导 初中英语分类复习单项选择题(
- [实用文档]第四章 文化经纪人的管理形式 第二节
- [实用文档]学宪法讲宪法竞赛题库
- [实用文档]《数值计算方法》期末考试模拟试题二
- [实用文档]爱词霸学英语:每日一句( 十月)
- [实用文档]2014年国家公务员面试:无领导小组讨论
- 新课程主要理念和教学案例分析汇编(24
- 英国人的快乐源于幸福的家庭生活
- 七年级上册第一次月考模拟数学试卷
- 真丝及仿真丝的种类有哪些?
- 【最新】华师大版八年级数学下册第十六
- 高中英语3500个必背单词
- 我可以接受失败,但我不能接受放弃!
- 最近更新沪科版八年级物理上册期末试卷
- 绿化工作先进乡镇事迹材料
- 鲁教版九年级上册思想品德教学计划
- 英语音标的分类
- 地下室底板无梁楼盖与普通梁板结构形式
- 美容师黄金销售话术
- 雅思写作满分作文备考方法
- 血清甲状腺激素测定与高频彩色多普勒超
- 1度浅析装修对室内空气品质的影响
- 2017-2022年中国汞矿行业深度分析与投
- 计算机二级VB公共基础知识
- (何勇)秸秆禁烧_重在寻找出路
- 内外墙抹灰工程分包施工合同1




