中文题目
英文题目
设 计 报 告
作 者:学生1 学生2 学生3 学生4 学生5
指导教师:李新荣
团队照片
个人资料整理 仅限学习使用
口号:
《操作系统课程设计》任务书
设计目的:
本课程设计是学生学习完《操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 设计时间:
两周。
设计要求:
1.每5人组成一个团队,每个团队开发一个操作系统内核,内核具有传统操作系统的基本功能,包括:处理机管理、内存管理、设备管理、作业管理、用户接口等。每部分的算法可根据需要简单或复杂。 2.课程设计做完后,按组进行验收和答辩,验收和答辩合格后,给出相应的成绩。 3.每个团队写一份课程设计报告,要在报告中写明分工情况。 4.课程报告要按照模版撰写,报告中要写明: <1)软件功能描述 <2)界面说明 <3)程序处理流程 <4)任务的定义及实现
<5)调试过程中遇到的问题和解决的方法 <6)进一步改进方案和应用建议 <7)使用说明书
设计步骤:
1.选定题目,每组提交设计方案<初期检查);
2.工程中期检查,每个团队提交中期检查报告,写出目前开发状况; 3.工程验收和答辩。
成绩评定:
个人资料整理 仅限学习使用
课程设计成绩按100分制计算,评定的依据有考勤、设计文档资料、工程验收和答辩四个成绩组成。总成绩=考勤*10%+设计文档*30%+工程验收*40%+答辩*20%。 提交的资料:
课设完成后要提交工程的设计方案、用户手册、源程序等内容,课设提交具体内容见下面的清单:
课设提交内容清单 内容 提交清单 用户手册 开发文档 <设计报告) 源程序 电路图 应用程序 数据 团队介绍 团队照片 答辩 .txt .doc 详细说明 建议提交内容按照类别存放在不同的目录中,请按照存放路径说明文档存放情况,便于文件管理。 说明系统运行环境,系统配置要求,系统配置方法和系统配置步骤。 建议总字数控制在10000字左右,包括系统方案、功能与指标、实.doc 现原理、硬件框图、软件流程、系统测试方案、测试设备、测试数据、结果分析、实现功能、特色等。 代码规范,注释详细,代码冗余少。 图例清晰,标识详细,规范。 电子文档 用于下载到平台运行的最终可执行程序。 系统运行需要用到的所有数据,以保证系统运行。 系统名称,团队成员,指导教师,联系电话,联系邮件,所在班级等; .doc 团队口号:20字左右,展示团队风采。 .jpg 体现团队风采的一张数码照片 .ppt 每组答辩时所作的ppt 注:
<1)开发文档交打印版,提交完整的设计报告。 <2)刻光盘:以上所有内容均放到光盘中,每组一分 提交时间:12月18号
摘要
在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。 操作系统是计算机系统配置的所有软件中使用最广泛的基础软件,它在整个计算机系统软件中处于中心地位,也是计算机专业课教案中做重要的环节之一。从操作系统自身角度
个人资料整理 仅限学习使用
讲,它不仅很好地体现了计算机日益发展中的软件研究成果,而且也较好地体现了计算机的硬件技术发展及计算机系统结构的用户界面环境。 我们团队共同开发一个简单的操作系统内核,内核具有传统操作系统的基本功能,包括:内存管
理、处理机管理、设备管理、作业管理、用户接口五方面,每部分的算法都由小组成员独立完成。
关键词: 首次适应算法、最佳适应算法、引导扇区、调度
目 录
摘要5
第1章绪论7
1.1课题研究现状分析7
1.11理论研究基础7 1.12技术层面的支持7
第2章系统方案8
2.18 2.28
第3章功能与指标8
3.1通过引导扇区进入系统8
3.2 成功进入系统后显示成功提示字符8
个人资料整理 仅限学习使用
3.3 进入系统后所支持的操作8 第4章实现原理8
4.1 操作系统实现基本原理8 第5章系统实现8
第1章 绪 论
课程设计是《现代操作系统》课程教案必不可缺的一个重要环节,可加深学生对该课程所学内容的进一步的理解与巩固,是将计算机课程与实际问题相联接的关键步骤。通过课程设计,能够提高学生分析问题、解决问题,从而运用所学知识解决实际问题的能力,因而必须给予足够的重视.此次课程设计让大家更加体会到团队的可贵性,让大家挑战一个极限,努力去完成的
个人资料整理 仅限学习使用
自己的那部分任务,从中又让大家更好的去学习自己不会的东西。 1.1课题研究现状分析
1.11理论研究基础
<1)对于内存管理的各种算法的学习,例如:<本次设计用到的)首次适应算法、最优适应算法 <2)对处理机的管理涉及到作业与作业调度、进程调度、实时调度、死锁发现与解决等问题的研究
<3)对设备管理,我们主要研究的是存储器、内存与硬件之间的和谐使用
<4)对作业管理主要研究作业的后备、运行和完成三种状态,期间涉及到先来先服务和短作业优先
调度算法、优先级调度算法和高响应比优先调度算法 <5)对于接口方面涉及到以上五个研究,它将每个研究模块紧密联系起来,最终形成一个统一的完
整的操作系统
1.12技术层面的支持
<1)通过参考资料对算法的进一步学习和实现。
<2)主要技术是通过研究《一个操作系统的实现》和汇编语言的学习 <3)通过C语言和汇编语言,完整最终代码 <4) <5)
第2章系统方案设计
2.1 内存管理设计
此次内存管理的设计采用离散式的分配方式,使用其中分页存储管理方式。
分页式存储管理方式:
分式存储管理方式将进程的地址空间,分成若干页,并为各页加以编号,从0开始。相应的也把内
个人资料整理 仅限学习使用
存空间分成若干个块,同样为他们编号,如0#块。再为进程分配内存时,以块为单位,将进程中的若干页,分别装入到多个可以不相邻接的物理块中。 页表的实现机制:
2.2 处理器设计
处理器管理或称处理器调度,是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等,操作系统就要来处理相应的事件,然后将处理器重新分配。 首先,CPU的内部结构可以分为控制单元,逻辑运算单元和存储单元(包括内部总线及缓冲器>三大部分。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令>,经过物资分配部门(控制单元>的调度分配,被送往生产线(逻辑运算单元>,生产出成品(处理后的数据>后,再存储在仓库(存储单元>中,最后等着拿到市场上去卖(交由应用程序使用>。在这个过程中,我们注意到从控制单元开始,CPU就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束。 CPU工作时会有数据和指令不断与处理机进行交换,如:数据与指令在CPU中的运行 。 数据从输入设备流经内存,等待CPU的处理,这些将要处理的信息是按字节存储的,也就是以8位二进制数或8比特为1个单元存储,这些信息可以是数据或指令。数据可以是二进制表示的字符、数字或颜色等等。而指令告诉CPU对数据执行哪些操作,比如完成加法、减法或移位运算。 另外,CPU每执行完一条指令就去扫描中断寄存器,检查是否有中断发生,若没有中断就继续执行下条指令;若有中断发生就转去执行相应中断处理程序。中断处理过程可粗略的分为以下四个过程: 1. 保护当前正在运行程序的现场;
2.分析是如何中断,以便去执行相应的中断处理程序; 3.执行相应的中断处理程序 4.恢复被中断程序现场
所为硬件的核心处理器承担的工作无疑是繁重的,能否更好地处理好处理机的调度关系到整个系统的效率问题。
用处理机调度应避免死等、死锁等问题,对于此类问题应加以重视。
2.3 设备管理设计
<一)缓冲管理:
1.缓冲管理的基本思想
缓冲管理的基本思想是在CPU和外围设备之间建立缓冲区,用于暂存CPU和外围设备之间交换的
个人资料整理 仅限学习使用
数据,从而缓和CPU和外围设备速度不匹配所产生的矛盾。同时,缓冲区的使用使得一次输入的信息能够多次使用。 2.缓冲池中缓冲区的结构
为了能够深入讨论缓冲池的管理,先来了解缓冲池的结构。通常缓冲池包含多个缓冲区,而每一个缓冲区又由两部分组成,一部分是缓冲首部,它用来标识该缓冲器和用于管理,而另一部分是缓冲体,它用于存放数据,且这两部分存在一一对应的映射关系。对缓冲池的管理是通过对每一个缓冲器的缓冲首部进行操作来实现的。 缓冲池中缓冲区的结构如图5-7所示,其中缓冲首部包括设备号、设备上的数据块号<对于块设备而言)、互斥标识位以及缓冲队列连接指针和缓冲器号等。 • 图--缓冲池中缓冲区的结构
设备号
数据块号
缓冲体
互斥标识位
连接指针
缓冲池中有3种类型的缓冲区,即空白缓冲区(empty>、装满输人数据的缓冲区
缓冲器号
3.缓冲池的缓冲区队列
(in>、装满输出数据的缓冲区(out>。根据这3种类型缓冲区被分别建立在3种不同的缓冲区队列: • • •
(out>。
如下图--缓冲区队列
①空白缓冲队列em,其队首指针为F(em>,队尾指针为T(em>;
②装满输入数据的输入缓冲队列in,其队首指针为F(in>,队尾指针为T(in>; ③装满输出数据的输出缓冲队列out,其队首指针为F(out>,队尾指针为T
个人资料整理 仅限学习使用
F(em> 3 5 9 T(em>F(em>26 8T(in>F(em>10T(out> 4.缓冲
池的工作缓冲区 • 除了三种缓冲队列之外,系统(或用户进程>从这三种队列中申请和取出缓冲区,并用得到的缓冲区进行存数、取数操作,在存数、取数操作结束后,再将缓冲区放入相应的队列。通常,这些缓冲区被称为工作缓冲区。因此,在缓冲池中,有4种类型的工作缓冲区,即: • ①用于收容设备输入数据的收容输入缓冲区(hin)。输入进程要想输人数据时,从空缓冲队列中摘取一个空的缓冲区,作为收容输入工作缓冲区,提供给输入进程往里装入输入的数据,装满后插入到装满输人数据的缓冲区队供计算进程消耗。 • ②用于提取设备输入数据的提取输入缓冲区(sin)。计算进程需要数据时,从装满输入数据的缓冲队列中摘取一个缓冲区,作为提取输入工作缓冲区,将此缓冲区的数据提取完后,它变成了空缓冲区,然后将其插入到空缓冲队中。 • ③用于收容CPU输出数据的收容输出缓冲区(hout)。当计算进程需要将计算结果输出时,从空缓冲队列中摘取一个空缓冲区,作为收容输出缓冲区,计算进程将计算结果放入其中,装满后将其插入装满输出数据的缓冲队中。 • ④用于提取CPU输出数据的提取输出缓冲区(sout>。当输出进程要想输出数据时,从装满输出数据的缓冲区队列中摘取一个装满输出数据的缓冲区,输出进程从中输出数据,输出结束后,将其插入到空缓冲队列中。缓冲池缓冲区(hin)缓冲区(sout>缓冲区(sin)缓冲区(hout)收容输入提取输入收容输出提取输出外围设备CPU • 缓冲池的工作缓冲区如图所示
2.4 用户接口设计
为了使用户能方便的使用计算机,操作系统提供了相应的用户接口,帮助用户快速、有效、安全可靠地操纵计算机中的各类资源,完成相应处理。 为了方便与用户交互,通常把命令解释程序放在用户层,以用户态方式运行。
在练级操作方式下,中断处理程序把用户键入的信息送键盘缓冲区缓存。一旦用户键入回车符,便立即把控制权交给命令解释程序。显然,对不同的命令,应有完成特定功能的处理程序与之对应。可见,命
个人资料整理 仅限学习使用
令解释程序的主要作用是,在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应的处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕显示。若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。 命令解释程序的工作流程如下图所示:
Shell解释程序工作流程:
① 读入用户键盘输入的命令,户键入的信息送键盘缓冲区缓存。一旦用户键入回车符,表示本 命令已结束,于是系统立即把控制权交给命令解释程序。
② 命令解释程序从缓冲区中读取用户输入的命令,对命令进行分析。
③ 重点进程调用fork,为二叉树命令行树中的每一条命令,建立相应子进程。
④ 等待子进程完成。对于“;”型节点,须在其左子树完成后,故终端进程本省需要调用系统
wait4(>,来等待子进程完成,档子进程调用execve(>,子进程根据文件名<即命令名),到目录中查找文件,将他调入内存,执行这个程序;档子进程完成处理后终止,向父进程报告,此时终端进程醒来,在做必要的判别后,继续处理下一条命令,重复上述过程。 ⑤ 对于“&”型节点,在启动左子节点执行后,因它是台命令,不需要等待,因此终端进程不用系
统调用wait4<),而是再执行其右子树。 Shell基本执行过程及父子进程之间的关系如下图所示:
个人资料整理 仅限学习使用
2.5 作业管理设计
1.算法思想
调度是操作系统的根本功能,不同的系统采用的调度算法不尽相同。各个调度算法的设计思想如下: 先来先服务算法:从文件中将作业的JCB各项数据读入到相应数组中,然后利用作业的到达时间arrivetime[10]进行升序排序,并相应调整各个数组的数据,然后输出各项信息。 短作业优先算法:从文件中将作业的JCB各项信息读入到相应数组中,然后利用作业的作业的所需运行时间resquesttime[10]进行升序排序,调整相应数据信息。然后计算作业的其他信息,输出到屏幕上。 高响应比算法:从文件中将作业的JCB各项信息输入到相应数组中,然后对作业的到达时间arrivetime[10]进行遍历,取得最小值,即最先到达的作业,首先被执行。将最先到达的作业移到数组的第一项,然后执行高响应比算法,高响应比算法是首先求出为执行作业的等待时间,存数数组waittime中,然后按根据为执行文件的响应比,取得响应比最大的未执行作业,将该作业的JCB信息,存到数组中, 接着循环以上步骤,直至执行完所有的作业。 2.选择调度算法的原则
<1)选择的调度算法应与系统的整个设计目标一致 <2)注意系统资源的均衡使用 <3)平衡系统和用户的要求。
3.程序具体实现方案
个人资料整理 仅限学习使用
<1)在数据结构上选择单向链队,即后备作业队列的每个结点表示一个作业块,每个作业块即JCB包含如
下信息:作业名,到达时间,所需时间,已运行时间,作业状态,所需主存大小,所需磁带机数目。 <2)提交新作业时,调用函数EnQueue(m_JobName,m_NeedTime>即将作业插入到后备作业队列的末尾。
接着判断内存作业队列是否为空,若为空则将后备作业调入内存运行并启动计时器SetTimer(1,1000,NULL>,更新列表框控件的信息的显示。 <3)由于计时器的时间间隔设置为1000毫秒,故每秒钟将调用一次OnTimer(UINT nIDEvent>函数,检查
作业的运行状态,若作业的已运行时间大于等于所需时间,则将该作业从内存作业队列中撤销,并处理机依照某一个作业调度算法 4.程序流程图 个人资料整理 仅限学习使用 开始初始化作业输入作业名及运行时间提交作业即将作业插入后备队列后备队列是否为空?是结束否在后备队列中依某一种算法选择一个作业投入内存运行CPU时间到 将当前运行中的作业的已运行时间+1已运行时间大于等于是所需时间?否4 个人资料整理 仅限学习使用 第3章功能与指标 3.1通过引导扇区进入系统 3.2 成功进入系统后显示成功提示字符 3.3 进入系统后所支持的操作 第4章 实现原理 4.1 操作系统实现基本原理 当计算机电源被打开时,它会先加电自检,然后寻找启动盘,一旦BIOS发现了引导扇区,就会将内核加载到预设的内存地址处,然后跳转到预设的地址处将控制权彻底交给我们所写的引导代码,最终实现操作系统的引导。 参考文献 1.自己动手写操作系统于渊 编著/2005年08月/电子工业出版社 2.Orange S:一个操作系统的实现于渊 著电子工业出版社2009-6-1 因篇幅问题不能全部显示,请点此查看更多更全内容