(完整word版)读者写者问题实验报告

(完整word版)读者写者问题实验报告
(完整word版)读者写者问题实验报告

《操作系统》实验报告

实验序号:操作系统实验(二) 实验项目名称:读者写者问题

java实现读者写者问题(写着优先)

实验一实验报告 学号:20092128 姓名:徐卓远 实验序号:1 实验名称:用信号量来实现读者-写者问题 实验目的:理解进程同步与互斥的概念,掌握用信号量来实现进程的同步与互斥。 实验设计及实现: 为了实现读者和写者的读写过程,将每个读者和每个写者作为了一个单独的线程,所以设置了两个类,一个是读者类Reader,一个是写者类Writer.以读者类为例: 一个读者的动作过程为由睡眠->等待->开始读->结束读->睡眠的一个循环过程,而一个写者的动作过程也为此. 读者调用方法napping()进行等待,调用startRead()方法开始读,最后在调用endReading()方法结束读入,释放运行空间.写者同读者. 但是为了实现读者写者之间的写-写互斥,读-写互斥,读-读允许,需要另外一个类Database,类中分别用关于读者的方法和写者的方法来控制读写之间的这种关系. 首先要实现睡眠的方法napping(),读者和写者在睡眠过程都应该是一样的,只是他们睡眠的时间不同,所以只需写出一个方法: public static void napping() {

int sleepTime = (int) (NAP_TIME * Math.random()); try { Thread.sleep(sleepTime * 1000); } catch (Exception e) { e.printStackTrace(); } } 在方法中,控制线程休眠随机的时间,由于每个读者或写者都是一个线程,而每个读者或写者他们工作休眠的时间都不一定相同,他们请求工作的时间也不一定相同,所以取了随机时间其次设置了读者的两个方法,开始读和结束读,由于这只是个模拟读写问题,所以只需要知道结果就行,就不用显示出他是怎么读的. 在开始读中,当有写者在写时,读者需要等待wait(),在没有人在工作时,如果有写者和读者同时请求,那么就让写者先进,这是写者优先.所以这就归纳于一种情况, 当读者布尔变量dbReading为FALSE时,如果有需要工作的写者,那么读者就等待. 当读者请求读入后,计数有多少读者需要工作的变量readerCount +1,如果这是第一个进入工作的读者就需要将显示是否有读者在工作的读者布尔变量变为TRUE. public synchronized int startRead() { if (dbReading == false) {

WORD实验报告

word基本操作实验报告 一、实验目的与要求 1.掌握word的基本操作; 2.掌握字符格式、段落格式和页面格式等排版技术; 3.掌握图文混排、表格处理和邮件合并技术; 4.熟悉个人名片或毕业论文的设计与制作; 5.学会自己提出问题,并得出解决问题的方法。 二、实验内容与方法 1.word的基本操作,通过上机摸索,并查阅书籍网络了解。 2.word的字符格式,段落格式和页面格式等排版技术,通过上机摸索,并查阅书籍网络了解。 3.word的图文混排、表格处理和邮件合并技术,通过上机摸索,并查阅书籍网络了解。 4. 通过word进行个人名片或毕业论文的设计与制作,通过上机摸索,并查阅书籍网络了解。 三、实验步骤与过程 1.word的基本操作:①启动word软件 (1) 启动“开始”菜单中的microsoft word程序 (2) 双击资源管理器或“我的电脑”中的c:\program files\microsoft office\office11\winword.exe程序 (3) 双击word 文档文件(*.doc) (4) 双击桌面上的word图标 (5)开始-运行-输入“winword”②认识word2003窗口(1)标题栏位于屏幕最顶端的是标题栏,由控制菜单图标、文件名、最小化按钮、最大化(还原)按钮、关闭按钮组成。(2)菜单栏 菜单栏位于标题栏下面。使用菜单栏可以执行word的许多命令。菜单栏共有九个菜单:文件、编辑、视图、插入、格式、工具、表格、窗口、帮助。当鼠标指针移到菜单标题上时,菜单标题就会凸起,单击后弹出下拉菜单。在下拉菜单中移动鼠标指针时,被选中的菜单项就会高亮显示,再单击,就会执行该菜单所代表的命令。如“文件”—“打开”,就会弹出“打开”文件对话框。(3)工具栏 标题栏下面的是工具栏,使用它们可以很方便地进行工作。通常情况下,word会显示【常用】和【格式】两个工具栏。 “常用”工具栏:新建、打开、复制、粘贴、打印、撤消、恢复等“格式”工具栏:字体、字号、下划线、边框、对齐方式等 如果想了解工具栏上按钮的简单功能,只需将鼠标指针移到该按钮上,过一会儿旁边会出现一个小框,显示出按钮的名称或功能。 word窗口中可以有许多工具栏,可以根据需要在“视图”—“工具栏”中增加或减少工具栏。每一个工 具栏都可以用鼠标拖动到屏幕的任意位置,所以又称为浮动工具栏。工具栏内图标按钮体现了“菜单栏”中的一些主要功能。我们可以利用这些按钮进行相应操作。如我要打开一个文件,除了可以使用菜单栏外,还可以使用工具栏上的按钮。 (4)编辑窗口 再往下的空白区域就是word的编辑窗口,输入的文字就显示在这里。文档中闪烁的竖线称为光标,代表文字的当前输入位置。(5)标尺 在编辑窗口的上面和左面有一个标尺,分别为水平标尺和垂直标尺,用来查看正文的高度和宽度,以及图片、文本框、表格的宽度,还可以用来排版正文。( 6)滚动条在编辑窗口的右面和下面有滚动条,分别为垂直滚动条和水平滚动条,用来滚动文档,显示在屏幕中看不到的内容。可以单击滚动条中的按钮或者拖动滚动框来浏览文档。(7)显示方式按钮

读者写者问题课程设计说明书

-- 数学与计算机学院 课程设计说明书 课程名称: 操作系统原理-课程设计课程代码: 题目:读者写者问题 年级/专业/班: 学生姓名: 学号: 开始时间:2011 年12月05日完成时间:2011 年12月25 日课程设计成绩: 学习态度及平时成绩(30) 技术水平与实际 能力(20) 创新(5)说明书撰写质量(45) 总分 (100) 指导教师签名:年月日

目录 1 引言?错误!未定义书签。 1.1问题的提出?错误!未定义书签。 1.2任务于分析?错误!未定义书签。 2程序的主要功能?错误!未定义书签。 2.1测试文本录入功能.................................... 错误!未定义书签。 2.2读者优先判断功能.................................... 错误!未定义书签。2.3写者优先判断功能.................................. 错误!未定义书签。 3 程序运行平台........................................... 错误!未定义书签。 4 总体设计............................................... 错误!未定义书签。5模块分析 ............................................... 错误!未定义书签。 5.1测试文本录入模块.................................... 错误!未定义书签。 5.2读者优先判断模块.................................... 错误!未定义书签。 5.3写者优先判断模块.................................... 错误!未定义书签。6系统测试............................................. 错误!未定义书签。 7 结论................................................................. 8致谢.................................................. 错误!未定义书签。参考文献 (10)

实验二 读者写者问题实验报告..

实验二读者写者问题实验报告 一、实验目的 Windows2000/XP提供了互斥量(mutex)、信号量(semapore)、事件(event)等三种同步对象和相应的系统调用,用于线程的互斥与同步。通过对读者写者问题的调试,了解Windows2000/XP中的同步机制。 二、实验内容及实验步骤 利用Windows2000/XP信号量机制,实现读者写者问题。 在Windows 2000环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先): 写-写互斥,即不能有两个写者同时进行写操作。 读-写互斥,即不能同时有一个线程在读,而另一个线程在写。 读-读允许,即可以有一个或多个读者在读。 读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结果读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。 三、实验结果及分析 图2.1 选择界面 第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者是,W 表示写者。第三字段为一个正数,表示读写操作的开始时间。线程创建

后,延时相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。下面是一个测试数据文件的例子: 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3 测试结果如下: 图2.2 读者优先运行结果

完整word版标准实验报告模板.docx

实验报告 实验名称 课程名称 ___电子技术基础实验 院系部:专业班级:学生姓名:学号 :同组人:实验台号 :指导教师:成绩:实验日期 : 华北电力大学

实验报告要求: 一、实验目的及要求 二、仪器用具 仪器名称规格/型号数量备注 实验箱1 示波器1 数字万用表1 交流毫伏表1 信号放生器1 三、实验原理 四、实验步骤(包括原理图、实验结果与数据处理) 五、讨论与结论(对实验现象、实验故障及处理方法、实验中 存在的问题等进行分析和讨论,对实验的进一步想法或改进意见。) 六、实验原始数据

一、实验目的及要求: 1.学会放大器静态工作点的调试方法,分析静态工作点对放大器性能的影响。 2.掌握放大器电压放大倍数和最大不失真输出电压的测试方法。 3.悉常用电子仪器及模拟电路实验设备的使用。 二、仪器用具:略 三、实验原理 图 1.2.1为电阻分压式工作点稳定单管放大器实验电路图。 图 1.2.1共射极单管放大器实验电路 在图 1.2.1电路中,当流过偏置电阻R B1和 R B2的电流远大于晶体管VT 的基极电流I B时(一般 5~ 10 倍),则它的静态工作点可用下式估算: R B1U CC I E U U I C CE=U CC-I C(R C+R F1+ R E) U B R B2B U BE R B1R E R F1 电压放大倍数: A Vβ R C //R L 其中 r be= 200+26 (1+β)/I E r be(1)R F 1 输入电阻: R i= R B1 // R B2 // [r be+(1+β)R F1 ] 输出电阻: R O≈ R C 四、实验方法与步骤: 1.调试静态工作点 接通+ 12V 电源、调节R W,使 U E= 2.0V ,测量 U B、 U E、U C、 R B2值。记入表 1.2.1 。 表 1.2.1U= 2.0V E 测量值计算值U B( V)U E( V)U C( V)R B2(KΩ) U BE( V) U CE( V) I C( mA) 2.665 2.07.8530.865 5.2 2.0 根据表格测量数据,计算得到: U=U -U E =0.665V,U = U - U E =5.8V,I ≈ I = U /R =2/(1.1)=1.82mA BE B CE C CE EE 实验数据显示,Q点的值满足放大电路的静态工作点要求,BJT 处于放大区。 2.测量不同负载下的电压放大倍数

操作系统课设: 实现读者写者(Reader-Writer Problem)问题

学 号: 课 程 设 计 2014——2015学年 第1学期 课程名称 操作系统 学 院 计算机科学与技术学院 专 业 软件工程 班 级 姓 名 指导教师

1《操作系统原理》课程设计指导书 课程编号: 课程名称:操作系统/Operating System 周数/学分:1周/1学分 先修课程:高级语言程序设计、汇编语言、数据结构、计算机组成原理 适用专业:计算机科学与技术、软件工程 开课学院、系或教研室:计算机科学与技术学院 一、课程设计的目的 通过对操作系统内核实现代码的阅读、修改、设计,理解和掌握复杂的操作系统的工作原理。 二、课程设计的内容和要求 1.系统调用 学习在Linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核空间中实现对用户空间的读写。这个函数的功能是返回当前的系统时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 2.内核定时器 通过研究内核的时间管理算法学习内核源代码。然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 3.实现生产者消费者(Bounded – Buffer Problem)问题 通过研究Linux的线程机制和信号量实现生产者消费者(Bounded Buffer)问题的并发控制。 实验条件要求:每人一台与Linux主机联网的Windows主机,普通用户权限。 4.实现读者写者(Reader-Writer Problem)问题 通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并

操作系统课程设计(采用读写平等策略的读者写者问题)完整版--内含代码

淮北师范大学 课程设计 采用读写平等策略的读者写者问题 学号: 姓名: 专业: 指导教师: 日期:

目录 第1部分课设简介 (3) 1.1 课程设计题目 (3) 1.2 课程设计目的.................. 错误!未定义书签。 1.3 课程设计内容 (3) 1.4 课程设计要求 (4) 1.5 时间安排 (4) 第2部分实验原理分析 (4) 2.1问题描述 (4) 2.2算法思想 (5) 2.3主要功能模块流程图 (5) 第3部分主要的功能模块 (6) 3.1数据结构 (6) 3.2测试用例及运行结果 (7) 第4部分源代码 (7) 第5部分总结及参考文献 (22) 5.1 总结 (22) 5.2 参考文献 (23)

第1部分课设简介 1.1 课程设计题目 采用读写平等策略的读者写者问题 1.2课程设计目的 操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 1)进一步巩固和复习操作系统的基础知识。 2)培养学生结构化程序、模块化程序设计的方法和能力。 3)提高学生调试程序的技巧和软件设计的能力。 4)提高学生分析问题、解决问题以及综合利用C语言进行课程设计的能力。 1.3课程设计内容 用高级语言编写和调试一个采用“读写平等”策略的“读者-- 写者”问题的模拟程序。 1.4课程设计要求 1)读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入。

