武汉理工 操作系统 课程设计

合集下载

武汉理工大学操作系统处理机调度实验报告【范本模板】

武汉理工大学操作系统处理机调度实验报告【范本模板】

学生学号Xxx 实验课成绩学生实验报告书实验课程名称操作系统C开课学院计算机科学与技术学院指导教师姓名xxx学生姓名xxx学生专业班级xxxx2016—- 2017学年第 1 学期实验课程名称:操作系统C③用while进行循环控制选择不同的算法2.数据结构的设计记录不同作业信息的结构体数组。

struct node job[100];记录作业/进程详细信息的结构体typedef struct node {string name;double submit;//提交时间double start;//开始时间double run;//运行时间double end;//完成时间double Ti;//周转时间double Wi;//带权周转时间double H;//响应比int priority;//优先级}*work;3。

核心算法设计(1)按提交时间进行排序的算法Input:work p //指向作业的指针int N //作业的个数Process:void sort (work p,int N){for(int i=0;i<N;i++){(2)三、主要仪器设备及耗材1.安装了Windows XP或Windows 7或其它版本的Windows操作系统的PC机1台2.P C机系统上安装了Microsoft Visual Studio 2010开发环境第二部分:实验过程和结果(可加页)一、实现说明在VS2010中创建一个算法调度项目,对于不同的调度算法分别进行算法设计,对于算法的设计要特别注意作业的提交情况,实验中存储作业信息的结构体是相同的,采用结构体数组保存全部的作业,每次通过对结构体数组进行遍历计算不同算法需要的信息,最后在主函数中用while循环和switch语句进行各个调度算法的选择,最后经过不断的调试和运行,实现四个调度算法分别是先来先服务、短进程优先、优先级和最高响应比优先。

二、调试说明(调试手段、过程及结果分析)调试过程出现的问题比较多,第一个问题是对于不同作业提交的先后顺序要加以考虑,对于作业提交时间进行排序选择,必须选择提交时间在上一个作业结束时间之前的作业进行短进程,优先级,最高响应比排序,经过排序选择后,出现的问题是在进行作业调度完,有的作业出现了负的结束时间,经过调试分析,发现不能直接用上一个作业的结束时间直接当做下一个作业的开始时间,每次进行作业调度前要进行提交时间与上一个作业结束时间的比较,如果在作业提交前,下一个作业还没有提交,那么在下一个作业的开始时间就是它的提交时间。

学生信息管理系统操作系统课程设计

学生信息管理系统操作系统课程设计

武汉理工大学华夏学院课 程 实 验课程名称课程名称信息系统分析与设计题 目 学生成绩管理系统专 业 计算机应用班 级 1071 学 号 03 04 07小组成员小组成员 钱堃钱堃 郑宇郑宇 蒋梦琴蒋梦琴成 绩__________________ 指导教师指导教师袁景凌2010 年 12 月前言在本次的在本次的《信息系统分析与设计》《信息系统分析与设计》《信息系统分析与设计》课程设计中我承担的设计题目为课程设计中我承担的设计题目为课程设计中我承担的设计题目为《武汉理《武汉理工大学华夏学院学生成绩管理系统分析与设计》。

本论文叙述了我校学成绩管理的现状以及系统目标和需求分析,重点介绍了学生成绩管理系统的实现过程:包括系统需求分析、系统调查、业务流程分析、数据流程分析、功能设计、数据库设计、系统物理配置方案、系统实现、系统测试和调试。

本系统主要功能有用户管理、学生信息录入、班级课程录入、学校专业信息录入、课程信息录入、学生成绩录入、教师信息录入、学生成绩分析、功能需求描述、数据库设计等内容。

第一章 系统概述1.1现状描述现状描述高校的信息化首先是教务管理的信息化,高校的信息化首先是教务管理的信息化,教学改革中学生成绩的管理信息剧教学改革中学生成绩的管理信息剧增,资源紧缺,资源紧缺,多校区管理等问题突显,多校区管理等问题突显,多校区管理等问题突显,经过调查获得现行系统组织结构功能如经过调查获得现行系统组织结构功能如下:下:图1-1 系统组织结构功能系统组织结构功能系统组织结构功能华夏学院教务处华夏学院教务处华夏学院教务科华夏学院教务科组织各学院教务部门做好迎新工作制定学年或学期教学执行计划编制课程预告指导选课编制课表调课停课考试安排考务管理考试试卷的付印和管理成绩与学籍管理学生证件证书发放和管理教室资源需求计划的协调落实与使用管理教务教学信息的收集统计发布及上报工作弹性学制学分制改革政策研究和实施管理教务管理信息系统的建设与维护各类资料、档案的管理工作现行系统业务流程图如下:现行系统业务流程图如下:图1-2 系统业务流程图系统业务流程图上图是学生成绩管理系统的组织结构图和业务流程图,由于系统繁琐,不便于管理,花费的时间长,需要人员多,如果出现错误,很难在短时间内查找和修改。

《操作系统》课程设计报告

《操作系统》课程设计报告

长江大学操作系统课程设计报告系(院):计算机科学学院专业班级:软工******姓名: ******* ***学号: 2013*****指导教师: *** **设计时间: 2015.12.27 - 2016.1.5设计地点: 4教5楼机房目录一、基本要求 (3)二、课程设计内容 (3)三、运行环境 (3)四、算法原理 (3)4.1银行家算法原理 (3)4.2页面置换算法原理 (3)4.3电梯调度算法原理 (4)五、程序结构 (4)5.1银行家算法结构 (4)5.2页面置换算法结构 (5)5.3电梯调度算法结构 (6)六、核心代码 (7)6.1银行家算法核心代码 (7)6.2页面置换算法核心代码 (13)6.3电梯调度算法核心代码 (17)七、运行结果截图 (20)7.1银行家算法截图 (20)7.2页面置换算法截图 (21)7.3电梯调度算法截图 (22)八、总结 (23)一、基本要求1.熟悉操作系统原理知识,理解各类管理算法。

2.能根据具体问题的数据特点,选用适当的数据结构,实现数据的组织和管理。

3.进一步巩固程序设计与数据结构的实践技能。

二、课程设计内容1.银行家算法模拟;2.页面置换算法模拟(OPT,FIFO,LRU);3.电梯调度算法(磁盘调度)模拟。

三、运行环境编程语言:C++,编程软件Microsoft Visual C++6.0,操作系统:Windows7。

四、算法原理4.1银行家算法原理银行家算法:系统中有限的资源要供多个进程使用,必须保证得到的资源的进程能在有限的时间内归还资源,以供其他进程使用资源。

如果资源分配不得到就会发生进程循环等待资源,则进程都无法继续执行下去的死锁现象。

把一个进程需要和已占有资源的情况记录在进程控制中,假定进程控制块PCB其中“状态”有就绪态、等待态和完成态。

当进程在处于等待态时,表示系统不能满足该进程当前的资源申请。

”资源需求总量”表示进程在整个执行过程中总共要申请的资源量。

《操作系统》课程教案

《操作系统》课程教案

《操作系统》课程教案第一章:操作系统概述1.1 学习目标理解操作系统的概念、作用和重要性掌握操作系统的基本功能和分类了解操作系统的历史和发展趋势1.2 教学内容操作系统的定义和作用操作系统的功能:进程管理、存储管理、文件管理、作业管理和设备管理操作系统的分类:批处理系统、分时系统、实时系统和分布式系统操作系统的发展趋势:个人操作系统、服务器操作系统、嵌入式操作系统和云计算操作系统1.3 教学方法讲授:讲解操作系统的概念、功能和发展趋势案例分析:分析不同类型的操作系统实例讨论:引导学生思考操作系统的未来发展方向1.4 教学资源教材:操作系统相关书籍课件:操作系统的图片、图表和动画网络资源:操作系统相关的文章和视频1.5 教学评估课堂问答:检查学生对操作系统概念的理解小组项目:培养学生合作分析和解决问题的能力第二章:进程管理2.1 学习目标理解进程的概念和作用掌握进程管理的基本方法和策略了解进程调度和死锁的解决方法2.2 教学内容进程的定义和作用:进程的属性、进程的状态和进程的控制块进程管理的基本方法:进程的创建、进程的终止和进程的同步进程调度:短作业优先调度、优先级调度和轮转调度死锁的解决方法:资源分配图、银行家算法和死锁避免2.3 教学方法讲授:讲解进程的概念、进程管理的方法和策略模拟实验:模拟进程调度和死锁的解决过程讨论:引导学生思考进程管理的优化方法2.4 教学资源教材:操作系统相关书籍课件:进程的概念、进程管理的图表和动画网络资源:进程调度和死锁解决相关的文章和视频2.5 教学评估课堂问答:检查学生对进程概念的理解小组项目:培养学生合作分析和解决问题的能力第三章:存储管理3.1 学习目标理解存储管理的作用和重要性掌握存储管理的策略和方法了解虚拟存储器和页面置换的算法3.2 教学内容存储管理的作用和重要性:存储器的层次结构、存储管理的任务和目标存储管理的策略:分页存储管理、分段存储管理和段页式存储管理页面置换的算法:先进先出置换、最近最久未使用置换和最少使用置换虚拟存储器的实现:虚拟地址空间、页面表和缺页中断3.3 教学方法讲授:讲解存储管理的作用、策略和页面置换算法模拟实验:模拟虚拟存储器和页面置换的过程讨论:引导学生思考存储管理的优化方法3.4 教学资源教材:操作系统相关书籍课件:存储管理的图表和动画网络资源:虚拟存储器和页面置换相关的文章和视频3.5 教学评估课堂问答:检查学生对存储管理作用的理解课后作业:巩固学生对存储管理策略和方法的掌握小组项目:培养学生合作分析和解决问题的能力第四章:文件管理4.1 学习目标理解文件的概念和作用掌握文件管理的基本方法和策略了解目录结构和文件系统的实现4.2 教学内容文件的概念和作用:文件的基本属性、文件的类型和文件的操作文件管理的基本方法:文件的创建、文件的删除和文件的权限管理目录结构:树状目录结构、层次目录结构和虚拟目录结构文件系统的实现:文件系统的层次结构、文件系统的存储方式和文件系统的访问控制4.3 教学方法讲授:讲解文件的概念、文件管理的方法和策略模拟实验:模拟文件操作和目录结构的过程讨论:引导学生思考文件管理的优化方法4.4 教学资源教材:操作系统相关书籍课件:文件的概念、文件管理的图表和动画网络资源:目录结构和文件系统实现相关的文章和视频4.5 教学评估课堂问答:检查学生对文件概念的理解课后作业:巩固学生对文件管理方法的掌握小组项目:第六章:作业管理6.1 学习目标理解作业管理的作用和重要性掌握作业调度和作业控制的方法了解作业优先级和作业队列的实现6.2 教学内容作业管理的作用和重要性:作业的概念、作业的类型和作业管理的任务作业调度:作业优先级调度、作业期限调度和多级反馈调度作业控制:作业的创建、作业的执行和作业的终止作业队列的实现:作业队列的维护和作业队列的优化6.3 教学方法讲授:讲解作业管理的作用、方法和策略模拟实验:模拟作业调度和作业控制的过程讨论:引导学生思考作业管理的优化方法6.4 教学资源教材:操作系统相关书籍课件:作业管理的图表和动画网络资源:作业优先级和作业队列实现相关的文章和视频6.5 教学评估课堂问答:检查学生对作业管理作用的理解课后作业:巩固学生对作业控制方法的掌握小组项目:培养学生合作分析和解决问题的能力第七章:设备管理7.1 学习目标理解设备管理的作用和重要性掌握设备管理的基本方法和策略了解设备驱动程序和I/O调度7.2 教学内容设备管理的作用和重要性:设备的分类、设备管理的目标和设备管理的任务设备管理的基本方法:设备分配、设备驱动程序和设备控制设备驱动程序:设备驱动程序的原理、设备驱动程序的编写和设备驱动程序的调试I/O调度:轮转调度、优先级调度和反馈调度7.3 教学方法讲授:讲解设备管理的作用、方法和策略模拟实验:模拟设备驱动程序和I/O调度过程讨论:引导学生思考设备管理的优化方法7.4 教学资源教材:操作系统相关书籍课件:设备管理的图表和动画网络资源:设备驱动程序和I/O调度实现相关的文章和视频7.5 教学评估课堂问答:检查学生对设备管理作用的理解课后作业:巩固学生对设备管理方法的掌握小组项目:培养学生合作分析和解决问题的能力第八章:用户接口8.1 学习目标理解用户接口的作用和重要性掌握命令接口和图形用户接口的设计了解用户接口的实现和用户界面设计的原则8.2 教学内容用户接口的作用和重要性:用户接口的概念、用户接口的任务和用户接口的设计目标命令接口的设计:命令的语法、命令的语义和命令的帮助图形用户接口的设计:图形用户接口的元素、图形用户接口的布局和图形用户接口的交互用户接口的实现:用户接口的框架、用户接口的库和用户接口的编程接口8.3 教学方法讲授:讲解用户接口的作用、设计和实现案例分析:分析常见的命令接口和图形用户接口实例讨论:引导学生思考用户界面设计的优化方法8.4 教学资源教材:操作系统相关书籍课件:用户接口的图表和动画网络资源:用户接口设计和用户界面设计相关的文章和视频8.5 教学评估课堂问答:检查学生对用户接口作用的理解课后作业:巩固学生对命令接口和图形用户接口设计的掌握小组项目:培养学生合作分析和解决问题的能力第九章:操作系统安全9.1 学习目标理解操作系统安全的作用和重要性掌握操作系统安全的基本策略和方法了解操作系统安全漏洞和攻击手段9.2 教学内容操作系统安全的作用和重要性:操作系统的安全级别、操作系统的安全目标和操作系统的安全威胁操作系统安全的基本策略:访问控制、身份验证、加密和审计操作系统安全的方法:安全内核、安全操作系统和操作系统安全增强操作系统安全漏洞和攻击手段:缓冲区溢出、恶意软件和网络攻击9.3 教学方法讲授:讲解操作系统安全的作用、策略和方法案例分析:分析操作系统安全漏洞和攻击手段的实例讨论:引导学生思考操作系统安全的优化方法9.4 教学资源教材:操作系统相关书籍课件:操作系统安全的图表和动画网络资源:操作系统安全策略和操作系统安全漏洞相关的文章和视频9.5重点解析本《操作系统》课程教案涵盖了操作系统的概述、进程管理、存储管理、文件管理、作业管理、设备管理、用户接口和操作系统安全等十个章节。

《操作系统》教案》课件

《操作系统》教案》课件

《操作系统》教案(第一至第五章)一、教案概述本教案主要针对《操作系统》课程的五个章节进行详细的教学设计,包括教学目标、教学内容、教学方法、教学步骤和教学评价等方面。

通过本教案的学习,学生将掌握操作系统的基本概念、原理和关键技术。

二、教学目标1. 了解操作系统的概念、发展和分类。

2. 掌握操作系统的主要功能和架构。

3. 理解进程管理、内存管理、文件管理和设备管理的基本原理。

4. 学习操作系统的设计方法和实现技术。

三、教学内容第一章:操作系统概述1. 操作系统的概念和发展历程2. 操作系统的目标和功能3. 操作系统的分类和特点第二章:操作系统架构1. 操作系统的主要组件2. 操作系统的层次结构3. 操作系统的接口和API第三章:进程管理1. 进程的概念和特性2. 进程的状态和转换3. 进程调度算法4. 进程同步与互斥5. 死锁与饥饿问题第四章:内存管理1. 内存分配与回收策略2. 内存分页和分段3. 虚拟内存技术4. 页面置换算法5. 内存保护机制第五章:文件管理1. 文件和目录的概念2. 文件系统的组织结构3. 文件存储分配策略4. 文件访问控制5. 磁盘空间管理和文件备份策略四、教学方法1. 讲授法:讲解基本概念、原理和关键技术。

2. 案例分析法:分析实际操作系统案例,加深对原理的理解。

3. 实验法:通过上机实验,巩固理论知识。

4. 小组讨论法:分组讨论问题,培养团队合作能力。

五、教学步骤1. 引导:介绍本章主题,激发学生兴趣。

2. 讲解:详细讲解本章的核心概念和原理。

3. 案例分析:分析实际案例,加深学生对原理的理解。

4. 练习与讨论:布置练习题,组织小组讨论。

5. 总结:对本章内容进行归纳和总结。

六、教学评价1. 课堂参与度:观察学生在课堂上的发言和提问情况。

2. 练习题:评估学生对知识的掌握程度。

3. 实验报告:评价学生的实践操作能力。

4. 小组讨论报告:评估学生的团队合作和沟通能力。

七、教学资源1. 教材:选用权威、实用的操作系统教材。

《操作系统》课程设计

《操作系统》课程设计

《操作系统》课程设计一、课程目标知识目标:1. 让学生掌握操作系统的基本概念,包括进程、线程、内存管理、文件系统等核心知识;2. 了解操作系统的历史发展,掌握不同类型操作系统的特点及使用场景;3. 掌握操作系统的性能评价方法和常用的调度算法。

技能目标:1. 培养学生运用操作系统知识解决实际问题的能力,如分析系统性能瓶颈、优化系统资源分配等;2. 培养学生具备基本的操作系统编程能力,如进程创建、线程同步、文件操作等;3. 提高学生的团队协作能力和沟通能力,通过小组讨论和项目实践,学会共同解决问题。

情感态度价值观目标:1. 培养学生对操作系统学科的兴趣,激发学生的学习热情,使其形成积极向上的学习态度;2. 培养学生具备良好的信息素养,尊重知识产权,遵循法律法规;3. 培养学生的创新精神和批判性思维,敢于质疑、勇于探索,形成独立思考的能力。

课程性质:本课程为计算机科学与技术专业的核心课程,旨在让学生掌握操作系统的基本原理和实现方法,提高学生的系统分析和编程能力。

学生特点:学生具备一定的编程基础和计算机系统知识,具有较强的逻辑思维能力和动手实践能力。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,通过案例分析和项目实践,帮助学生将所学知识内化为具体的学习成果。

在教学过程中,关注学生的学习进度和反馈,及时调整教学策略,确保课程目标的实现。

二、教学内容1. 操作系统概述:介绍操作系统的定义、发展历程、功能、类型及特点,对应教材第一章内容。

- 操作系统的起源与发展- 操作系统的功能与类型- 操作系统的主要特点2. 进程与线程:讲解进程与线程的概念、状态、调度算法,对应教材第二章内容。

- 进程与线程的定义与区别- 进程状态与转换- 进程调度算法3. 内存管理:分析内存管理的基本原理、策略和技术,对应教材第三章内容。

- 内存分配与回收策略- 虚拟内存技术- 页面置换算法4. 文件系统:介绍文件系统的基本概念、结构、存储原理,对应教材第四章内容。

武汉理工大学-操作系统实验报告-中国好学长系列之小灰灰的爸爸

武汉理工大学-操作系统实验报告-中国好学长系列之小灰灰的爸爸

学 生 实 验 报 告 书实验课程名称 操 作 系 统 开 课 学 院 计算机科学与技术学院 指导老师姓名 刘 军 学 生 姓 名 小灰灰的爸爸 学生专业班级 中国好学长系列2013 — 2014 学年 第 一 学期学生学号实验课成绩实验课程名称:操作系统实验项目名称Linux键盘命令和vi实验成绩实验者专业班级组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)掌握Linux系统键盘命令的使用方法。

