资源预览内容
第1页 / 共25页
第2页 / 共25页
第3页 / 共25页
第4页 / 共25页
第5页 / 共25页
第6页 / 共25页
第7页 / 共25页
第8页 / 共25页
第9页 / 共25页
第10页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计报告(2011- 2012 年度第1学期)名 称: 操作系统原理课程设计 B 院 系:信息工程系班 级:软件09k2学号:091909020227学生姓名:闫雪峰指导教师:郭丰娟 张琦设计周数:1成 绩:日期:2011年11月25日操作系统原理课程设计B课程设计任务书一、目的与要求1. 理解和掌握操作系统的基本概念、基本组成与工作原理;2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。二、主要内容采用某种程序设计语言, 设计与开发一个仿真操作系统,要求具备进程调度、 存储器管理、文件及设备管理等基本功能,具体内容包括:1. 模拟单处理器系统的进程调度,加深对进程的概念及进程调度算法的理解;2. 编写一个多线程程序,加深对现代操作系统中线程的理解;3. 编写和调试一个银行家算法程序,加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法;4. 用可变分区算法模拟主存的分配和回收,加深对存储器管理的理解,熟悉各种主存 分配方法;5. 模拟虚拟存储管理中缺页中断及页面置换算法,加深对虚拟存储器管理的理解,熟 悉各种页面淘汰算法;模拟设备的分配与回收,加深对设备管理的理解;模拟文件 管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解;模拟磁盘调度的过程,加深对磁盘存储器管理的理解,熟悉各种磁盘调度算法。6. 综合以上实验的结果,并进行集成与设计,开发出一个小型虚拟操作系统。对以上课程设计内容,将根据学生的专业与实际情况进行调整,某些题目为选作题目。三、进度计划序号设计(实验)内容完成时间备注1熟悉开发环境及程序设计语言1天2系统的分析、设计2天3调试与集成1天4验收,提交实验报告1天四、设计(实验)成果要求至少完成主要内容中的 3项,统一使用课程设计报告书,文字清楚、工整。五、考核方式实验结果(60%) +实验报告(30%) +实验过程表现(10%)学生姓名:指导教师:2011年11月25日、课程设计(综合实验)的目的与要求1. 理解和掌握操作系统的基本概念、基本组成与工作原理;2. 理解和掌握操作系统中主要功能模块的工作原理及其实现算法;3. 掌握软件模块设计技能;熟悉并能较好地利用软件开发环境独立编程、调试和分析程序运行情况,逐渐形成创新思维和从事系统软件的研究和开发能力。、设计正文实验1单处理器系统的进程调度1.1实验目的在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态。当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的处理器调度,帮助学生加深了解处理器调度的工作。1.2实验要求1 设计一个按时间片轮转法实现处理器调度的程序,每个程序由一个PCB表示。2 程序执行中应能在屏幕上显示出各进程的状态变化,以便于观察调度的整个过程。1.3实验原理和设计进程控制块PCB的格式为:指针一一进程按顺序排成循环队列,用指针指出下一个进程的进程控制块的首地 址,最后一个进程的指针指出第一个进程的进程控制块首地址。要求运行时间一一假设进程需要运行的单位时间数。已运行时间一一假设进程已经运行的单位时间数,初始值为“0”状态有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用0表示。当 一个进程运行结束后,它的状态为“结束”,用1表示。(1) 运行处理器调度程序前,输入进程数并且为每个进程设置所需的服务时间;(2) 把各个进程按顺序排成循环队列,用指针指出队列连接情况;由于是模拟程序,在时间片轮转的前提下,每次使得相应进程:执行时间=已执行时间+1 ;(4)输出运行细节。1.4实验结果就绪队列情况进程名字需要时间运行时间状态1 1B2 50R3 50E第2次运行:当前运行的程序为2就绪队列情况进程名字离要时间运行时间状态2 51n3 5&B141E实验2:主存储器空间的分配和回收2.1实验目的一个好的计算机系统不仅要有一个足够容量的、存取速度高的、稳定可靠的主存储器,而且要能合理地分配和使用这些存储空间。当用户提出申请存储器空间时,存储管理必须根据申请者的要求,按一定的策略分析主存空间的使用情况,找出足够的空闲区域分配给申请者。当作业撤离或主动归还主存资源时,则存储管理要收回作业占用的主存空间或归还部分主存空间。主存的分配和回收的实现虽与主存储器的管理方式有关 的,通过本实验帮助学生理解在不同的存储管理方式下应怎样实现主存空间的分配和回 收。22实验要求1 在可变分区管理方式下采用最先适应算法实现主存分配和实现主存回收。2打印空闲区说明表的初始状态,作业 4的申请量以及为作业 4分配后的空闲区 说明表状态;再依次打印作业 3和作业2的归还量以及回收作业 3,作业2所占主存后 的空闲区说明表。2.3实验原理和设计1.可变分区方式是按作业需要的主存空间大小来分割分区的。当要装入一个作业 时,根据作业需要的主存量查看是否有足够的空闲空间,若有,则按需要量分割一个分区分配给该作业;若无,则作业不能装入。随着作业的装入、撤离,主存空间被分成许 多个分区,有的分区被作业占用,而有的分区是空闲的。例如:05k10k14k26k其中,起址指出一个空闲区的主存起始地址。长度指出从起始地址开始的一个连续空闲的长度。2.4运行结果请主_ FT ,=2入时分装東少霽10多 畑澈址la煜W囂林忒名始sites 龙Bfc黑簫讶鶴 內将内賣进进逬进进进进进 入入入入入入入出入入入岀寸5 5 r*n 的间小 禽存 :0入行内Z1入行内 一養运的宀黨运的的间小存时丈KS存2:0存:1詹翦嘗耳麒菸进程占用內存大技】空间说明表当前内存分区表总大小为4个袤项长度2实验3:多线程游戏(贪吃蛇)3.1实验目的(1 )任何语言,实现多线程游戏,如龟兔赛跑,摇奖机等。3.2实验原理和设计(1)vb实现贪吃蛇游戏,用到timer控件实现多线程的控制,实现贪吃蛇的基本功能(2)连接access数据库,将最高分信息存到数据库。3.2实验结果八斗yjito固三、课程设计(综合实验)总结通过本次课程综合实验,我对存储器内部进程调度、空间管理和页面置换等相关算法有 了更加深刻的理解,同时锻炼了动手能力,为以后更加深入地学习操作系统这门课程打下了 良好的基础。值得一提的是,本次实验对设计多线程游戏有了些许心得,兴趣所致,今后当加强这方面的学习,开发出一些好玩的小游戏。计算机相关的学科离不开上机实践,只有通过实践,才能更好地掌握知识,自己以后当主动上机实践相关理论知识。四、参考文献1 计算机操作系统,西安电子科技大学出版社,2007年5月第3版;汤小丹 梁红兵哲凤屏汤子嬴编著。2 游戏开发教程附录实验一/ timer.cpp :定义控制台应用程序的入口点#include stdafx.hint _tmain( int argc, _TCHAR* argv)return 0;#include#include #include #define TIME 1typedef struct procuderint chrName;/进程名字int intRoundTime;int intRunningTime; /已经运行时间char chrFlag;struct procuder *pointerNext; procuder;int main()int intTotal;/ 进程总数int i;int intCounter=1; / 计数标记procuder *pNew; /新申请的节点procuder *pPointer; / 当前程序指针procuder *pPrevious; /当前指针的前一个指针procuder *pPrint; /输出打印的指针pPointer=(procuder *)malloc( sizeof(procuder);/初始化指针节点 pPrevious=pPointer; /将俩个指针初始化在一起printf(请输入总数 total:);scanf(%d,&intTotal);for(i=1;iv=intTotal;i+) /初始化各个进程pNew=(procuder *)malloc( sizeof(procuder);/ 申请新节点 pPrevious-pointerNext=pNew; 将新申请节点与前一个节点连接起来 pPrevious=pNew;将指示指针移到新申请的指针printf(请输入第d进程名字:,i);scanf(%d,&(pNew-chrName);printf(请输入第4要求运行时间:,i);scanf(%d,&(pNew-intRoundTime);pNew-chrFlag= R; pNew-intRunningTime=O; 初始化标记为和运行时间 pPrevious-pointerNext=pPointer-pointerNext; /设成循环队歹廿 pPointer=pPointer-pointerNext;while (pPointer-pointerNext!=pPointer) /运行完剩一个进程结束pPointer-intRunningTime=pPointer-intRunningTime+TIME; / 模拟进程运行/输出当前的状态,代码自己写把printf(” 第d次运行:当前运行的程序为 dn,intCounte叶+,pPointer-chrName);printf(n 就绪队列情况nn进程名字需要时间运行时间状态n);if (pPointer-intRunningTimeintRoundTime) 判断当前进程是否完成未完成pPointer=pPointer-pointerNext; /轮转至U下一个时间片 pPrevious=pPrevious-pointerNext; /previous后移else 完成了将当前节点剔除pPointer-chrFlag= E;/ 设置标志位pPrevious-pointerNext=pPointer-pointerNext; /剔除当前节点 pPointer=pPointer-pointerNext; /运行指针后移pPrint=pPrevious;while(pPrint-pointerNext!=pPrevious) /输出各个进程的状
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号