2) 读者与写者均有两个以上,可在程序运行期间进行动态增加 读者与写者。 3)可读取样例数据(要求存放在外部文件中),进行读者/写者、 进入内存时间、读写时间的初始化。 4) 要求将运行过程用可视化界面动态显示,可随时暂停,查看 阅览室中读者/写者数目、读者等待队列、读写时间、等待时间。 5) 读写策略:读写互斥、写写互斥、读写平等(严格按照读 者与写者到达的顺序进入阅览室,有写着到达,则阻塞后续到 达的读者;有读者到达,则阻塞后续到达的写者)。 1.5时间安排 1)分析设计贮备阶段(1 天) 2)编程调试阶段(7 天) 3)写课程设计报告、考核(2 天) 第2部分实验原理分析2.1问题描述 有一个被许多进程共享的数据区,这个数据区可以是一个文件,或者主存的一块空间,甚至可以是一组处理器寄存器。有一些只读取这个数据区的进程reader和一些只往数据区中写数据的进程writer 以下假设共享数据区是文件。这些读者和写者对数据区的操作必须满

操作系统读者写者实验报告

《操作系统》上机实验报告 实验项目读者写者 学院(部)信息学院 专业计算机科学与技术班级 学生姓名 学号

读者写者问题 一.实验目的: 1.熟悉读者优先和写者优先的过程。 2.更好地理解进程同步的概念及其实现方法。 二.实验要求: 分别实现读者优先和写者优先。 “读-写”互斥,即不能同时有一个读者在读,同时去有一个写者在写; “写-写”互斥,即不能有两个写者同时进行写操作; “读-读”允许,即可以有两个以上的读者同时进行读操作。 三.实验内容: 读者优先: 如果没有写者正在操作,则读者不需要等待,用一个整型变量readcount 记录当前的读者数目,用于确定是否释放写者线程,(当readcout=0 时,说明所有的读者都已经读完,释放一个写者线程),每个读者开始读之前都要修改readcount,为了互斥的实现对readcount 的修改,需要一个互斥对象Mutex来实现互斥。 另外,为了实现写-写互斥,需要一个临界区对象write,当写者发出写的请求时,必须先得到临界区对象的所有权。通过这种方法,可以实现读写互斥,当readcount=1 时,(即第一个读者的到来时,),读者线程也必须申请临界区对象的所有权. 当读者拥有临界区的所有权,写者都阻塞在临界区对象write上。当写者拥有临界区对象所有权时,第一个判断完readcount==1 后,其余的读者由于等待对readcount的判断,阻塞在Mutex上! 写者优先: 写者优先和读者优先有相同之处,不同的地方在:一旦有一个写者到来时,应该尽快让写者进行写,如果有一个写者在等待,则新到的读者操作不能读操作,为此添加一个整型变量writecount,记录写者的数目,当writecount=0时才可以释放读者进行读操作!为了实现对全局变量writecount的互斥访问,设置了一个互斥对象Mutex3。 为了实现写者优先,设置一个临界区对象read,当有写者在写或等待时,读者必须阻塞在临界区对象read上。 读者除了要一个全局变量readcount实现操作上的互斥外,还需要一个互斥对象对阻塞在read这一个过程实现互斥,这两个互斥对象分别为mutex1和mutex2。