二、实验设计(包括实验方案设计,实验手段的确定,实验步骤,实验过程等)Vi编辑器是所有计算机系统中最常用的一种工具。

UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi。

1.进入vi在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:例如:$ vi myfile有一点要注意,在进入vi之后,是处于“命令行模式”,要切换到“插入模式”才能够输入文字。

2. 切换至插入模式编辑文件在“命令行模式”下按一下字母“i”就可以进入“插入模式”,这时候就可以开始输入文字了。

3. Insert 的切换处于“插入模式”,就只能一直输入文字,按一下“ESC”键转到”命令行模式”能够删除文字。

4. 退出vi及保存文件在“命令行模式”下,按一下“:”冒号键进入“Last line mode”,例如:: w myfilename: wq (输入”wq”,存盘并退出vi): q! (输入q!,不存盘强制退出vi)三、主要实验工具、仪器设备及耗材安装Linux系统的计算机一台。

第二部分:实验结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)在整个过程中,最困难的就是记忆整个Vi命令。

在查阅资料的情况下,这个问题得到了解决。

二、实验结果描述1.进入vi在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面图1 vi主界面2.切换至插入模式编辑文件在“命令行模式”下按一下字母”i”就可以进入”插入模式”。

武汉理工大学操作系统实践报告

武汉理工大学操作系统实践报告

