武汉理工 操作系统 课程设计
武汉理工大学操作系统处理机调度实验报告【范本模板】
学生学号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]记录是否缺页。
武汉理工操作系统实验报告材料
理工大学学生实验报告书实验课程名称操作系统开课学院计算机科学与技术学院指导老师军学生姓名帅学生专业班级软件11012013 — 2014 学年第一学期实验课程名称:操作系统3.退出vi三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1 使用mkdir命令建立一个子目录subdir2 使用cat或more命令查看file1文件的容。
3 将date命令的用法附加到文件file1的后面:4 利用ls -l file1命令列出文件file1的较详细的信息。
5 利用rm fa命令将文件fa删除。
再利用ls -l命令查看工作目录容。
6 运行mv file1 file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中?显然,只有file_a在工作目录中,而file1不在工作目录中二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)Free 显示系统中已用空闲存数量Rm:删除文件或目录三、实验小结、建议及体会Linux对比Windows有些不同需要时间去适应。
通过这次实验对Linux操作系统有了进一步的了解。
初步掌握了一些Linux系统常用的命令。
通过这仅一个周时间的学习,我们只是了解了linux的一些最基本知识,我会在后的学习中不断完善和加以扩充实验课程名称:操作系统实验课程名称:操作系统六、实验小结、建议及体会通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解。
也对Linux系统终端方式使用的编辑器vi有进一步的认识,如何使用命令来打开文件以及在编辑器vi里面编写容等,。
总之,通过这次实验,对课本上的知识有了进一步的理解以及巩固。
实验课程名称:操作系统实验项目名称Linux系统调用(time)实验成绩实验者帅专业班级软件1101 组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验容描述(问题域描述)学习Linux核的系统调用,理解、掌握Linux系统调用的实现框架、用户界面、参数传递、进入/返回过程。
时间片轮转课程设计讲解
武汉理工大学华夏学院课程设计报告书课程名称:操作系统原理题目:时间片轮转调度算法系名:信息工程系专业班级:姓名:学号:指导教师:司晓梅2015 年 6 月 26 日武汉理工大学华夏学院信息工程系课程设计任务书课程名称:操作系统原理课程设计指导教师:司晓梅班级名称:计算机1131-2 开课系、教研室:自动化与计算机一、课程设计目的与任务操作系统课程设计是《操作系统原理》课程的后续实践课程,旨在通过一周的实践训练,加深学生对理论课程中操作系统概念,原理和方法的理解,加强学生综合运用操作系统原理、Linux系统、C语言程序设计技术进行实际问题处理的能力,进一步提高学生进行分析问题和解决问题的能力,包含系统分析、系统设计、系统实现和系统测试的能力。
学生将在指导老师的指导下,完成从需求分析,系统设计,编码到测试的全过程。
二、课程设计的内容与基本要求1、课程设计题目时间片轮转进程调度模拟算法的实现2、课程设计内容用c/c++语言实现时间片轮转的进程调度模拟算法。
要求:1.至少要有5个以上进程2.进程被调度占有CPU后,打印出该进程正在运行的相关信息提示:时间片轮转调度算法中,进程调度程序总是选择就绪队列中的第一个进程,也就是说按照先来先服务原则调度,但一旦进程占用处理机则仅使用一个时间片。
在使用完一个时间片后,进程还没有完成其运行,它必须释放出处理机给下一个就绪的进程,而被抢占的进程返回到就绪队列的末尾重新排队等待再次运行。
1)进程运行时,只打印出相关提示信息,同时将它已经运行的时间片加1就可以了。
2)为进程设计出PCB结构。
PCB结构所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息等。
3、设计报告撰写格式要求:1设计题目与要求 2 设计思想3系统结构 4 数据结构的说明和模块的算法流程图5 使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明6 运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)7 自我评价与总结 8 附录:程序清单,注意加注释(包括关键字、方法、变量等),在每个模块前加注释;三、课程设计步骤及时间进度和场地安排本课程设计将安排在第17周, 现代教育技术中心。
操作系统课程设计报告
《操作系统课程设计》一、课程设计目的1、进程调度是处理机管理的核心内容。
2、本设计要求用C语言编写和调试一个简单的进程调度程序。
3、通过设计本可以加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。
二、课程设计主要内容1、项目名称设计一个有 N个进程共行的进程调度程序2、实验设备及环境:软件要求:WINDOWS NT 系列操作系统,VC、VB、TURBO C等多种程序设计开发工具。
硬件要求:P4 2.0以上CPU、256M、40G硬盘。
3、课程设计类型综合设计型4、课程设计内容与要求1)进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。
2)每个进程有一个进程控制块( PCB)表示。
进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。
3)进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。
进程的到达时间为进程输入的时间。
进程的运行时间以时间片为单位进行计算。
4)每个进程的状态可以是就绪 W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。
5)就绪进程获得 CPU后都只能运行一个时间片。
用已占用CPU时间加1来表示。
如果运行一个时间片后,进程的已占用 CPU 时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。
6)每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。
7)重复以上过程,直到所要进程都完成为止。
5、课程设计方法及步骤1)充分了解各项设计要求。
深入理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。
武汉理工大学-操作系统课程设计-中国好学长系列之小灰灰地爸爸
学号:课程设计课程名称操作系统学院计算机科学与技术学院专业软件工程专业班级中国好学长系列姓名小灰灰的爸爸指导教师军2013——2014学年第1学期目录课程设计任务书 (2)摘要 (2)1设计题目与要求 (2)1.1设计题目:核定时器 (2)1.2设计要求:通过研究核的时间管理算法,学习核源代码;然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。
(2)2 总的设计思想及系统平台、语言、工具 (2)2.1 设计思想: (2)2.1.1 Linux核对定时器的描述 (2)2.1.2 Linux 核定时器 (4)2.1.3 Linux 信号signal处理机制 (7)2.1.4多线程编程 (8)2.1.5核定时器机制的实现 (10)2.2系统平台: (12)2.3编程工具: (12)3.数据结构与模块说明(功能与流程图) (13)3.1定时器使用: (13)3.2多线程程序: (13)3.3程序流程图: (15)4. 源程序: (15)5.运行结果与运行情况 (16)6.调试记录: (17)7.自我评析和总结: (18)8.参考文献 (18)评分表 (19)课程设计任务书学生:专业班级:指导教师:军工作单位:计算机科学与技术学院题目: 核定时器初始条件:1.操作系统:Linux2.程序设计语言:C语言3.有界缓冲区设有20个储存单元,其初值为0,放入/取出的数据项按增序设定为1-20这20个整型数要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.技术要求:通过研究核的时间管理算法学习核源代码。
然后应用这些知识并且使用“信号”建立一种用户空间机制来测量一个多线程程序的执行时间。
实验条件要求:每人一台Linux主机且有超级用户权限。
2. 设计说明书容要求:1)设计题目与要求2)总的设计思想及系统平台、语言、工具等3)数据结构与模块说明(功能与流程图)4)运行结果与运行情况3. 调试报告:1)调试记录2)自我评析和总结时间安排:指导教师签名:2013年12月26日系主任(或责任教师)签名:年月日核定时器摘要每个进程包含一到多个线程。
武汉理工操作系统课程设计——实现生产者-消费者问题
课 程 设 计2014——2015学年 第2学期课 程 操作系统学 院 计算机科学与技术学院 专 业 软件卓越工程师班级 软工zy1302姓 名指导教师刘 军《操作系统原理》课程设计任务书学生姓名:专业班级:软件zy1302指导教师:刘军工作单位:计算机科学与技术学院课程题目:实现生产者消费者(Bounded – Buffer Problem)问题课程名称:操作系统/Operating System周数/学分:1周/1学分先修课程:高级语言程序设计、汇编语言、数据结构、计算机组成原理适用专业:计算机科学与技术、软件工程开课学院、系或教研室:计算机科学与技术学院一、课程设计的目的通过研究Linux的线程机制和信号量实现生产者消费者(Bounded Buffer)问题的并发控制。
二、课程设计的内容和要求实现生产者消费者(Bounded – Buffer Problem)问题通过研究Linux的线程机制和信号量实现生产者消费者(Bounded Buffer)问题的并发控制。
实验条件要求:每人一台与Linux主机联网的Windows主机,普通用户权限。
指导教师签名:2015年6月系主任(或责任教师)签名:2015年6月目录摘要及关键字 (1)设计题目与要求 (2)1.总的设计思想及系统平台,语言,工具 (2)1.1设计思想 (2)1.2系统平台、语言和工具 (3)2.数据结构与模块说明 (3)2.1数据结构 (3)2.1.1生产者进程结构 (3)2.1.2消费者进程结构 (3)2.1.3 POSIX无名信号量 (4)2.2模块说明 (4)2.2.1生产者进程 (4)2.2.2消费者进程 (5)3.源程序 (6)4.调试记录 (9)5.自我评价与总结 (10)6.参考文献 (10)评分表 (11)摘要现代操作系统引入并发程序设计技术之后,程序的执行不再是顺序的,封闭的。
在多个进程并发运行的过程中,进程之间可能产生相互制约的关系,即竞争和协作。
武汉理工 操作系统 课程设计
课程设计题目实现读者写者(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)操作失败而堵塞。
课程设计任务书(操作系统课程设计)
武汉理工大学华夏学院信息工程系课程设计任务书课程名称:操作系统课程设计指导教师:杨铭熙班级名称:物联网1121 开课系、教研室:通信与物联一、课程设计目的与任务本课程是在物联网工程专业的学生学习了《操作系统》课程之后,为了加深和巩固其对所学操作系统理论的理解,同时提高学生利用操作系统知识综合运用的能力和分析问题、解决的问题的能力而开设的一门实践课程。
通过本环节使学生能够充分把学到的知识应用到实际的编程实践中去。
通过算法及其程序控制实现所需的对软件和硬件的控制,或深入利用操作系统的功能进行高水平的应用编程,使学生在系统编程和应用编程两方面都得到切实有效的训练和提高。
二、课程设计的内容与基本要求本课程设计包含如下两个题目:1.在Linux系统中增加一个新的设备驱动程序(通过模块方法)基本要求:采用动态模块加载方式加载已完成的设备驱动程序,并通过已编写的应用程序进行测试。
2.Linux多线程编程(任选一题)题目一:用多线程同步方法解决生产者-消费者问题目的:通过研究Linux的线程机制和信号量实现生产者消费者问题的并发控制。
说明:有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1~20这20个整型数。
要求;(1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、当前指针位置和生产者/消费者线程的标识符。
(2)生产者和消费者各有两个以上。
(3)多个生产者或多个消费者之间须共享对缓冲区进行操作的函数代码。
题目二:用多线程同步方法解决读者写者问题目的:通过研究Linux的线程机制和信号量实现读者写者问题的并发控制。
说明:设有20个连续的存储单元,写入/读出的数据项设定为1~20这20个字符。
要求;(1)每个读者/写者对该存储区进行操作后,即时显示该存储区的全部内容、当前指针位置和读者/写者线程的标识符。
(2)读者应有3个以上,写者应有有两个以上。
(3)多个读者/写者之间须共享对存储区进行操作的函数代码。
《操作系统》课程教案
《操作系统》课程教案一、课程简介1. 课程名称:操作系统2. 课程性质:专业核心课3. 学时:64学时4. 学分:4学分5. 适用对象:计算机科学与技术专业本科生6. 课程目标:使学生掌握操作系统的基本原理、概念和技术,培养学生运用操作系统知识解决实际问题的能力。
二、教学内容1. 操作系统概述操作系统的概念、功能和作用操作系统的发展历程操作系统的类型和结构2. 进程管理进程与线程的基本概念进程的创建、调度和终止线程同步与互斥死锁与饥饿3. 内存管理内存分配与回收策略虚拟内存技术页面置换算法内存保护与共享4. 文件系统文件与文件系统的概念文件存储结构与存取方法目录结构与文件权限文件系统的实现技术5. 输入/输出管理I/O系统结构设备驱动程序中断处理与DMA传输I/O调度策略三、教学方法1. 讲授:讲授操作系统的基本原理、概念和技术。
2. 实验:通过实验让学生掌握操作系统的实际应用和编程方法。
3. 讨论:组织学生进行课堂讨论,培养分析问题和解决问题的能力。
4. 案例分析:分析实际操作系统案例,让学生了解操作系统的应用场景。
四、教学要求1. 知识要求:掌握操作系统的基本原理、概念和技术。
2. 能力要求:具备运用操作系统知识解决实际问题的能力。
五、教学资源1. 教材:选用国内外优秀教材《操作系统原理与应用》等。
2. 课件:制作精美、清晰的课件,辅助教学。
3. 实验设备:计算机及相关硬件设备。
4. 网络资源:利用网络资源,提供相关学术文章、视频教程等,方便学生自主学习。
5. 交流平台:建立课程QQ群、群等,方便学生与教师沟通交流。
六、教学安排1. 课时分配:操作系统概述:4学时进程管理:12学时内存管理:8学时文件系统:8学时输入/输出管理:8学时实验与讨论:16学时2. 教学进度:第1-4周:操作系统概述、进程管理第5-8周:内存管理、文件系统第9-12周:输入/输出管理、实验与讨论七、考核方式1. 期末考试:总分100分,占比80%题型:选择题、填空题、简答题、计算题、案例分析题2. 实验报告:总分20分,占比20%实验内容:根据实验要求完成相关实验操作报告要求:内容完整、分析深入、论述清晰八、课程评价1. 学生评价:课程结束后,对学生进行问卷调查,了解课程收获、教学效果等方面的情况。
武汉理工大学-嵌入式系统的实验报告-中国好学长系列之小灰灰的爸爸
实验报告书实验课程名称嵌入式操作系统开课学院计算机科学与技术学院指导教师姓名毛雪涛学生姓名小灰灰的爸爸学生专业班级中国好学长系列2013 —2014 学年第二学期实验课程名称:嵌入式操作系统实验课程名称:嵌入式操作系统实验课程名称:嵌入式操作系统第二部分:实验调试与结果分析(可加页)五、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)无六、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)一、准备工作建立工作目录,下载源码,安装交叉工具链,步骤如下。
mkdir /root/build_kernelcd /root/build_kernelwget -c /pub/linux/kernel/v2.6/linux2.6.14.1.tar.bz2tar jxvf linux2.6.14.1.tar.bz2export PATH=/usr/local/arm/3.3.2/binPATH二、修改顶层Makefile修改内核目录树根下的的Makefile,指明体系结构是arm,交叉编译工具是arm-linux-。
vi Makefile找到ARCH和CROSS_COMPILE,修改ARCH ?= armCROSS_COMPILE ?= arm-linux-保存退出。
三、设置flash分区此处一共要修改3个文件,分别是:arch/arm/mach-s3c2410/devs.c ;指明分区信息arch/arm/mach-s3c2410/mach-smdk2410.c ;指定启动时初始化drivers/mtd/nand/s3c2410.c ;禁止Flash ECC校验3.1指明分区信息在arch/arm/mach-s3c2410/devs.c文件中:vi arch/arm/mach-s3c2410/devs.c在arch/arm/mach-s3c2410/devs.c文件添加的内容包括:(1)添加包含头文件。
武汉理工操作系统试验报告
实验课成绩学生学号0121110680125武汉理工大学书告实验报学生操作系统实验课程名称院计算机科学与技术学院学开课刘军指导老师姓名名李帅学生姓软件1101 学生专业班级学期 2014 2013 —学年第一实验课程名称:操作系统vi 3.退出三、主要仪器设备及耗材 Ubuntu操作体统编辑器Vi第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)subdir命令建立一个子目录1 使用mkdir 文件的内容。
命令查看file12 使用cat或more 的后面:命令的用法附加到文件file13 将date file1的较详细的信息。
4 利用ls -l file1命令列出文件 ls -l命令查看工作目录内容。
命令将文件fa删除。
再利用利用5 rm fa? 命令查看这两个文件是否都还在工作目录中mv file1 file_a命令,然后用ls6 运行不在工作目录中在工作目录中,而file1file_a显然,只有二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)Free 显示系统中已用空闲内存数量Rm:删除文件或目录三、实验小结、建议及体会操作系Windows对比有些不同需要时间去适应。
通过这次实验对LinuxLinux系统常用的命令。
Linux初步掌握了一些统有了进一步的了解。
通过这仅一个周时间的一些最基本知识,我会在后的学习中不断完善和加以扩充的学习,我们只是了解了linux操作系统实验课程名称:实验项目名称编程CLinux下实验成绩实验课程名称:操作系统实验项目名称SHELL编程和后台批处理实验成绩六、实验小结、建议及体会系统下的编程有了进一步的了解。
也对通过这次实验熟悉了shellLinux编程,对Linux里面编有进一步的认识,如何使用命令来打开文件以及在编辑器vi终端方式使用的编辑器vi 写内容等,。
操作系统课程设计(完整规范版)
操作系统课程设计(完整规范版)一、引言操作系统是计算机系统的核心软件,它管理计算机的硬件资源,为应用程序提供运行环境。
本课程设计旨在通过实践,加深学生对操作系统原理的理解,提高学生的编程能力和系统设计能力。
二、课程目标1. 理解操作系统的基本原理和功能。
2. 掌握进程管理、内存管理、文件系统等核心模块的设计和实现。
3. 熟悉操作系统调度的基本算法。
4. 提高学生的编程能力和系统设计能力。
三、课程内容1. 操作系统概述操作系统的定义、功能和发展历程操作系统的基本组成和结构操作系统的类型和特点2. 进程管理进程的定义、状态和转换进程控制块(PCB)的结构和作用进程同步与互斥进程通信进程调度算法3. 内存管理内存管理的目标连续内存管理技术非连续内存管理技术页面置换算法4. 文件系统文件系统的定义和功能文件的结构和类型文件存储空间管理文件目录管理文件操作5. I/O系统I/O系统的功能和组成 I/O设备管理I/O调度算法缓冲管理6. 系统调用系统调用的定义和类型系统调用的实现机制常用系统调用分析7. 实验与课程设计实验目的和要求实验内容和步骤课程设计题目和要求课程设计报告格式四、课程考核1. 平时成绩(30%):包括课堂表现、实验报告和作业完成情况。
2. 实验成绩(30%):包括实验操作和实验报告。
3. 课程设计成绩(40%):包括设计报告、代码实现和答辩表现。
1. 《操作系统概念》作者:亚伯拉罕·西尔伯斯查茨等2. 《现代操作系统》作者:安德鲁·S·塔嫩鲍姆3. 《操作系统导论》作者:威廉·斯托林斯六、附录1. 课程设计报告模板2. 实验报告模板3. 课程设计答辩评分标准七、课程安排1. 理论学习操作系统概述(2课时)进程管理(4课时)内存管理(4课时)文件系统(4课时)I/O系统(2课时)系统调用(2课时)2. 实验与课程设计进程管理实验(2课时)内存管理实验(2课时)文件系统实验(2课时)I/O系统实验(2课时)课程设计(8课时)课程考核(2课时)八、实验与课程设计指导1. 实验指导进程管理实验:通过模拟进程的创建、撤销、阻塞和唤醒等操作,理解进程管理的原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++语言在程序设计方面得到系统锻炼,为将来进行软件开发打下良好基础。
“读者-写者问题”的编写,花的时间很多,也学到很多东西。
了解支持多道程序的并发操作系统设计中解决资源共享时进程间的同步与互斥的信号量机制。
在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,终于找出了原因之所在,也暴露出了前期我在这方面知识欠缺和经验不足。
实践出真知,通过亲自查阅资料和动手设计,使我掌握的知识不再是纸上谈兵。