WORD实验报告模板

广东商学院华商学院 实验报告 课程名称计算机应用基础 实验项目名称Word综合练习 班级 实验室名称(或课室) 专业 任课教师黄晓兰 学号: 姓名: 实验日期:年月日

姓名实验报告成绩 评语: 指导教师(签名) 年月日说明:指导教师评分后,实验报告交院(系)办公室保存。

实验报告 一、实验目的 运用Word 2003的整个章节中各知识,综合对文档进行编辑排版。 二、实验原理 (实验教程P41,使用那些功能) 三、实验设备和软件 (1)硬件要求: P4微型计算机,内部组成局域网。 (2)软件要求: 操作系统:中文Windows XP、中文Office Word2003。 四、实验步骤 (自己根据你的完成过程,列出步骤,参照实验教程P42四) 五、实验结果 (另附一页) 六、实验总结 (通过这次实验你学到什么)

实验报告要求: ●实验报告可参照如下内容格式写作:实验目的、实验原理、实验设备、 实验步骤、实验结果。 ●题材自定,但要求内容健康向上。要求内容要有一定主题,体现一定 风格。可参考实验结果内容。

专访:访美国华人金融协会理事、芝加哥机构资本副高海 华网芝加哥3月29日电 (记者 朱诸 张保平) 国华人金融协会理事、芝加哥机构资本副总裁高海29日在接受新华社记者专访时表示,这次日本大地震对日本经济更多的是一种短期的干扰,不会对日本经济的长期走势产生重大影响;同时,由于日本对目前世界经济增量的贡献有限,因此也不会对全球经济的发展产生太大影响。 高海说,由于地震会造成当地厂房的破坏,因此可能会使得日本某些制造行业——如汽车和汽车零配件、半 导体及芯片等——短期压力加剧。 但历史经验表明,这些行业通常会在地震发生之后的两至三个季度内出现下滑,之后又会迎来一轮强劲反弹,因为日本制造业的需求主体主要分布在世界其他国家,这些需求并没有太大变化,因此在厂房检修或者重建之后,那些被滞后的需求还会回来,所以短期之内会呈现明显的“V”型反弹。 高海说,具体来看,在这些受到影响的行业中,日本核电行业受到的冲击最大,因为这次核危机给日本以及 全球发展核电的国家敲响了警钟。目前日本电力供应有约30%依赖于核电,此外,作为一个以出口为主的经济,日本的制造业对电能的依赖也比较大,如果三分之一的供电受到影响,那么短期内对这些制造业的冲击也是很严重的。 另外,对于一些替换性较高的行业,如重型机械制造业,如果调整的周期过长,导致客户需求转移,也会对这些行业造成冲击。“比如日立和小松,如果耽误的时间太长,而国外的客户又急需使用,因此只能转向其他国家的生产商购买,而且这些产品均伴随相关配套产品和服务,如维修保养,一旦转移,就很难改变,”高海说。 “长远来看,”长期投资亚洲金融市场的高海说,“对日本经济影响最大的两个因素,一个是人口增长,一个是生产力,而这两方面现在都在朝着不利于经济的方向发展。首先是日本的人口数量一直在下降,同时日本的生产力也在上世纪80年代达到顶峰之后开始走下坡路,而且正在被其他国家赶超。”高海说,改变不了的,因此,日本经济长期来看还会维持向下走的趋势。 另外,这次地震也对世界其他国家的一些行业造成了一定影响。据报道,美国通用汽车公司已经关闭了路易斯安那的一家卡车制造工厂,者削减产量。 对此,高海说方面出现问题,可能会影响到美国今年的汽车生产和销售。” “但是这种供应方面的短缺都不会是大问题,只要需求方面保持稳定,高海说。 全球GDP 增量里,日本占的比重并不是很高,也不会产生太大影响。 同时,高海还说,由于日本外债比例不高,大部分债券被本国企业和居民持有,所以即使地震重建需要从国外借债,也不会对日本的主权信用产生实质性的影响,所以不会引发类似欧洲的债务危机。 美