实践课设计报告课程名称计算机操作系统模拟设计存储管理的分配与题目回收学院计算机科学与技术学院专业计算机科学与技术班级xxxx姓名xxx指导教师xxx2016 年12 月29 日目录1需求分析 (2)1.1页式管理的基本原理 (2)1.2实验要求 (2)2功能设计 (2)2.1算法分析 (2)2.2数据结构 (4)2.3模块说明 (4)2.3.1主函数 (4)2.3.2各个功能函数 (4)2.3.3打印函数 (4)参考文献 (9)源代码: (10)1需求分析1.1页式管理的基本原理页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。

基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。

页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

图1 页的划分1.2实验要求⑴能够输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。

⑵当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。

⑶当某进程撤消时,显示内存回收后内存空间的使用情况。

2功能设计2.1算法分析模拟页式管理中置换算法中的先进先出算法(FIFO),FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。

图2算法流程图2.2数据结构(1)定义整型变量length来保存进程的页面数,定义数组order[30]来存储进程页面的逻辑地址,数组ad[100]存放逻辑页的页内位移。

(2)定义变量num_page存储物理块的数目,定义变量wlsize存储物理块的大小,物理块的大小一般为2的n次方,定义数组a[10]存放物理块中的存储的逻辑页。

(3)定义数组result[20][30]存储记录结果,定义数组result1[30]记录是否缺页。

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

