版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章进程同步什么是进程互斥?什么是进程同步?进程互斥:多个进程在访问临界资源(一次仅允许一个进程使用的资源,如打印机、共享变量)时,必须互斥执行,即当一个进程进入临界区使用临界资源时,其他进程必须等待,直到该进程退出临界区。它解决的是“竞争关系”下的资源访问冲突问题。进程同步:多个进程为完成同一任务而需要协同工作,执行顺序必须遵循一定的逻辑关系(即“前趋关系”),比如生产者必须先生产数据,消费者才能消费数据。它解决的是“协作关系”下的执行顺序问题。信号量的物理含义是什么?信号量(Semaphore)是一个整型变量,核心是两个原子操作wait()(P操作)和signal()(V操作),其物理含义如下:信号量的值S≥0:表示当前可用的资源数量,或可同时进入临界区的进程数。信号量的值S<0:绝对值表示等待该资源的进程数量,这些进程被阻塞在信号量的等待队列中。当信号量为互斥信号量(初值为1)时,用于实现临界资源的互斥访问;当为同步信号量(初值为0或N)时,用于实现进程间的执行顺序控制。3.使用硬件实现互斥的方法有哪些?它们分别有什么缺点?常见硬件实现互斥的方法有以下3种:方法实现原理主要缺点关中断进程进入临界区前关闭中断,退出后开启中断,避免进程被调度打断,从而保证临界区的原子性。滥用会导致系统响应变慢,甚至死锁;仅适用于单处理器系统,多处理器下无法保证全局互斥;可能破坏系统的中断响应机制。测试并设置指令硬件提供原子指令,读取并设置锁变量的值,若锁为0则获取锁,否则循环等待。忙等待(自旋),会持续占用CPU资源;可能导致饥饿现象(低优先级进程长期无法获取锁)。交换指令原子地交换寄存器与锁变量的值,通过交换结果判断是否获取锁。同样存在忙等待问题,CPU资源浪费;依赖硬件指令支持,可移植性差。4.自旋锁的实质是什么?请说明其优缺点。实质:自旋锁是一种基于忙等待的互斥锁,当进程无法获取锁时,不会进入阻塞状态,而是在原地循环(自旋),不断尝试获取锁,直到锁被释放。优点:实现简单,无需操作系统调度进程上下文,获取锁的延迟低;适用于临界区执行时间极短的场景,避免了进程阻塞/唤醒的开销。缺点:忙等待会持续占用CPU资源,若锁长时间被占用,会造成严重的资源浪费;可能导致优先级反转(低优先级进程持有锁,高优先级进程自旋等待);不适合单处理器系统,否则会导致系统死锁(自旋进程一直占用CPU,持有锁的进程无法运行释放锁)。进程之间存在哪几种制约关系?分别是什么原因引起的?下列活动分别属于哪种制约关系?进程间的制约关系分为两类:间接制约关系(互斥关系):由多个进程竞争同一临界资源引起,必须互斥访问。直接制约关系(同步关系):由多个进程协作完成同一任务引起,存在执行顺序的前趋关系。各活动对应的制约关系:若干同学去图书馆借书:互斥关系(图书是临界资源,同一本书只能被一个同学借阅)。两队举行篮球比赛:互斥关系(篮球是临界资源,同一时间只能被一队控制)。流水线生产的各道工序:同步关系(前一道工序完成后,后一道工序才能开始,存在明确的前趋顺序)。商品生产和社会消费:同步关系(必须先生产出商品,消费者才能消费;消费后又会促进生产,存在双向的同步依赖)。3个进程input、copy、output的同步算法(使用wait()/signal())首先定义信号量:semaphoreempty1=1;//buffer1的空位数(初值为1,表示buffer1初始为空)semaphorefull1=0;//buffer1的满位数(初值为0,表示无数据)semaphoreempty2=1;//buffer2的空位数(初值为1,表示buffer2初始为空)semaphorefull2=0;//buffer2的满位数(初值为0,表示无数据)同步算法实现://input进程:从输入设备读入数据,写入buffer1processinput(){while(true){data=read_from_input();//读入数据wait(empty1);//申请buffer1的空位write_to_buffer1(data);//写入buffer1signal(full1);//通知copy进程:buffer1已有数据}}//copy进程:从buffer1读数据,加工后写入buffer2processcopy(){while(true){wait(full1);//等待buffer1的数据data=read_from_buffer1();//读入数据signal(empty1);//通知input进程:buffer1的空位已释放process_data(data);//加工数据wait(empty2);//申请buffer2的空位write_to_buffer2(data);//写入buffer2signal(full2);//通知output进程:buffer2已有数据}}//output进程:从buffer2读数据并输出processoutput(){while(true){wait(full2);//等待buffer2的数据data=read_from_buffer2();//读入数据signal(empty2);//通知copy进程:buffer2的空位已释放write_to_output(data);//输出数据}}单行车道a-b段的车辆管理算法(信号量实现)定义信号量与变量:semaphoremutex=1;//保护共享变量的互斥信号量intcount_a=0;//a方向在ab段行驶的车辆数intcount_b=0;//b方向在ab段行驶的车辆数semaphorewait_ab=1;//ab段车道的信号量车辆进入与驶出的逻辑://a方向车辆进入ab段processcar_from_a(){wait(mutex);count_a++;//a方向车辆数+1if(count_a=1)//当前进程是该方向的第一辆车wait(wait_ab);signal(mutex);drive_on_ab();//在ab段行驶wait(mutex);count_a--;//a方向车辆数-1if(count_a==0){//若当前进程是该方向的唯一的车signal(wait_ab);}signal(mutex);}//b方向车辆进入ab段processcar_from_b(){wait(mutex);count_b++;//a方向车辆数+1if(count_b=1)//当前进程是该方向的第一辆车wait(wait_ab);signal(mutex);drive_on_ab();//在ab段行驶wait(mutex);count_b--;//a方向车辆数-1if(count_b==0){//若当前进程是该方向的唯一的车signal(wait_ab);}signal(mutex);}司机与售票员的同步算法(信号量实现)定义信号量:semaphoredoor=0;//车门状态信号量:初值为0,表示车门未关semaphorerun=0;//车辆运行状态信号量:初值为0,表示车辆未启动同步算法实现://司机进程processdriver(){while(true){wait(door);//等待售票员关车门start_car();//启动车辆signal(run);//通知售票员:车辆已启动run_car();//正常运行stop_car();//到站停车signal(door);//通知售票员:车辆已停,可开车门}}//售票员进程processconductor(){while(true){close_door();//关车门signal(door);//通知司机:车门已关wait(run);//等待车辆启动sell_ticket();//售票wait(door);//等待车辆到站停车open_door();//开车门,乘客上下车}}飞机订票系统的同步逻辑(含饥饿避免)核心规则:查询与查询可并发;订票(更新数据库)与所有操作互斥;订票不能被持续的查询操作饿死。定义信号量与变量:semaphoremutex_db=1;//数据库互斥信号量,保护数据库操作semaphorequery_mutex=1;//查询计数的互斥信号量intquery_count=0;//当前正在执行的查询数semaphoreticket_wait=0;//订票等待信号量(避免饥饿)逻辑流程(文字描述+逻辑框图):查询进程流程:wait(query_mutex),查询query_count并+1,signal(query_mutex)。查询数据库。wait(query_mutex),query_count-1,若query_count==0且有订票进程等待,则signal(ticket_wait),signal(query_mutex)。订票进程流程:①wait(query_mutex),若query_count>0,则signal(query_mutex)并wait(ticket_wait)(等待查询完成),再重新wait(query_mutex)。②wait(mutex_db),更新数据库。③signal(mutex_db),signal(query_mutex)。图略管程是什么?管程有什么优势?管程定义:管程(Monitor)是一种高级同步原语,由语言层面提供支持,它将共享数据结构、对数据的操作过程、同步控制机制封装在一起,确保同一时间只有一个进程能进入管程内执行操作,从而实现互斥访问。管程内部通过条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年心理课教学策略分析报告
- 2026年机械行业安全事故案例分享
- 2026年银行商场营销活动方案策划
- 2026年酒店冬至活动方案策划书
- 2026年停车场专项规划招标方案
- 2026年幼儿园食品安全方案预案
- 2026年网络安全技术服务合同规范二篇
- 承德嘉许商砼有限责任公司隆化县郭家屯镇水泉村 年产50万吨混凝土搅拌站项目水土保持方案报告表
- 45万吨超白精制石英砂建设项目可行性研究报告模板-立项备案
- 2.4 两位数除以一位数的笔算除法 (教案)三年级下册数学人教版
- 2026年苏教版七年级下册语文期末测试卷(含答案可下载)
- 2026上海青浦区区管企业统一招聘85人笔试历年参考题库附带答案详解
- 新教材北师大版七年级数学下学期期末模拟卷
- 低空经济中数据资产的价值实现与流通体系构建
- 卫生人才评价考试(临床医学工程技术-高级)历年参考题库含答案
- 2026年陕西省宝鸡市初二学业水平地理生物会考试题题库(答案+解析)
- 2025年国企安全管理竞聘笔试题库(含答案)
- 2026年医药行业碳达峰实施方案
- 2025版医疗器械生产质量管理规范对比自查自评表
- 建筑设计师室内设计行业绩效考核表
- 煤矿综掘施工工艺培训课件
评论
0/150
提交评论