《操作系统程序设计-操作系统模拟实现.doc》由会员分享,可在线阅读,更多相关《操作系统程序设计-操作系统模拟实现.doc(45页珍藏版)》请在金锄头文库上搜索。
1、操作系统程序设计操作系统模拟实现 院 系: 计算机科学技术学院软件工程系 班 级: 软件 08 1 班 姓 名: 学 号: 指导教师: 2010 年6月 30日操作系统程序设计任务书一、题目:操作系统模拟实现二、设计要求(1)独立完成(2)良好的交流、沟通能力(3)充分运用前序课所学的软件工程、程序设计等相关知识(4)充分运用调试和排错技术(5)简单测试驱动模块和桩模块的编写 (6)查阅相关资料,自学具体课题中涉及到的新知识。(7)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试
2、与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。三、设计内容及步骤1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。具体要求至少实现进程管理模拟、存储器管理模拟、文件管理模拟,并将几个模块较好地集成一个整体,给出一个较好的用户界面。2.根据实现的功能,划分出合理的模块,明确模块间的关系。3.编程实现所设计的模块。4.程序调试与测试。5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。6.编写课程设计报告;四、课程设计工作计划2010年6月12日前,指导教师讲课,学生根据题目准备资料,需求分析;2010年6月13日,提交软件总体模块结
3、构图和分工方案;2010年6月13日2009年6月16日,完成程序模块并通过独立编译;2010年6月17日2010年6月20日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行,数据必须存储到磁盘文件中,已备验收;2010年6月22日,验收、开始撰写课程设计报告;2010年6月24日前,提交课程设计报告,并将软件的源文件及报告的word文档打印交到老师办公室里。 指导教师签章: 教研室主任签章 操作系统导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2010年 7月 日目录目录I1 概述11.1课程设计目的1
4、1.2本次课程设计对今后的影响1二 需求分析22.1. 引言22.1.1功能需求22.1.2编写背景22.2 任务概述22.2.1 目标22.2.2 系统的特点33 总体设计43.1 整体功能图43.2 抽象数据类型定义44 详细设计75 程序的调试与测试85.1 调试分析85.2测试结果86 用户使用说明107总结与体会11程序清单12参考文献40I1 概述1.1课程设计目的操作系统原理课程设计是软件工程专业实践性环节之一,是学习完操作系统原理课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的
5、设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。1.2本次课程设计对今后的影响通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固操作系统原理课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加理解了各种操作系统如windows系统、Linux系统等的原理!为后续各门计算机课程的学习和毕业设计打下坚实基础。能方便使用和编写出更好的其他软件。同时增加了同学之间的互帮互助精神!共同学习共同进步! 二 需求分析2.1. 引言2.1.1功能需求 通过一学期的学习慢慢发现操作系统原理课程设计是总结一学期
6、成果的最好方式,是学习完操作系统原理课程后进行的一次较全面的综合练习。其目的在于加深对操作系统的理论、方法和基础知识的理解,掌握操作系统结构、实现机理和各种典型算法,系统地了解操作系统的设计和实现思路,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。是一个不可缺少的环节。2.1.2编写背景经过一个学期的操作系统原理课程的学习,我们学到了很多理论上的知识,对操作系统及其各方面的功能有了深刻的认识,但这是远远不够的,我们要讲理论编程实践,虽然我们学习期间做过很多的实验,但是都是针对操作系统的某一块具体的功能的,我们对了解了每块具体的功能的实现,但是,整体说来还是模糊,所以,很有必要将各个模
7、块整合起来,也就是模拟一个操作系统,这样,不仅跟深入学习了各个模块,更认识了一个完整的OS,对我们来说受益匪。2.2 任务概述2.2.1 目标 至少实现进程管理模拟、存储器管理模拟、文件管理模拟,并将几个模块较好地集成一个整体,给出一个较好的用户界面。进程管理模拟:在多道程序运行环境下,进程数目一般多于处理机数目,是的进程要通过竞争来使用处理机。这就要求系统能按某种属案发,动态的把处理机分配给就绪队列中的一个进程,使之运行。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。存储器管理模拟:主存是中央处理器直接存取指令和数据的存储器,能否合理的利用主存,在很大程度上将影响到整个计算机系统
8、的性能。在多道作业和多进程环境下,共享主存空间。当作业执行完毕或进程运行结束后将主存空间归还系统。文件管理模拟:用于用户界面和操作命令在操作系统中的作用,实现操作系统中对文件的管理。2.2.2 系统的特点 本次可设主要是简单的模拟一个操作系统,包括一个主界面,实现了银行家算法、模拟文件管理、主存空间的分配与回收、进程调度等功能。模拟了操作系统的进程管理、文件管理、存储器管理。银行家算法,包括了新加作业、申请资源、撤销作业、查看资源情况四个模块。如果申请资源后系统进入不安全状态,则申请失败。进程调度实现了调度进程的三个主要算法优先数、先来先服务、时间片轮转法。其中,优先数算法中优先数的确定为(5
9、0-进程的服务时间),每轮一次优先数-3。时间片轮转法的时间片由用户自己输入。存储器管理实现了申请空间、撤销作业、显示空闲表等功能。如果空闲空间不足则申请失败。模拟文件管理很全面,包含了创建目录、删除目录、改变目录、创建文件、删除文件、显示目录的功能。另外,我还加了回到根目录的功能 3 总体设计3.1 整体功能图银行家算法进程调度存储器管理退出主界面新加作业申请资源撤销作业查看资源优先数时间片轮转先来先服务申请空间撤销作业显示空闲表改变目录创建目录创建文件删除文件删除目录显示目录模拟文件管理帮助3.2 抽象数据类型定义银行家算法:const int MAX_P=20; / 进程的最大容量con
10、st int MAXA=10; / A类资源的最大数量const int MAXB=5; /B类资源的最大数量const int MAXC=7; /C类资源的最大数量typedef struct anode int a,b,c,/*三种资源总数*/remain_a,remain_b,remain_c/*三种资源剩余数*/; bank;typedef struct node1 char name20; int a,b,c,need_a,need_b,need_c; process; / 进程的结构体结点模拟文件管:typedef struct bnode char name50; int typ
11、e;/*0代表目录,1代表普通文件*/ struct bnode *next,/* 兄弟节点*/*sub,/*第一个子节点*/*father/*父节点*/; int size; /*文件的大小*/dirnode;dirnode *workdir;/当前工作目录 dirnode root;/根目录 char path100;/定义路径信息 const int MAXJOB = 100;/定义最大记录数存储器管理:首先需要建立空闲区数据文件,空闲区数据文件包括若干行,每行有两个字段:起始地址,内存块大小(均为整数),各自段一逗号隔开。空闲区数据文件:0,1010,0818,1028,0634,10
12、44,09空闲表的结构:typedef struct cnodeint start;int length;char tag20;job; job freesMAXJOB;/定义空闲区表 int free_quantity;job occupysMAXJOB;int occupy_quantity;进程调度:进程存在的标识是进程控制块(PCB),进程控制块结构如下:typedef struct dnode char name10; int prio; int round; int cputime; int needtime; int count; char state; struct dnode *next;PCB; / 进程的PCBPCB *finish,*ready,*run,*r;4 详细设计基本操作:银行家算法:银行家算法主要由5个函数实现了四大功能,即新加作业、为作业申请资源、撤销作业、查看资源情况。void yinitial() /初始化函数void add() / 新加作业函数void bid() /为作业申请资源void yfinished()/撤销作业void yview()/查看资源情况模拟文件管理:模