课程设计题目实现读者写者(Reader-Writer Problem)问题学院计算机科学与技术学院专业软件工程班级姓名指导教师刘军2 0 1 2 ——2 0 13 学年第二学期目录一、设计题目与要求 (1)二、总的设计思想及系统平台、语言、工具等 (1)2、1问题简介 (1)2、2初始条件 (1)2、3总的设计思想 (2)三、数据结构与模块说明(功能与流程图) (2)3、1算法与数据结构 (2)3、2功能模块描述 (4)四、运行结果与运行情况 (7)五、调试记录 (8)六、自我评价与总结 (9)七、参考文献 (9)八、源程序 (10)本科生课程设计成绩评定表 (17)一、设计题目与要求题目:通过研究Linux的线程机制和信号量实现读者写者(Reader-Writer)问题并发控制。

要求:每人一台与Linux主机联网的Windows主机,普通用户权限。

二、总的设计思想及系统平台、语言、工具等2、1问题简介读者写者问题,是指保证一个writer进程必须与其他进程互斥地访问共享对象的同步问题。

读者写者问题可以这样的描述,有一群写者和一群读者,写者在写同一本书,读者也在读这本书,多个读者可以同时读这本书,但是,只能有一个写者在写书,并且,读者必写者优先,也就是说,读者和写者同时提出请求时,读者优先。

