您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 《操作系统课程设计》读书工程方案
概要设计5操作系统课程设计读书工程报告学期学院学号姓名2012年12月20日概要设计5一、基本理论阐述随着计算机的普及和计算机科学的不断发展,计算机应用的范围也越来越广泛,人们对操作系统的要求也越来越高,对这门科学的研究也在不断地深入。操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。同时也是计算机系统的内核与基石,操作系统身负诸如管理与内存配置、决定系统资源供需的优先关系、控制输入与输出、文件管理等基本事物,操作系统是一个庞大的管理控制程序,大致可分为5个方面的管理功能:进程与处理机管理、作业管理。存储器管理,设备管理、文件管理。计算机操作系统是由硬件和软件两部分组成。操作系统是配置在计算机硬件上的第一层软件,是对计算机硬件的首次扩充。她在计算机系统中占据了特别重要的地位。而其他的诸如汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。操作系统已经成为现代计算机系统、多处理机系统、计算机网络、多媒体系统以及嵌入式系统中都必须配置的、最重要的系统软件。在多道程序系统中,多个进程的并发执行来改善系统的资源利用率,提高系统的吞吐量,但可能发生一种危险——死锁。所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(DeadlyEmbrace),当进程处于这种状态时,若无外力作用,他们都无法在向前推进。要预防死锁,有摒弃“请求和保持”条件,摒弃“不剥夺”条件,摒弃“环路等待”条件等方法。但是,在预防死锁的几种方法之中,都施加了较强的限制条件;而在避免死锁的方法中,所施加的限制条件较弱,有可能获得令人满意的系统性能。在该方法中把系统状态分为安全状态和不安全状态,便可避免死锁的发生。而最具代表性的避免死锁的算法,便是Dijkstra的银行家算法。利用银行家算法,我们可以来检测CPU为进程分配资源的情况,决定CPU是否响应某进程的的请求并为其分配资源,从而很好避免了死锁的产生。关键词:操作系统、安全状态;安全序列;银行家算法;安全性算法;安全序列。二、当前应用现概要设计5计算机起源于上世纪40年代末期,直到上世纪50年代中期,操作系统都没有出现。程序员对计算机的操作是直接和计算机硬件进行交互。下面我们结合计算机的发展历史来回顾一下操作系统的发展历程。1.第一代计算机(1945-1955):真空管和插件板40年代中期,美国哈佛大学、普林斯顿高等研究院、宾夕法尼亚大学的一些人使用数万个真空管,构建了世界上第一台电子计算机。开启计算机发展的历史。这个时期的机器需要一个小组专门设计、制造、编程、操作、维护每台机器。程序设计使用机器语言,通过插板上的硬连线来控制其基本功能。这个时候处于计算机发展的最初阶段,连程序设计语言都还没有出现,操作系统更是闻所未闻!2.第二代计算机(1955-1965):晶体管和批处理系统这个时期计算机越来越可靠,已从研究院中走出来,走进了商业应用。但这个时期的计算机主要完成各种科学计算,需要专门的操作人员维护,并且需要针对每次的计算任务进行编程。第二代计算机主要用于科学与工程计算。使用FORTRAN与汇编语言编写程序。在后期出现了操作系统的雏形:FMS(FORTRAN监控系统)和IBMSYS(IBM为7094机配备的操作系统)3.第三代计算机(1965-1980):集成电路芯片和多道程序60年代初,计算机厂商根据不同的应用分成了两个计算机系列,一个针对科学计算,一个针对商业应用。现在有许多种操作系统,如Unix,Linux,Solaris,MacOS,MSWindows等。这些操作系统各有优劣,应用的领域也不尽相同,下面分别介绍几种主要的操作系统。1)Windows操作系统这是微软公司推出的多任务操作系统自1992年3月推出Windows3.1以来,先后又推出了WindowsNT、Windows95、Windows98、WindowsXP、Windwos2000,Windwos2003等多个Windows版本。2)UNIX操作系统UNIX是一个多用户、多任务的分时操作系统,最早由美国贝尔实验室的KenThompson和Denwis两人在DEC的PDP-7机上开发的。从1969年至今,它不断发展、演变并广泛地应用于小型机、大型机甚至超大型机上.概要设计53)Linux操作系统Linux是一种基于PC的多用户、多任务操作系统。第一个版本是在1991年8月由芬兰赫尔辛基大学计算机系学生LinuxB.Torvalds在互联网上发布的一套新的系统,供大家下载研究。目前已有多种版本流行。三、对银行家算法的体会我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则给进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量;若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。如果对于个别进程的资源请求索求,先对用户提出的请求进行合法性检查,即检查请求的是不大于需要的,是否不大于可利用的。若请求合法,则进行试分配。最后对试分配后的状态调用安全性检查算法进行安全性检查。若安全,则分配,否则,不分配,恢复原来状态,拒绝申请,输出不存在安全序列。四、课程设计过程中的应用与实践(1)问题描述及分析银行家算法:进程i发出请求申请k个j资源,Requesti[j]=k1)检查申请量是否不大于需求量:Requesti[j]=need[i,j],若条件不符重新输入,不允许申请大于需求量。2)检查申请量是否小于系统中的可利用资源数量:Requesti[j]=available[i,j],若条件不符就申请失败,阻塞该进程,用goto语句跳转到重新申请资源。3)若以上两个条件都满足,则系统试探着将资源分配给申请的进程,并修改下概要设计5面数据结构中的数值:Available[i,j]=Available[i,j]-Requesti[j];Allocation[i][j]=Allocation[i][j]+Requesti[j];need[i][j]=need[i][j]-Requesti[j];4)试分配后,执行安全性检查,调用safe()函数检查此次资源分配后系统是否处于安全状态。若安全,才正式将资源分配给进程;否则本次试探分配作废,恢复原来的资源分配状态,让该进程等待。5)用while循环语句判断是否继续进行资源申请。要求:1)系统根据程序员事先分配好的资源进行安全序列检验,避免产生死锁;2)当用户在进程的索要请求环节,用户输入索求的各类资源数,然后利用银行家算法进行检验,能否给与资源。3)设计出友好的图形化界面,做到很好的人机交互。(2)功能模块及数据结构描述银行家算法数据结构:typedefstruct{charname[N];//进程名intMax[rkind];//进程最大需求资源intAll[rkind];//进程已拥有资源intNeed[rkind];//进程还需要资源intflag;//进程是否已满足最大需求1,表示满足,0表示未满足}Resource;银行家算法函数功能:voidinit(Resourcer[])//初始化资源种类,进程数,并显示出来void_clear(inta[],intn)//清空数组void_avsum(Resourcer[])//统计计算各个资源的使用情况int_compare(intwork[],Resource*source)//比较看进程能不能满足运行所需要的资voidxiugai(intwork[],Resource*source)//修该work的内容,即当前剩下的资源概要设计5void_result(intwork[],Resourcer[])//安全系列检测及银行家算法主题(3)主要算法流程描述银行家算法:我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。安全检测算法:1)设置两个向量①工作向量Work。它表示系统可提供进程继续运行所需要的各类资源数目,执行安全算法开始时,Work=Allocation;②布尔向量Finish。它表示系统是否有足够的资源分配给进程,使之运行完成,开始时先做Finish[i]=false,当有足够资源分配给进程时,令Finish[i]=true。2)从进程集合中找到一个能满足下述条件的进程:①Finish[i]=false②Needor=Work如找到,执行步骤3);否则,执行步骤4)。3)当进程P获得资源后,可顺利执行,直至完成,并释放出分配给它的资源,故应执行:Work=Work+Allocation;Finish[i]=true;转向步骤2)。概要设计54)如果所有进程的Finish[i]=true,则表示系统处于安全状态;否则,系统处于不安全状态。(4)使用说明银行家算法使用说明用例:1.0运行程序后,会弹出银行家算法的初始界面,如下图《1-1》所示,会提示用户输入资源的种类数和进程的个数,银行家初始化《1-1》2.0输入各个进程的资源分配情况,MAX代表本进程需要的总的资源个数,ALL表示已经拥有的资源数,need代表需要的资源数,运行结果如图《1-2》所示。资源分配《1-2》3.0输入现在系统拥有的各类资源总数,程序运行后出现如下《1-3》界面,然后输出是否存在安全序列,若有,输入安全序列,若没有,给出提示。概要设计5安全序列《1-3》5.0进入主菜单,如图《1-4》所示,提示用户选择功能。显示文件内容《1-4》6.0提示用户选择功能,并选择2号功能进行资源索取输入进程的名,和各类资源的索取数量,如图《1-5》所示。《1-5》7.0索求序列安全输出安全序列概要设计5索求序列安全《1-6》8.0继续索求资源没有安全序列《1-7》(5)实验及总结迷宫设计中的问题及解决方案:问题一:进程资源分配的问题问题:当系统所给资源小于已分配的资源数解决方法:可以设置一个容错处理,当系统资源分配不合理的时候,输出提示信息,并用一个循环重新初始化系统资源。概要设计5问题二:进程资源索求越界问题解决方法:可以设置一个循环标志,当循环到一次后没有发现可以分配的进程,直接跳出循环,提示没有安全序列。问题三:初始化各类资源的分配问题:解决方法:可以另外再申请一个临时数组保存中间计算结果。五、读书工程心得总结通过对《操作系统》学生,根据所学知识,通过实验环节,加深对操作系统基本原理和工作过程的理解,提高独立分析问题、解决问题的能力,增强自己的动手能力。学习了一个学期的计算机操作系统课程即将结束。我非常喜欢老师的上课风格,在和谐的的气氛中,同学们学到了更多的关于操作系统的有关知识加上老师的悉心教导,对操作系统有了更加深刻的理解。在初次接触操作系统这门课的时候,我原以为它只是介绍计算机的内部是怎么工作的。可是通过这一学期的学习,我对操作系统有了更深一步的了解,操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为
本文标题:《操作系统课程设计》读书工程方案
链接地址:https://www.777doc.com/doc-4370001 .html