




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验三相关说明实验三相关说明说明:(1)实验相关ppt内容选自操作系统课程设计的核心实验,本实验为互斥同步实验,通过学生模拟线程对资源的竞争进一步加强对同步与互斥的理解。(2)在该实验中,学生初次接触操作系统函数库,导致学生在实现原理时候无从下手,建议从一个具体实例来进行讲解。实验三:实验三:互斥与同步互斥与同步实验实验提纲提纲提纲提纲实验目的实验目的n理解原子操作、同步、互斥、信号量、临界区等理解原子操作、同步、互斥、信号量、临界区等基本概念。基本概念。n掌握进程同步与互斥原理。掌握进程同步与互斥原理。n掌握经典同步算法模型:生产者与消费者模型、掌握经典同步算法模型:生产者与消费者模型、读写
2、者模型、哲学家就餐模型等。读写者模型、哲学家就餐模型等。提纲提纲实验实验内容内容n一、一、实验说明实验说明 (1)API介绍介绍 (2)测试数据介绍)测试数据介绍 (3)生产者和消费者模型)生产者和消费者模型 (4)读写者模型)读写者模型 n二、二、实验内容实验内容 (1)生产者消费者模型实验)生产者消费者模型实验 (2)读写者模型实验)读写者模型实验 (3)哲学家就餐模型实验)哲学家就餐模型实验一、一、实验说明实验说明API介绍(介绍(1)(1)等待指定的一个或全部的对象等待指定的一个或全部的对象(*lpHandles)完完成作业,或等待超过指定的时间成作业,或等待超过指定的时间。DWORD
3、 WaitForMultipleObjects( DWORD nCount, / 句柄的数量句柄的数量 CONST HANDLE *lpHandles, / 指向句柄数组的指针指向句柄数组的指针 BOOL fWaitAll, / 等待标志位等待标志位 DWORD dwMilliseconds / 超时间隔(以毫秒为单位)超时间隔(以毫秒为单位) ); API介绍(介绍(2)(2)创建一个信号量创建一个信号量。HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, / 指定一个指定一个LPSECURITY_ATTR
4、IBUTES结构,该结构通常指定安全属性结构,该结构通常指定安全属性 LONG lInitialCount, / 设置信号量的初始计数设置信号量的初始计数 LONG lMaximumCount, / 信号量的最大计数信号量的最大计数 LPCTSTR lpName / 指定信号量对象的名称指定信号量对象的名称); API介绍(介绍(3)(3) 关闭指定句柄的对象关闭指定句柄的对象。BOOL WINAPI CloseHandle( HANDLE hObject / 要关闭的对象的句柄要关闭的对象的句柄);API介绍(介绍(4)(4) 增加信号量增加信号量(hSemaphore)的值,类似于的值,类
5、似于PV操作中操作中的的V。BOOL ReleaseSemaphore( HANDLE hSemaphore, / 要操作的信号量对象的要操作的信号量对象的句柄句柄 LONG lReleaseCount, / 以当前为基础,信号量对以当前为基础,信号量对象要增加的的值象要增加的的值 LPLONG lpPreviousCount /信号量变化前值的指针信号量变化前值的指针);API介绍(介绍(5)(5)创建一个线程,指定以创建一个线程,指定以C运行库的形式运行,而运行库的形式运行,而CreateThread()以以Win32调用方式创建线程。调用方式创建线程。uintptr_t _beginth
6、readex( void *security, / 指向一个指向一个SECURITY_ATTRIBUTES结构,用来标识其返回的句柄能结构,用来标识其返回的句柄能否被其子线程继承否被其子线程继承 unsigned stack_size, / 新线程的栈的大小新线程的栈的大小 unsigned ( *start_address )( void * ), / 新线程的新线程的起始地址起始地址 void *arglist, / 向新线程传递的参数列表向新线程传递的参数列表 unsigned initflag, / 新线程的初始状态新线程的初始状态 unsigned *thrdaddr / 指向一个指
7、向一个32位的变量,改变量位的变量,改变量用来保存线程标识符用来保存线程标识符);测试数据测试数据生产者与消费者模型:本实验将使用以下四类不同的数据集合,生产者与消费者模型:本实验将使用以下四类不同的数据集合,来表示四个生产者生产的元素。来表示四个生产者生产的元素。第一类数据:大写字母:第一类数据:大写字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z。对应实验源码中的对应实验源码中的source0.txt第二类数据:数字:第二类数据:数字:0 1 2 3 4 5 6 7 8 9。对应实验源码中的对应实验源码中的source1.txt第
8、三类数据:汉语拼音字母:第三类数据:汉语拼音字母:b p m f d t n l g k h j q z zh ch sh r z c s y w ao ei u v ai ei ui ao ou iu ie ve er an en in un对应实验源码中的对应实验源码中的source2.txt第四类数据:符号:第四类数据:符号: ! # $ % & * ( ) _ + - =,对应实验源码中的对应实验源码中的source3.txt生产者和消费者模型生产者和消费者模型 主进程中创建主进程中创建n个线程来模拟生产者和消费者。个线程来模拟生产者和消费者。生产者生产产品,消费者只消费指定生产者的产
9、品,生产者生产产品,消费者只消费指定生产者的产品,连接生产者与消费者的部分是缓冲池,生产者将生产连接生产者与消费者的部分是缓冲池,生产者将生产出来的产品放在缓冲池中供消费者消费,消费者消费出来的产品放在缓冲池中供消费者消费,消费者消费产品并释放缓冲区。产品并释放缓冲区。 如果缓冲区满,则生产者无法继续放入产品,如果缓冲区满,则生产者无法继续放入产品,而要等待消费者消费。如果缓冲区空,则消费者无法而要等待消费者消费。如果缓冲区空,则消费者无法继续消费,需要等待生产者生产产品。同时,生产者继续消费,需要等待生产者生产产品。同时,生产者之间也是相互互斥的,而消费这只有在针对同意产品之间也是相互互斥的
10、,而消费这只有在针对同意产品消费的时候才需要互斥。消费的时候才需要互斥。 读写者模型读写者模型 主进程创建多个读写线程分别对临界区进行主进程创建多个读写线程分别对临界区进行读写访问,读写者之间遵从以下原则:读写访问,读写者之间遵从以下原则:1)读读不互斥:也就是说临界区可以多个读者同时)读读不互斥:也就是说临界区可以多个读者同时访问访问2)读写互斥:读者和写者不可以同时访问临界区)读写互斥:读者和写者不可以同时访问临界区3)写写互斥:写者和写者不可以同时访问临界区)写写互斥:写者和写者不可以同时访问临界区4)避免读者或写者饿死:没有因为读者或者写者一)避免读者或写者饿死:没有因为读者或者写者一
11、直占用临界区而对方得不到资源而被饿死的情况出现。直占用临界区而对方得不到资源而被饿死的情况出现。 二二、实验内容实验内容实验内容(实验内容(1)n实验一实验一 生产者消费者模型实验生产者消费者模型实验1在在windows下,使用下,使用vs创建工程创建工程CPProject;2将生产者消费者实验的源码添加到该工程中,包括:将生产者消费者实验的源码添加到该工程中,包括:RunableThread.h,Buffer.h, Consumer.h,Producer.h,Driver.cpp;并将相关数据(;并将相关数据(consumeri.txt和和sourcei.txt)文件放在项目的根目录下。)文
12、件放在项目的根目录下。3阅读代码,完成实验报告中的相关内容。阅读代码,完成实验报告中的相关内容。4执行代码,观察程序的运行结果,完成实验报告的相关执行代码,观察程序的运行结果,完成实验报告的相关内容。内容。实验内容(实验内容(2)n实验二实验二 读写者模型实验读写者模型实验1在在windows下,使用下,使用vs创建工程创建工程RWProject;2讲读写者模型源码添加到该工程中,包括:讲读写者模型源码添加到该工程中,包括:RunableThread.h,Reader.h,Writer.h,RwLock.h,Driver.cpp五个文件五个文件3其中,其中,RwLock.h文件中的函数:文件中
13、的函数:ReadUnlock函数和函数和WriteUnlock函数没有写完,请阅读其他源码,将这两个函函数没有写完,请阅读其他源码,将这两个函数的内容补齐,并完成相关实验报告数的内容补齐,并完成相关实验报告4执行代码,观察程序的运行结果,完成实验报告的相关执行代码,观察程序的运行结果,完成实验报告的相关内容。内容。实验内容(实验内容(3)n实验三实验三 哲学家就餐模型实验哲学家就餐模型实验(小组任务小组任务) 仿照所给两个经典进程同步代码,实现哲学家就餐仿照所给两个经典进程同步代码,实现哲学家就餐问题。问题。提纲提纲生产者生产者-消费者消费者算法算法n生产者生产者P:Wait(empty);W
14、ait(mutex);Buffer(in)=nextp;in:=(in+1) mod n;Signal(mutex);Signal(full);n消费者消费者C:Wait(full);Wait(mutex);netxc=buffer(out);out:=(out+1) mod n;Signal(mutex);Signal(empty);mutex,full,empty:semaphoremutex :=1;full:=0;empty:=n;读者读者-写者写者算法算法(读者优先读者优先)n读者读者R: Wait(rmutex); rcount+; if(rcount = 1) Wait(wmutex); Signal(rmutex); Read_Action(); Wait(rmutex); rcount-; if(rcount = 0) Signal(wmutex); Signal(rmutex);n写者写者W: Wait(wmutex); Write_Action(); Signal(wmutex);rmutex,wmutex:semaphorermutex :=1;wmutex :=1;rcount:intrcount:=0;哲学家进餐哲学家进餐算法算法n 哲
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030防晒化妆品市场需求变化与品牌定位策略咨询报告
- 2025-2030钙钛矿光伏组件量产工艺突破与设备投资机会研判报告
- 2025-2030钙钛矿光伏组件稳定性提升方案评估
- 2025-2030钙钛矿光伏组件户外稳定性提升技术路线对比
- 2025-2030钙钛矿光伏组件产业化进程与光伏发电成本下降空间评估报告
- 2025-2030辅助生殖技术下沉市场渗透率与渠道建设难点分析
- 2025-2030费托蜡行业数字化转型与智能制造实施路径报告
- 2025-2030费托蜡行业原材料价格联动机制与采购策略
- 2025-2030费托蜡生产废水处理技术迭代与可持续发展报告
- 2025-2030费托蜡企业ESG实践评价与可持续发展战略
- 护理文书书写规范 (15)课件
- 二十四节气农事活动
- 食物中毒的心理援助与危机干预
- 2022星闪无线短距通信技术(SparkLink 1.0)安全白皮书网络安全
- 卫生公共基础知识考试大纲
- 小学数学六年级上册第五单元课件
- 《电子凭证会计数据标准-全面数字化的电子发票(试行版)》指南
- 湖南土建中级职称考试复习总结
- 混合痔痔的护理查房
- 大学物理实验长测量
- 材料科学基础复习题及答案
评论
0/150
提交评论