当读者提出请求时需要有一个互斥操作,另外,需要有一个信号量S来当前是否可操作。

信号量机制是支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的重要机制,而读者写者则是这一机制的一个经典范例。

与记录型信号量解决读者—写者问题不同,信号量机制它增加了一个限制,即最多允许RN个读者同时读。

为此,又引入了一个信号量L,并赋予初值为RN,通过执行wait(L,1,1)操作,来控制读者的数目,每当有一个读者进入时,就要执行wait(L,1,1)操作,使L的值减1。

当有RN个读者进入读后,L便减为0,第RN+1 个读者要进入读时,必然会因wait(L,1,1)操作失败而堵塞。

2、2初始条件操作系统:Windows程序设计语言:C++语言设有20个连续的存储单元,写入/读出的数据项按增设定为1-20这20个字符。

为每个读者/写者产生一个线程,设计正确的同步算法,使得每个读者/写者对该存储区进行操作后,即时显示该存储区的全部内容、当前指针位置和读者/写者线程的自定义标识符。

同时,需满足读者应有3个以上,写者应有两个以上。

多个读者/写者之间须共享对存储区进行操作的函数代码。

2、3总的设计思想读者-写者的读写限制(包括读者优先和写者优先)(1)写-写互斥,即不能有两个写者同时进行写操作;(2)读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写;(3)读读允许,即可以有2个以上的读者同时读。

