实验1:生产者消费者问题

合集下载

(完整word版)操作系统实验报告.实验一 WINDOWS进程初识

(完整word版)操作系统实验报告.实验一 WINDOWS进程初识

操作系统教程实验指导书实验一WINDOWS进程初识1、实验目的(1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。

(2)掌握WINDOWS API的使用方法。

(3)编写测试程序,理解用户态运行和核心态运行。

2、实验内容和步骤(1)编写基本的Win32 Consol Application步骤1:登录进入Windows,启动VC++ 6.0。

步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。

创建一个新的控制台应用程序工程。

步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。

步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。

编译成可执行文件。

步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows “命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe运行结果 (如果运行不成功,则可能的原因是什么?) :答:运行成功,结果:(2)计算进程在核心态运行和用户态运行的时间步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。

步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。

步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。

教科版科学五年级下册第一单元《生物与环境》测试卷及参考答案【模拟题】

教科版科学五年级下册第一单元《生物与环境》测试卷及参考答案【模拟题】

教科版科学五年级下册第一单元《生物与环境》测试卷一.选择题(共10题,共34分)1.下列描述中,属于群落的是()。

A.一个池塘中的全部鱼B.一个池塘里的全部动物C.一个池塘里的全部生物2.靠腹部贴地爬行的动物是( )A.猫咪B.蛇C.金鱼D.蜻蜓3.下列关于杂食性动物的说法错误的是()。

A.只有发达的犬齿B.长着能伸缩的利爪C.既吃植物又吃动物4.下面是小明在“温度对种子发芽的影响”实验过程中的一些做法,哪些是不合理的?用“”划出来。

小明准备了两个不漏水的盆子,在盆子里垫上餐巾纸,各放两粒绿豆种子。

为了防止水分对种子发芽实验的影响,小明决定在实验过程中都不给种子洒水。

他把1号盆子放在冰箱里,2号盆子放在阳台上。

并每隔3天作一次观察记录。

一星期以后,两盆绿豆都没有发芽,小明得到了一个结论:温度对种子发芽没有影响。

请修改此实验方案。

5.常在夜间活动的动物是()。

A.猫头鹰B.老鹰C.羚羊D.老虎6.“螳螂捕蝉,黄雀在后”的食物关系为()。

A.蝉→螳螂→黄雀B.黄雀→螳螂→蝉C.树→蝉→螳螂→黄雀7.实验一:种子发芽实验实验器材:一次性水杯,纸巾、纸盒、完好具有活性的种子实验步骤:①准备好6个水杯,每个水杯都放好纸巾(中间挖两个洞)贴上标签②将若干相同数量的种子放入洞中③6个水杯中,1号杯不加水,其余的都滴上适量的水。

④3号杯加水至完全淹没种子。

⑤将5号杯放入冰箱中,用纸箱罩住6号杯,放在温暖处。

⑥将1号杯和2号杯,3号杯和4号杯,5号杯和6号杯进行对比。

实验现象:号杯中种子不发芽,种子发芽。

实验结论:种子发芽需要、和。

8.奇奇制作生态瓶时,下面做法合适的是()。

A.把生态瓶放置避光处B.植物可以供氧气,所以瓶子里的植物越多越好C.瓶子内的水用消毒过的自来水D.瓶子内的生物数量和种类要平衡9.研究光对植物生长的影响时,除光照以外,实验组和对照组的其他条件(如温度、水等)( )。

A.必须相同B.可以不同10.鱼必须在水里生活,一旦离开水,过不了多少它就会死亡。

江苏省镇江市2024年七年级生物上册第一单元《生物和生物圈》人教版基础掌握测试卷

江苏省镇江市2024年七年级生物上册第一单元《生物和生物圈》人教版基础掌握测试卷

江苏省镇江市2024年七年级生物上册第一单元《生物和生物圈》人教版基础掌握测试卷学校:_______ 班级:__________姓名:_______ 考号:__________(满分:100分时间:60分钟)总分栏题号一二三四五六七总分得分评卷人得分一、选择题:本大题共30小题,每小题2分,共60分。

在每小题给出的四个选项中,只有一项是符合题目要求的。

1.下图为生态系统中碳循环示意图,下列相关叙述正确的是()A.碳在无机环境和生物群落之间主要是以有机物的形式进行循环B.降低碳的排放,其重要措施之一是要大量减少途径⑤的碳排放量C.③表示植物的光合作用,能维持整个生态系统中的碳—氧平衡D.①表示微生物的分解作用,②、④表示动植物的呼吸作用2.下列哪项可看作是一个生态系统( )A.海洋中的所有动物、植物B.香山里的所有枫叶C.长江中的所有鱼D.整条黄河3.动植物种类繁多,在防风固沙、涵养水源、保持水土,以及净化空气、改善生态环境等方面具有不可替代作用的生态系统是( )A.森林生态系统B.草原生态系统C.淡水生态系统D.荒漠生态系统4.如图是西安浐灞国家湿地公园内部分生物构成的食物网简图。

下列叙述正确的是()A.该食物网中共有5条食物链B.鱼和浮游动物之间存在捕食和竞争关系C.若表示完整的生态系统,图中补充分解者即可D.湿地被称为“地球之肾”,是结构最复杂的生态系统5.下列能正确表示一条食物链的是()A.阳光→草→兔→狐狸B.草→兔→羊→狼C.草→昆虫→青蛙→蛇→鹰D.草←昆虫←青蛙←蛇←鹰6.下列关于生物的共同特征的叙述正确的是:( )A.生物都能进行光合作用B.生物都由细胞构成C.生物呼吸都需要吸入氧气呼出二氧化碳D.生物都能遗传和变异7.生物的生活离不开一定的环境,下列不属于生物适应环境的实例是( )A.望梅止渴B.多数草食动物奔跑速度较快C.生活在寒冷海域中的海豹,皮下脂肪很厚D.荒漠中的骆驼刺,根系非常发达8.下列不具有细胞结构的生物是()A.病毒B.计算机C.珊瑚D.珊瑚虫9.我们课本第一章中教会我们开启生物科学之门,学会观察。

操作系统实验报告1 linux初步认知和生产者消费者问题

操作系统实验报告1 linux初步认知和生产者消费者问题

hierarchy
CLONE_SIGHAND 子进程与父进程共享相同的信号处理(signal handler)表
CLONE_PTRACE 若父进程被 trace,子进程也被 trace
CLONE_VFORK 父进程被挂起,直至子进程释放虚拟内存资源
CLONE_VM
子进程与父进程运行于相同的内存空间
CLONE_PID
#define inc(k) if(k < BUFFER_SIZE) k = k+1;else k=0//实现对缓冲区操作的
自增函数
并定义了如下实现问题的函数模块:
int insert_item(buffer_item item)
//将生产的产品放入缓冲区
int remove_item(buffer_item *item) //从缓冲区内移走一个产品
子进程在创建时 PID 与父进程一致
CLONE_THREAD 子进程与父进程共享相同的线程群
具体的实例如下图所示:
<4>生产者消费者问题的实现: 信号量 mutex 提供对缓冲池访问的互斥要求并初始化为 1,信号量 empty 和 full 分别用
来表示空缓冲项和满缓冲项的个数,信号量 empty 初始化为 n,信号量 full 初始化为 0。
进程是父进程的复制品且子进程装入另一个新程序;在第四章的结尾介绍了 clone()创建 线程的功能,linux 并不区分进程还是线程,clone()被调用时,它被传递一组标记以决定 父任务与子任务之间发生多少共享任务的数据结构,继而又从网上了解了其他的一些方 面区别,并进行了实验 <4>有限缓冲问题是一个经典的同步问题,可以通过信号量来实现进程同步。其中信号量 mutex 提供对缓冲池访问的互斥要求并初始化为 1,信号量 empty 和 full 分别用来表示空缓 冲项和满缓冲项的个数,信号量 empty 初始化为 n,信号量 full 初始化为 0

PV操作解决生产者——消费者问题

PV操作解决生产者——消费者问题

合肥学院计算机科学与技术系课程设计报告2009 ~2010 学年第1 学期课程名称操作系统原理课程设计名称PV操作解决生产者——消费者问题专业班级07级计科1班学生姓名马峻、宣磊、施红陵、王锐学生学号0704011015/25/30/41指导教师屠菁2009 年12 月1、实验目的进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。

我们把若干个进程都能进行访问和修改的那些变量称为公共变量。

由于进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。

为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。

一般说,同步机构是由若干条原语——同步原语——所组成。

本实习要求模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。

2、实验内容模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。

3、实验步骤(1)任务分析本实验要求利用PV操作实现解决生产者——消费者问题中的同步问题。

此问题描述的是一群生产者进程在生产产品并将这些产品提供给消费者进程去消费,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将它所生产的产品放入一个缓冲区,消费者进程可从缓冲区中取走产品去消费,但它们之间必须保持同步,即不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满且尚未取出的缓冲区中投放产品,并且生产者消费者互斥使用缓冲区。

本程序实现的功能是可以利用生产者进程进行生产,同时消费者进程也能进行消费,但是必须满足同步的条件才可以允许,否则将提示缓冲区满无法进行生产或者缓冲区空无法进行消费的错误,故程序应该具有判断的功能。

若结束当前的生产者——消费者进程,将会提示此次进程中生产消费者分别生产了和消费的产品数目,并统计缓冲区中剩余的产品数目,最后才结束。

1-4章习题讲解、练习题、内存实验(操作系统)

1-4章习题讲解、练习题、内存实验(操作系统)
解答:没有。都要经过中间状态: 1.等待状态的进程获得所需的资源后,必须 转入就绪状态,直到获得CPU后才能运行。 2.进程在运行过程中才会请求资源,才有可 能因请求不到资源而转入等待状态。
一个状态转换的发生,是否一定导致另一 个转换发生,列出所有的可能。
解答:不一定。可能的情况如下: 1.就绪执行 导致 执行就绪 2.执行阻塞 导致 就绪执行(就绪队列不空) 3.执行就绪 导致 就绪执行(就绪队列不空) 4.阻塞就绪 可能导致 就绪执行 (在抢占方式下,该进程优先级高于当前进程和 就绪队列中的所有进程) 作业问题:认为阻塞就绪一定导致就绪执行。
31.(c)(e)会发生死锁。
34.(a)不是死锁状态,(b)是死锁状 态。
P1
R1 P1
R2
14.在一个请求分页系统中,采用LRU页面置换算法,假如 一个页面的页面走向为4、3、2、1、4、3、5、4、3、2 、1、5,当分配给作业的物理块数为3和4时,试计算在访 问过程中所发生的缺页次数和缺页率,并比较所得结果
选择题
1、在计算机系统中配置操作系统的主要目的是(A),操作系 统的主要功能是管理计算机系统中的(B),其中包括(C)管 理和(D)管理,以及设备管理和文件管理。这里的(C)管理 主要是对进程进行管理。 A:(1)增强计算机系统的功能;(2)提高系统资源的利用 率;(3)提高系统的运行速度;(4)合理地组织系统的工作 流程,以提高系统吞吐量。 B:(1)程序和数据;(2)进程;(3)资源;(4)作业 ;(5)任务。 C、D:(1)存储器;(2)虚拟存储器;(3)运算器; (4)处理机;(5)控制器。
8、对于记录型信号量,在执行一次P操作时,信号量的值应 当 A ;当其值为 B 时,进程应阻塞。在执行V操作时 ,信号量的值应当 C ;当其值为 D 时,应唤醒阻塞队 列中的进程。 A,C:(1)不变; (2)加1; (3)减1; (4)加指定数值; (5)减指定数值。 B,D:(1)大于0; (2)小于0; (3)大于等于 0; (4)小于等于0。

八年级生物 第二三章节试题(含答案) 新人教版

八年级生物第二三章节试题一、选择题:1.一块骨、一块肌肉均属于:B.一个器官C.一种组织D.一个系统2.骨在运动中起:3.在运动过程中起动力作用的是:4.下列叙述中正确的是:A.肌腱由肌肉组织构成,红色,有收缩能力B.肌腹由结缔组织构成,红色,没有收缩能力C. 肌腹由肌肉组织构成,白色,有收缩能力D.肌腱由结缔组织构成,白色,没有收缩能力5.某男子右手经常麻木,不能抓握,一段时间后手部骨骼肌瘫痪,并出现萎缩现象,这可能是由于:A.缺乏体育锻炼B.深入肌肉的血管中断C.控制该肌肉的神经手损D.肌细胞生活的内环境受损6.下列关于肌肉的叙述,不正确的是:A.两端的肌腱分别固着在同一骨的两端B.两端的肌腱分别固着在不同的两块骨上C.每块骨骼肌必定跨过一个或两个以上的关节D.任何一块活得肌肉受到刺激后都能收缩7.“孔雀开屏”“蜻蜓点水”属于动物的:A.防御行为B.繁殖行为C.攻击行为D.节律行为先天性行为的一项是:A.动物体内分解有机物B.大雁南飞C.狼捕兔,兔逃跑D.鸟鸣叫9.下列动物中学习能力较强的是:A.蚯蚓B.蜗牛C.草履虫D.大山雀10.在菜青虫的取食行为研究中,要从卵进行隔离饲养,是为了:A.排除后天学习因素影响B.证明是后天学习形成的C.卵比较好取食D.卵有传染性11.在一个白蚁群体中,个体数量最多的是:A.蚁后B.雄蚁C.兵蚁D.工蚁集群生活的是:A.狼B.虎C.蜜蜂D.羚羊13.下列关于狒狒社群生活的叙述错误的是:A.群体内形成“等级制度”B.首领是攻击能力最强的雄狒狒C.首领优先享有食物和占有配偶D.遇到敌害时把首领保护起来14.研究黑猩猩的群体行为并取得突出成就的英国科学家是:A.戴安·福塞B.珍妮·古多尔C.卡尔·洪·佛烈希D.罗伯特·胡克15.下列气味中在个体间起通讯的是:B.狗走路时,隔不远撒尿留下的气味16.对群体生活的动物来说,没有通讯就会出现一些状况,下列状况不会发生的是:B.觅食与御敌较困难C.不同性别个体交配繁殖受到影响D.生活困难,立即死亡17.生态平衡是指在生态系统中:A.动物与植物之间的永久平衡B.生物之间数量上的动态平衡C.动物与植物数量上的相等D.各种生物数量上的固定不变18.在一个农田生态系统中,生活着田鼠、蛇等野生动物,若人们大肆地捕杀蛇,不会出现的现象是:A.田鼠的数量先增加后减少B.田鼠的数量会马上减少C.庄稼会减产D.蛇的数量会减少19.下列关于生态系统中物质循环的说法不正确的是:A.动物对生态系统中物质循环起促进作用B.光合作用和呼吸作用在物质循环中起促进作用C.生产者、分解者也参与物质循环D.物质循环只在同种生物之间进行20.下列叙述不是动物在自然界中的作用是:A.帮助植物传粉、传播种子B.维持生态平衡C.生物圈中有机物的制造者D.促进生态系统的物质循环21.苍耳果实的表面有许多钩刺,下面说法正确的是:A.可以钩挂在动物的毛皮上,有利于它的繁殖和分布B.是一种自我保护,防止动物取食,有利于生存C.是一种特殊的表现而已,没有实际作用D.吸引其他动物来帮助它繁殖,扩大分布X围22.下列动物的活动,除哪项外,其他在一定程度上都具有改良土壤的作用:A.蚂蚁B.蚯蚓C.蝗虫D.蜣螂23.生物防治的方法不包括:A.以虫治虫B.以药治虫C.以鸟治虫D.以菌治虫“乳房生物反应器”生产药物的优点的叙述中,不正确的是:A.可以节省建设厂房和购买仪器设备的大量费用B.可以减少工业化生产造成的环境污染C.药物更接近人类自身的蛋白质,而且一般不会对生物造成危害D.乳汁中的药物种类多,各类药物均可产生“鸟巢建筑”,下列有关“鸟巢建筑”的说法中,正确的是:A.“鸟巢建筑”是一种生物反应器B.“鸟巢建筑”利用了仿生学原理C.“鸟巢建筑”美观但不够耐用D.“鸟巢建筑”虽美观但费工费料二、填空题:1.动物所进行的一系列有利于它们存活和繁殖后代的活动,都是。

萨缪尔森微观经济学第十九版详细课后答案及题库

萨缪尔森微观经济学第十九版题库及课后习题详解内容简介本资料是萨缪尔森《微观经济学》教材的配套题库,主要包括以下内容:第一部分为名校考研真题。

包括中国人民大学802经济学综合、中央财经大学803经济学综合、浙江大学801经济学综合(西方经济学部分)的考研真题,并对每一道考研真题进行了详细的解答。

所选历年考研真题具有一定的代表性,既能帮助学员们打下扎实的基础,也可以为学员们理解重难点题型,免费在线阅读。

第二部分为课后习题及详解。

对萨缪尔森《微观经济学》第19版教材每章的课后习题进行了详细的分析和解答,并对个别知识点进行了扩展。

课后习题答案多次修改,质量上乘,特别适合应试作答和临考冲刺。

第三部分为章节题库及详解。

严格按照萨缪尔森《微观经济学》第19版教材内容进行编写,共分18章。

每一章都精心挑选经典常见考题,并予以详细解答。

熟练掌握本书考题的解答,有助于学员理解和掌握有关概念、原理,并提高解题能力。

第四部分为模拟试题及详解。

参照萨缪尔森《微观经济学》教材,根据各高校历年考研真题的命题规律及热门考点精心编写了两套考前模拟试题,并提供详尽的解答。

目录第一部分名校考研真题1.中国人民大学802经济学综合2014年中国人民大学802经济学综合考研真题及详解2013年中国人民大学802经济学综合考研真题及详解2012年中国人民大学802经济学综合考研真题及详解2011年中国人民大学802经济学综合考研真题及详解2.中央财经大学803经济学综合2014年中央财经大学803经济学综合考研真题及详解2013年中央财经大学803经济学综合考研真题及详解2012年中央财经大学803经济学综合考研真题及详解2011年中央财经大学803经济学综合考研真题及详解2013年浙江大学801经济学综合(西方经济学部分)考研真题及详解2012年浙江大学801经济学综合(西方经济学部分)考研真题及详解第二部分课后习题第一编基本概念第1章经济学核心概念第1章附录—如何读图第2章现代混合经济第3章供给和需求的基本原理第二编微观经济学:供给、需求和产品市场第4章供给和需求:弹性及其应用第5章需求和消费者行为第5章附录—消费均衡的几何分析第6章生产和企业组织第7章成本分析第7章附录—生产、成本理论和企业决策第8章完全竞争市场分析第9章不完全竞争和垄断第10章寡头和垄断竞争第11章不确定性经济学第三编要素市场:劳动、土地和资本第12章市场如何决定收入第13章劳动市场第14章土地、自然资源和环境第15章资本、利息和利润第四编应用微观经济学第16章政府税收和支出第17章效率与公平:重大权衡第18章国际贸易第三部分章节题库第一编基本概念第1章经济学核心概念第2章现代混合经济第3章供给和需求的基本原理第二编微观经济学:供给、需求和产品市场第4章供给和需求:弹性及其应用第5章需求和消费者行为第6章生产和企业组织第7章成本分析第8章完全竞争市场分析第9章不完全竞争和垄断第10章寡头和垄断竞争第11章不确定性经济学第三编要素市场:劳动、土地和资本第12章市场如何决定收入第13章劳动市场第14章土地、自然资源和环境第15章资本、利息和利润第四编应用微观经济学第16章政府税收和支出第17章效率与公平:重大权衡第18章国际贸易第四部分模拟试题萨缪尔森《微观经济学》(第19版)模拟试题及详解(一)萨缪尔森《微观经济学》(第19版)模拟试题及详解(二)第一部分名校考研真题可上知择学习网免费在线阅读第二部分课后习题详解第一编基本概念第一章经济学核心概念一、概念题1. 稀缺和效率(scarcity and efficiency)答:(1) 稀缺是指在给定的时间内,相对于人的需要而言,经济资源的供给总是不足的人类消费各种物品的欲望是无限的,而用来满足人类欲望的经济物品却是有限的。

教科版科学五年级下册第一单元《生物与环境》测试卷及参考答案(模拟题)

教科版科学五年级下册第一单元《生物与环境》测试卷一.选择题(共10题,共36分)1.对于种子发芽的说法,正确的是()。

A.种子只有在土壤里才能发芽B.种子发芽必须要有空气C.在任何温度下种子都能发芽D.种子的发芽一定需要阳光2.如图是小明在研究“种子发芽的条件”中的实验计划。

实验计划问题:种子发芽必须要有阳光吗?推测:种子发芽必须要有阳光。

相同条件:水分,空气,数量和大小相同的两组绿豆种子等不同条件:……实验方法:一组种子放在阳光充足的地方,一组种子放在黑暗的地方。

(1)实验计划中,不同的条件是________。

A.阳光B.空气C.水(2)为提高实验的准确性,每组种子不能少于_________。

A.1粒B.3粒C.50粒(3)如果本次实验成功,小明可以发现_________。

A.种子发芽需要水分B.种子发芽需要阳光C.种子发芽不需要阳光(4)小明又做了其他实验,总结出种子发芽需要适宜的_________。

A.水分和空气B.水分、空气、温度C.水分和阳光3.种子萌发必须具备的条件是( )。

A.光照、温度、水、空气、土壤B.光照、温度、水、空气C.适宜的温度、水、空气4.( )被称为“沙漠之舟”。

A.华北赤狐B.骆驼C.鸵鸟D.金鱼5.小科同学进行“种子发芽实验”的研究。

请根据下表请完成答蚊小题:1.如果要研究种子发芽是否需要阳光,应该选择()A.甲组和乙组B.甲组和丙组C.乙组和丙组2.根据实验结果,我们发现这种种子发芽是否需要阳光()A.需要B.不需要C.不知道3.在种子发芽实验过程中,首先钻出种皮的是()A.胚根B.胚芽C.子叶4.甲组实验结果如右图所示,可以推测:最有可能的是()A.在①这边浇水B.在②这边浇水C.在培养皿中均匀浇水5.我还知道,如果把种子完全浸泡在水中,也不容易发芽,其原因是缺少()A.阳光B.土壤C.空气6.生产者与消费者之间的关系主要是()。

A.互惠互利的关系B.吃与被吃的关系C.相互竞争的关系7.如图所示,把生态瓶中的水减少很多,瓶中动物最有可能会( )A.经常浮到水面B.钻到水底不动C.没有变化8.( )会把卵生在其他鸟巢中,靠其他鸟来孵化喂养。

操作系统PV操作实验报告

操作系统PV操作实验报告计算机科学与工程系《计算机操作系统》实验报告实验名称:_ PV操作成绩:___________专业班级:姓名:学号:实验日期 : 2012 年 03月19日软件环境:Windows XP~开发工具:vc++6.0硬件环境:CPU: interl 硬盘: 150 G 内存: 512 M 一、实验目的了解并掌握进程的同步和互斥二、实验内容选用C语言编写程序,利用P,V操作解决单生产者和单消费者问题。

三、实验要求1.分别改造P操作和V操作及生产、消费程序;2.在main()中利用循环通过相关的控制量,分别激活生产者和消费者;、3.为了简单起见,生产者和消费者只对单缓区进行操作,如:生产者将数字“1”填入缓冲区,而消费者将数值“0”填入缓冲区。

三、实验主要界面、程序及相关说明 1.主要程序代码Var mutex,empty,full: semaphore:=1,n,0;buffer:array[0,…,n-1] of item;in,out: integer:=0,0;beginparbeginproceducer: begin repeatproducer an item nextp;wait(empty);wait(mutex);buffer(in):=nextp;in:=(in+1) mod n;signal(mutex);signal(full);until false;endconsumer: beginrepeatwait(full);wait(mutex);nextc:=buffer(out); out:=(out+1) mod n; signal(mutex);signal(empty);consumer the item in nextc;until false;endparendend2.运行主界面如图三—2所示图三—23.相关说明假定在生产者和消费者之间的公用缓冲池中,具有n个缓冲区,这时可利用互斥信号量mutex实现诸进程对缓冲池的互斥使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建农林大学金山学院实验报告
系(教研室):专业:计算机科学与技术年级:
实验课程:生产者与消费者实验姓名:学号:
实验室号:1#608
计算机号:实验时间:指导教师签字:成绩:
实验1:生产者消费者问题
一、实验目的
生产者消费者问题是操作系统中经典的同步和互斥问题。

通过实验,要求学生掌握两者之间的同步信号量和互斥信号量的使用,更深刻了解临界资源、同步和互斥的概念。

二、实验要求
1.一组生产者通过一个具有N个缓冲区的缓冲池循环不断地向一组消费者提供产
品。

2.建一个队列, 队列的长度由n记录, 定义两个指针, 分别指向队列的头和尾消
费者从头指针读取数据,每读取一个数据把n--,生产者把数据写入尾指针,
每写入一个数据就n++,当n=N的时候生产者暂停写入数据。

3.注意:缓冲池队列,用互斥锁保护。

三、实验内容和原理
1.分别画出生产者和消费者的流程图
2.针对生产者和消费者问题,可以分为哪几种情况,使用了哪些原语?分别代表
什么意思?过程如何?阐述哪些进程之间存在同步,哪些进程之间存在互斥。

3.缓冲区是否为临界资源?是否可以循环使用?通过什么来实现?举例说明(可
画图)
四、实验环境
1. 硬件:PC机;
2. 软件:Windows操作系统、。

五、算法描述及实验步骤
#include <>
#include <iostream>
const unsigned short SIZE_OF_BUFFER = 10;
unsigned short ProductID = 0;
unsigned short ConsumeID = 0;
unsigned short in = 0;
unsigned short out = 0;
int g_buffer[SIZE_OF_BUFFER];
bool g_continue = true;
HANDLE g_hMutex;
HANDLE g_hFullSemaphore;
HANDLE g_hEmptySemaphore;
DWORD WINAPI Producer(LPVOID);
DWORD WINAPI Consumer(LPVOID);
int main()
{ g_hMutex = CreateMutex(NULL,FALSE,NULL);
g_hFullSemaphore = CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF_BUFFER-1,NULL);
g_hEmptySemaphore = CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL);
const unsigned short PRODUCERS_COUNT = 3;
const unsigned short CONSUMERS_COUNT = 1;
const unsigned short THREADS_COUNT = PRODUCERS_COUNT+CONSUMERS_COUNT;
HANDLE hThreads[PRODUCERS_COUNT];
DWORD producerID[CONSUMERS_COUNT];
DWORD consumerID[THREADS_COUNT];
for (int i=0;i<PRODUCERS_COUNT;++i){
hThreads[i]=CreateThread(NULL,0,Producer,NULL,0,&producerID[i]);
if (hThreads[i]==NULL) return -1;
}
for ( i=0;i<CONSUMERS_COUNT;++i){
hThreads[PRODUCERS_COUNT+i]=CreateThread(NULL,0,Consumer,NULL,0,&consumerID[i] );
if (hThreads[i]==NULL) return -1;
}
while(g_continue){
if(getchar()){ . ";
std::cerr << "Succeed" << std::endl;
}
void Append()
{ std::cerr << "Appending a product ... ";
g_buffer[in] = ProductID;
in = (in+1)%SIZE_OF_BUFFER;
std::cerr << "Succeed" << std::endl;
for (int i=0;i<SIZE_OF_BUFFER;++i){
std::cout << i <<": " << g_buffer[i];
if (i==in) std::cout << " <-- 生产";
if (i==out) std::cout << " <-- 消费";
std::cout << std::endl;
}
}
void Take()
{ std::cerr << "Taking a product ... ";
ConsumeID = g_buffer[out];
out = (out+1)%SIZE_OF_BUFFER;
std::cerr << "Succeed" << std::endl;
for (int i=0;i<SIZE_OF_BUFFER;++i){
std::cout << i <<": " << g_buffer[i];
if (i==in) std::cout << " <-- 生产";
if (i==out) std::cout << " <-- 消费";
std::cout << std::endl; }
}
void Consume()
{ std::cerr << "Consuming " << ConsumeID << " ... "; std::cerr << "Succeed" << std::endl;
}
DWORD WINAPI Producer(LPVOID lpPara)
{ while(g_continue){
WaitForSingleObject(g_hFullSemaphore,INFINITE); WaitForSingleObject(g_hMutex,INFINITE);
Produce();
Append();
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hEmptySemaphore,1,NULL);
}
return 0;
}
DWORD WINAPI Consumer(LPVOID lpPara)
{ while(g_continue){
WaitForSingleObject(g_hEmptySemaphore,INFINITE);
WaitForSingleObject(g_hMutex,INFINITE);
Take();
Consume();
Sleep(1500);
ReleaseMutex(g_hMutex);
ReleaseSemaphore(g_hFullSemaphore,1,NULL);
}
return 0;
}
六、调试过程
程序有错误:
在94 和108行分别少了两个封号。

经改正后无错误如图所示:
七、实验结果
七、总结
通过这次试验我了解了生产者消费者问题是操作系统中经典的同步和互斥问题。

基本上掌握了两者之间的同步信号量和互斥信号量的使用,更深刻了解临界资源、同步和互斥的概念。

并且在错误的调试中对知识有了更深的掌握。

附录:。

相关文档
最新文档