操作系统课程设计-读者写者问题

操作系统课程设计报告

一、开题报告 (一)该项课程设计的意义; 1.更加深入的了解读者写者问题的算法; 2.加深对线程,进程的理解; 3.加深对“线程同步”概念的理解,理解并应用“信号量机制”; 4.熟悉计算机对处理机的管理,了解临界资源的访问方式; 5.了解C++中线程的实现方式,研读API。 (二)课程设计的任务 多进程/线程编程:读者-写者问题。 ●设置两类进程/线程,一类为读者,一类为写者; ●随机启动读者或写者; ●显示读者或写者执行状态; ●随着进程/线程的执行,更新显示; (三)相关原理及算法描述; 整体概况: 该程序从大体上来分只有两个模块,即“读者优先”和“写者优先”模块. 读者优先: 如果没有写者正在操作,则读者不需要等待,用一个整型变量readcount记录读者数目,用于确定是否释放读者线程,readcount的初值为0.当线程开始调入时. 每个读者准备读. 等待互斥信号,保证对readcount 的访问,修改互斥.即readcount++. 而当读者线程进行读操作时,则读者数目减少(readcount--).当readcout=0 时,说明所 有的读者都已经读完,离开临界区唤醒写者(LeaveCriticalSection(&RP_Write);), 释 放互斥信号(ReleaseMutex(h_Mutex)). 还需要一个互斥对象mutex来实现对全局变量Read_count修改时的互斥. 另外,为了实现写-写互斥,需要增加一个临界区对象Write。当写者发出写请求时, 必须申请临界区对象的所有权。通过这种方法,可以实现读-写互斥,当 Read_count=1时(即第一个读者到来时),读者线程也必须申请临界区对象的所有 权 写者优先: 写者优先与读者不同之处在于一旦一个写者到来,它应该尽快对文件进行写操作,如果有一个写者在等待,则新到来的读者不允许进行读操作。为此应当填加 一个整形变量write_count,用于记录正在等待的写者的数目,write_count的初值 为0.当线程开始调入时.只允许一个写者准备读. 等待互斥信号,保证对write_count 的访问,修改互斥.即write_count++.而当写者线程进行读操作时,则相应写者数目减 少(write_count--).当write_count=0 时,说明所有的读者都已经读完,离开临界区唤 醒读者,释放互斥信号. 为了实现写者优先,应当填加一个临界区对象read,当有写者在写文件或等待时,读者必须阻塞在read上。