将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写允许时,释放第一个写者操作。

读者写者问题的定义如下:有一个许多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间;有一些只读取这个数据区的进程(Reader)和一些只往数据区写数据的进程(Writer),此外还需要满足以下条件:(1)任意多个读进程可以同时读这个文件;(2)一次只有一个写进程可以往文件中写;(3)如果一个写进程正在进行操作,禁止任何读进程度文件。

分两种情况实现该问题:读优先:要求指一个读者试图进行读操作时,如果这时正有其他读者在进行操作,他可直接开始读操作,而不需要等待。

写优先:一个读者试图进行读操作时,如果有其他写者在等待进行写操作或正在进行写操作,他要等待该写者完成写操作后才开始读操作。

程序由三部分组成:(1)读者模块:包括系统调用接口,读者活动描述主程序。

系统接口主要功能是通过管道向父进程发送系统调用命令,并读取父进程送来的返回值。

(2)写者模块:包括系统调用接口,写者活动描述主程序。

读者-写者活动程序根据临界资源的共享,互斥原则编制。

(3)主控模块:主控模块实现系统初始化系统调用命令接收与解释执行,系统调用功能的实现(包括信号量机制),及读者-写者活动过程记录与显示。

三、数据结构与模块说明(功能与流程图)3、1算法与数据结构创建Person结构体typedef struct _Person{HANDLE m_hThread; //定义处理线程的句柄int m_nType; //进程类型(读写)int m_nStartTime; //开始时间int m_nWorkTime; //运行时间int m_nID; //进程号}Person;int g_PersonLists[] = { //进程队列1, W, 4, 5, 2, W, 16, 4, 3, R, 5, 2,4, W, 6, 5, 5, R, 4, 3,END,};Var RN integer;L,mx:semaphore: =RN,1;BeginParbeginReader :beginRepeatSwait(L,1,1);Swait(mx,1,0);.Perform reader operation;Ssignal(L,1);Until false;EndWriter :beginRepeatSwait(mx ,1,1,l,RN,0);Perform writer operation;Ssignal(mx,1);Until false;EndParendEnd其中,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进程才能进入临界区写。

3、2功能模块描述void CreatePersonList(int *pPersonLists){int i=0;int*pList = pPersonLists;bool Ret;while(pList[0] != END){switch(pList[1]){case R:Ret = CreateReader(pList[2],pList[3],pList[0]);//351,w452,523,654break; case W:Ret = CreateWriter(pList[2],pList[3],pList[0]);break;}DWORD WINAPI ReaderProc(LPVOID lpParam)//读过程{Person *pPerson = (Person*)lpParam;// wait for the start timewhile(g_CurrentTime != pPerson->m_nStartTime){ }WaitForSingleObject(g_hWriteSemaphore,INFINITE); // modify the writer's real start timepPerson->m_nStartTime = g_CurrentTime;DWORD WINAPI WriterProc(LPVOID lpParam) {Person *pPerson = (Person*)lpParam;// wait for the start timewhile(g_CurrentTime != pPerson->m_nStartTime) {}四、运行结果与运行情况图1、写者6申请资源,读者5、3申请资源图2、写者4申请资源而写者1退出图3、读者3和5依次推出,写者2申请资源图4、读者6申请资源,写者4退出五、调试记录虽然在做实验时已经练习过相关编程,但是在课程设计上还是犯了许多错误。

现挑几条分享,其余错误犯得有点低级,在此不再赘述。

(1)在定义Person结构体时,有些变量没有考虑到,比如处理线程的句柄以及进程类型。

(2)问题:error C2501: 'HANDLE' : missing storage-class or type specifiers error C2146: syntax error : missing ';' before identifier 'g_hReadSemaphore'解决:这是缺少了头文件而产生的错误,加入头文件#include <windows.h>即可(3)问题:error C2440: 'initializing' : cannot convert from 'void *' to 'struct_Person *'解决:可利用强制类型转换,加入(Person*)(4)问题:error C2065: 'Waitforsingleobject' : undeclared identifier解决:本来以为没有定义,可自己记得此函数已经封装好了。

后来一想,应该是大小写的问题。

C++对大小写有严格的要求,事实上,在此过程中,这种错误犯了许多,引起了我的注意。

(5)问题:fatal error C1010: unexpected end of file while looking for precompiled header directive解决:编译出错。

右键单击项目工程中的cpp文件,在菜单Project->Settings->C/C++->Precompile Header,设置为第一项:Not using precompile headers。

(6)在整个编程过程中,最让人头痛的就是理解各个调用函数的参数及用法,在上网准备了好几天之后,终于有所收获。

最后编程时,参考了网上的相关程序并有所改进。

六、自我评价与总结通过此次课程设计,使我更加扎实地掌握了有关“读者-写者问题”实现的方法,系统地理解和掌握C++语言的基本概念、语言特点和编程技巧,在应用C++语言在程序设计方面得到系统锻炼,为将来进行软件开发打下良好基础。

“读者-写者问题”的编写,花的时间很多,也学到很多东西。

了解支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的信号量机制。

在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,终于找出了原因之所在,也暴露出了前期我在这方面知识欠缺和经验不足。

实践出真知,通过亲自查阅资料和动手设计,使我掌握的知识不再是纸上谈兵。

相关文档
最新文档