操作系统课程设计--读者-写者问题

操作系统课程设计报告 一、操作系统课程设计任务书 读者- 写者问题实现 1设计目的通过实现经典的读者写者问题,巩固对线程及其同步机制的学习效果,加深对相关基本概念的理解,并学习如何将基本原理和实际设计有机的结合。 2设计要求 在Windows 2000/XP 环境下,使用多线程和信号量机制实现经典的读者写者问题,每个线程代表一个读者或一个写者。每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者- 写者问题。 读者-写者问题的读写操作限制: (1)写-写互斥,即不能有两个写者同时进行写操作 (2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写 (3)读-读允许,即可以有二个以上的读者同时读读者优先的附加限制:如果一个读者申请进行读操作时已有另一读者正在进行读操作,则该读者可直接开始读操作。 写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确信所有处理都遵守相应的读写操作限制。 3测试数据文件格式 测试数据文件包括n 行测试数据,分别描述创建的n 个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各字段间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者是,W 表示写者。第三字段为一个正数,表示读写操作的开始时间。线程创建后,延时相应时间(单位为秒)后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的持续时

word20XX的实验报告

竭诚为您提供优质文档/双击可除word20XX的实验报告 篇一:word实验报告 实验报告 课程名称计算机应用基础实验项目名称word综合练习班级与班级代码12级新闻1班实验室名称(或课室)ss1-201专业新闻学任课教师刘松学号:12251204102姓名:蔡晓童实验日期:20XX-04-11 广东商学院教务处制 姓名实验报告成绩 评语: 指导教师(签名)年月日 说明:指导教师评分后,实验报告交院(系)办公室保存。 一、实验目的 1、2、 掌握常用的word编辑方法 综合运用word桌面排版功能(字符排版、段落排版、

页面排版、图文混排、艺术字等)进行实际文档的处理。 二、实验设备 1、2、 计算机word20XX软件 三、实验步骤 1、新建一个word文档,输入文章。 2、选择“插入”→“图片”→“艺术字”,选择艺术字样式→在对话框中设置字体、字号。 3、选择“插入”→“图片”→“来自文件”,选择所要插入的图片,在合适的位置插入相应的图片,并对图片的格式进行定义。 4、选中要分栏的段落,选择“格式”→“分栏”命令,显示“分栏”对话框,在预设类型中选择一种类型,单击“确定”按钮。 5、将第一段的“潮”字首字下沉,点击【格式】→【首字下沉】→【下沉】,单击“确定”。 6、选择“编辑”→“查找”,输入要查找的内容,然后选择“你”,再进行字体变换。 7、进行字符格式设置,如改变字型,大小,颜色等。8、进行页眉(学号和姓名)和页脚(页码)格式设置。 四、实验结果 如下页所示

五、实验分析与体会 通过本次实验,我了解了word字符格式、段落格式和 页面格式等排版技术和图文混排等技术的使用,今后可以更好的运用word在生活中工作中制作文档。而且通过这次试验,我觉得自己动手排版非常有趣。因为我对word文档的 操作的不熟悉,所以,我的速度一直很慢,而且,还不可以更具自己想要的效果自由的进行操作,但是在经过一边查书,一边操作的过程中,经过自己的努力,终于完成了我的文档。我越来越熟悉它的操作,并且能够运用其中大部分的工具,来完善自己的文档。而且我也明白了,word文档的操作是很基础的计算机运用,也是使用范围非常广泛的程序。因此,学习这一门课程是非常重要和必要的。 广□播站潮州市高级中学云里之音○ 作为校园文化的传媒机构,以丰富学生的校园生活,传播校园资讯为目的,以"努只为把声音传得更远"为口号,力,陪伴高级 走过了许多风风雨雨。在高级中学团中学 学生会的管理下,委会、广播站一如既往地坚持发扬广播不怕苦,不怕累的精神,努力唱响青春,唱响热情。 mondaysunshineAfternoon:品味生活点滴享受午后阳光;为你带来新鲜的生活资讯,介绍生活小常识。Tuesdaywindow:ListeningListeningwindow,

操作系统实验 读者写者问题

《计算机操作系统》实验报告 题目读者写者问题 学院(部)信息学院 专业计算机科学与技术 班级 学生姓名 学号 指导教师(签字)

一、问题描述 一个数据文件或者记录,可以被多个进程共享,我们把只要求读该文件的进程称为“Reader进程”,其他进程则称为“Writer进程”。允许多个进程同时读一个共享对象,因为读操作不会是数据文件混乱。但不允许一个Writer进程和其他Reader进程或者Writer进程同时访问共享对象,因为这种访问将会引起混乱。所谓“读者——写着问题(Reader—Writer Problem)”是指保证一个Writer进程必须与其他进程互斥地访问共享对象的同步问题 二、解决问题 为实现Reader与Writer进程间在读或写是的互斥而设置了一个互斥的信号量Wmutex。另外,在设置一个整型变量Readcount表示正在读的进程数目。由于只要有一个Reader进程在读,便不允许Writer去写。因此,仅当Readercount=0时,表示尚无Reader进程在读时,Reader进程才需要进行Wait(wmutex)操作。若Wait(Wmutex)操作成功,Reader进程便可去读,相应地,做Readcount+1操作。同理,仅当Reader进程在执行了Readercount-1操作后其值为0时,才执行Signal(Wmutex)操作,以便让Writer进程写。又因为Readercount是一个可被多个Reader进程访问的临界资源,因此也应该为它设置一个互斥信号量rmutex。 三、代码实现 1、读者优先 #include #include using namespace std; CRITICAL_SECTION rmutex,wmutex; int wr; int readernum; DWORD WINAPI reader(LPVOID IpParamter){ cout<<"读者申请\n"; wr++; EnterCriticalSection(&rmutex); if(readernum==0) EnterCriticalSection(&wmutex); readernum++; cout<<"读者进入成功正在读取\n"; LeaveCriticalSection(&rmutex); Sleep(2000); EnterCriticalSection(&rmutex); readernum--; cout<<"读者退出\n"; wr--;

读者写者问题写者优先代码

读者写者问题-写者优先代码 #include<stdio.h> #include<stdlib.h> int rcount=0;//正在读的读者数量 int wcount=0;//写者队列中等待写操作的写者数量 int rid=0;//读进程号 int wid=0;//写进程号 int w=1;//读写互斥信号量 char temp[300] = {'\0'}; int sign; //标识temp空的信号量0表示temp空 void WFwakeup(); void RFwakeup(); struct rqueue{//读者等待队列 int readers[200]; int index; }rq; struct wqueue{//写者等待队列 int writers[200]; int index; }wq; void read(){ int i = 0; rid++; if(rcount == 0){//当前没有读进程在读可能有写进程在写可能CPU空闲if(w==1) {//如果CPU空闲,读者拿到CPU w--;// 相当于一个P操作 rcount++; if(temp[0] == '\0'){ sign = 0; rq.readers[rq.index++]=rid;//将读者进程加入等待队列 WFwakeup(); return; }//if printf("读者%d正在读\n",rid);

for(i = 0;i < 300;i++){//读取temp内容即写者写的内容 if(temp[i] == '\0'){ printf("\n"); return; }//if printf("%c",temp[i]); }//for }//if else{//写者线程正在执行 printf("有写者在写不能读!\n"); rq.readers[rq.index++]=rid;//将读者进程加入等待队列 }//else }//if else{//rcount !=1 则知道当前已经有读者在读,读读不互斥,则这个读者可以直接进来了读 printf("读者%d正在读\n",rid); for(i = 0;i < 300;i++){ if(temp[i] == '\0'){ printf("\n"); return; } printf("%c",temp[i]); }//for }//else } //***************************写进程写操作 void write(){ wid++; if(w == 0){ if(rcount != 0 ){//有读者进程在执行 printf("有读者在读不能写!\n"); wq.writers[wq.index++]=wid;//将写者进程加入等待队列 wcount++; return; } if(rcount == 0 ){//rcount == 0则当前无读者,但w = 0,所以有写者在写 printf("有写者在写不能写!\n"); wq.writers[wq.index++]=wid;//将写者进程加入等待队列 wcount++; return; } }

读者写者问题

一设计概述 所谓读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。 读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。 信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者问题则是这一机制的一个经典范例。 与记录型信号量解决读者—写者问题不同,信号量机制它增加了一个限制,即最多允许RN个读者同时读。为此,又引入了一个信号量L,并赋予初值为RN,通过执行wait(L,1,1)操作,来控制读者的数目,每当有一个读者进入时,就要执行wait(L,1,1)操作,使L的值减1。当有RN个读者进入读后,L便减为0,第RN+1 个读者要进入读时,必然会因wait(L,1,1)操作失败而堵塞。对利用信号量来解决读者—写者问题的描述如下: Var RN integer;L,mx:semaphore: =RN,1; Begin Parbegin Reader :begin Repeat Swait(L,1,1); Swait(mx,1,0); . Perform reader operation; Ssignal(L,1); Until false; End

Writer :begin Repeat Swait(mx ,1,1,l,RN,0); Perform writer operation; Ssignal(mx,1); Until false; End Parend End 其中,Swait(mx,1,0)语句起着开关作用,只要无Writer进程进入些,mx=1,reader进程就都可以进入读。但是要一旦有Writer进程进入写时,其MX=0,则任何reader进程就都无法进入读。Swait(mx ,1,1,l,RN,0)语句表示仅当既无Write 进程在写(mx=1),又无reader进程在读(L=RN)时,writer进程才能进入临界区写。 本设计方案就是通过利用记录型信号量对读者写者问题的解决过程进行模拟演示,形象地阐述记录型信号量机制的工作原理。 二设计目的与内容 一实验目的 l. 用信号量来实现读者写者问题。 2. 理解和运用信号量、PV原语、进程间的同步互斥关系等基本知识。二、二实验内容 读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:(1)任意多个读进程可以同时读这个文件; (2)一次只有一个写进程可以往文件中写; (3)如果一个写进程正在进行操作,禁止任何读进程度文件。

北理工操作系统实验二读者写者问题

本科实验报告 实验名称:操作系统原理实验(读者写者问题) 课程名称:操作系统原理实验时间:2015.10.30 任课教师:王耀威实验地点:10#102 实验教师:苏京霞 实验类型: 原理验证□综合设计□自主创新 学生姓名:孙嘉明 学号/班级:1120121474/05611202 组号:学院:信息与电子学院同组搭档:专业:信息对抗技术成绩:

实验二:读者写者问题 一、实验目的 1.通过编写和调试程序以加深对进程、线程管理方案的理解; 2.熟悉Windows多线程程序设计方法; 二、实验要求 在Windows环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先) 1)写-写互斥:不能有两个写者同时进行写操作 2)读-写互斥:不能同时有一个线程在读,而另一个线程在写。 3)读-读允许:可以有一个或多个读者在读。 读者优先的附加限制:如果读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。 测试数据文件包括 n行测试数据,分别描述创建的n个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,每个字段间用空格分隔。第1个字段为正整数,表示线程的序号。第2个字段表示线程的角色,R表示读者,W表示写者。第3个字段为一个正数,表示读写开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。第4个字段为一个正数,表示读写操作的延迟时间。当线程读写申请成功后,开始对共享资源进行读写操作,该操作持续相应时间后结束,释放该资源。 下面是一个测试数据文件的例子(在记事本手工录入数据): 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3

操作系统课程设计读者写者问题

计算机与信息学院 操作系统课程设计报告一、开题报告 (一)该项课程设计的意义; 1.更加深入的了解读者写者问题的算法; 2.加深对线程,进程的理解; 3.加深对“线程同步”概念的理解,理解并应用“信号量机制”; 4.熟悉计算机对处理机的管理,了解临界资源的访问方式; 5.了解C++中线程的实现方式,研读API。 (二)课程设计的任务 多进程/线程编程:读者-写者问题。 ●设置两类进程/线程,一类为读者,一类为写者; ●随机启动读者或写者; ●显示读者或写者执行状态; ●随着进程/线程的执行,更新显示; (三)相关原理及算法描述; 整体概况: 该程序从大体上来分只有两个模块,即“读者优先”和“写者优先”模块. 读者优先: 如果没有写者正在操作,则读者不需要等待,用一个整型变量readcount记录读者数目,用于确定是否释放读者线程,readcount的初值为0.当线程开始调入时.每个读者准备读. 等待互斥信号,保证对readcount 的访问,修改互斥.即readcount++.而当读者线程进行读操作时,则读者数目减少(readcount--).当readcout=0 时,说明所有的读者都已经读完,离开临界区唤醒写者(LeaveCriticalSection(&RP_Write);), 释放互斥信号(ReleaseMutex(h_Mutex)). 还需要一个互斥对象mutex来实现对全局变量Read_count修改时的互斥. 另外,为了实现写-写互斥,需要增加一个临界区对象Write。当写者发出写请求时,必须申请临界区对象的所有权。 通过这种方法,可以实现读-写互斥,当Read_count=1时(即第一个读者到来时),读者线程也必须申请临界区对象的所有权 写者优先: 写者优先与读者不同之处在于一旦一个写者到来,它应该尽快对文件进行写操作,如果有一个写者在等待,则新到来的读者不允许进行读操作。为此应当填加一个整形变量write_count,用于记录正在等待的写者的数目,write_count的初值为0.当线程开始调入时.只允许一个写者准备读. 等待互斥信号,保证对write_count 的访问,修改互斥.即write_count++.而当写者线程进行读操作时,则相应写者数目减少(write_count--).当write_count=0 时,说明所有的读者都已经读完,离开临界区唤醒读者,释放互斥信号. 为了实现写者优先,应当填加一个临界区对象read,当有写者在写文件或等待时,读者必须阻塞在read上。

相关文档
最新文档