1、精选资料防 灾 科 技 学 院毕 业 设 计题目操作系统进程管理演示系统的设计学生姓名学号系 别灾害信息工程专 业计算机科学与技术班级开题时间答辩时间指导教师职 称可修改编辑操作系统进程管理演示系统的设计作 者: xxxxx指导教师: xxxxx摘要 操作系统的实际教学中很难用ppt等来直观可视化地演示进程管理各部分的工作原理。所以,开发一个操作系统进程管理演示系统来辅助操作系统教学是很有必要的。本系统采用Microsoft Visual Studio2013和cocos code ide编译器,以c#和lua语言为开发工具,主要实现了进程控制、进程调度、进程同步、进程通信、死锁避免五大模块的
2、功能。本系统具有可视性,简单,直观,便于老师教学,易于学生理解等优势。关键词:操作系统 ; c#; lua; cocos code ide Design of Operating System Process Management Demonstration SystemAuthor: xxxxInstructor: xxxxAbstract In practical teaching operating system hard to use PPT to visually demonstrate the principle of process management section. The
3、refore, development of teaching management system to support operating system an operating system process when necessary.The system uses Microsoft Visual Studio 2013 and Cocos code IDE compiler, and LUA languages in c # as the development tool, the main achievement of the process control, process sc
4、heduling, interprocess communication, process synchronization, deadlock avoidance of five modules of functionality.This system has visibility, simple, intuitive, convenient for the teacher teaching, easily understood student and so on.Keywords: Operating system;C#; lua; cocos code ide精选资料目 录1引言11.1
5、课题背景11.2 国内外研究现状11.3本课题研究的意义11.4本课题的研究内容和目标12系统分析12.1可行性分析12.2需求分析22.3系统的主要技术分析32.4系统开发平台52.5系统运行环境63系统总体设计73.1系统结构设计73.2系统各功能模块介绍84 系统详细设计14.1系统进入选择界面的设计与实现14.2实际操作界面的设计与实现44.2.1进程控制模块44.2.2进程调度模块94.2.3进程同步模块144.2.4进程通信模块204.2.5死锁避免模块215 系统测试245.1测试目的245.2测试方法245.3测试实例24结论34致谢35参考文献36附录1可修改编辑精选资料1引
6、言1.1 课题背景随着科技的不断进步,人类生活中的各个方面都在走向简单,科技能帮助人类更加轻松的完成想要完成的事情。这涉及到整个人类社会的各个方面,课堂教学就是其中之一。现如今的课堂教学相较以前,变得更加“形象”。随着教学理念的改变,以前传统教学模式中,“知识加工”和“问题解决”的思考过程等不可见的环节已经被改变。教师们开始利用科技技术与相关设备,引入ppt,视频,flash等手段,将不可见的,枯燥的理论加以转换,变为可视的画面1。让学生从关注问题的“答案”,变为理解“答案的生成过程”。从而增加教学的质量,减少学生的学习压力。其中,针对教学内容制作的教学辅助演示系统,更是能帮助老师和学生的一种
7、方法。1.2 国内外研究现状目前在欧美等发达国家,针对教学内容制作的教学辅助演示系统有很多。如在计算机方面,化学方面,物理方面等。老师使用相当普及。在国内,这种专门针对教学内容的辅助演示系统还不是特别多。如果能加以推广,会更加方便课堂教学2。1.3本课题研究的意义在高校教学中常常会遇到许多生涩抽象的课程,这些课程的学习往往让学生难以理解,加大教师的教学难度,这种现象在计算机专业尤为明显。目前在高校教学中往往采用ppt,视频,flash等手段来增加授课效果,使教学过程更加生动形象,但这些并不能完全满足于日常教学,这在操作系统这门学科中尤为突出。所以开发一个操作系统进程管理演示系统来辅助操作系统教
8、学是很有必要的。1.4本课题的研究内容和目标 设计一个针对操作系统学科的操作系统进程管理演示系统,以Microsoft Visual Studio2013和cocos code ide为编译器,采用c#和lua语言来进行编译。系统由5个模块组成,功能如下:(1)进程控制模块:进程的创建(可以分为自动创建、手动创建)、进程的撤销、进程状态的变化、进程间的祖先关系、进程对各类资源的使用情况等。(2)进程调度模块:需要实现先来先服务、短作业优先、高响应比调度算法。(3)进程同步模块:生产者-消费者问题,哲学家进餐问题。(4)进程通信模块:实现共享内存、消息队列和管道通信三种通信方式。(5)死锁避免模
9、块:实现银行家算法。系统的特点要求操作界面清晰美观。使用者操作起来简单,容易上手。系统的功能要求实用,不繁琐。可修改编辑2系统分析2.1可行性分析对于可行性分析4,我从技术、经济、使用和法律4个方面着手。用最小的代价,最短的时间,确定操作系统进程管理演示系统的目标和规模是否可行,是否能解决问题。2.1.1技术可行性本系统选择的编译语言是c#和lua。因为该系统为可视化的界面系统。所以用c#和lua来编译会比较简单,适合。这两种语言均为时下最流行的高级程序设计语言之一。拥有编译简单,方便,可靠,安全,可移植性,灵活等优点。所以该系统在技术上是可行的。2.1.2经济可行性本系统的开发编译器软件是V
10、isual Studio 2013和cocos code ide。这两个软件在微软的官方网站能够下载到免费的试用版本。而编译语言也是开放的。因此,该系统的开发成本基本为零,投入的只有人力成本和硬件成本。这两者也基本可以忽略不计。因为本系统没有了平台的限制,所以系统的独立性很高,与其他的系统相比,前期投入的资金和精力较少,让开发变得简单。能用较小的成本,达到预期中的要求。而系统对于运行环境没有要求,不会因为软硬件的限制了增加成本,只需要利用现有的计算机设备即可。所以该系统在经济上是可行的。2.1.3操作可行性本系统在操作难易程度上并不复杂,可以说相当简单。操作界面简洁明了,附有专门的使用说明,使
11、用者能轻松上手,无需专门训练了解。所以该系统在使用上是可行的。2.1.4法律可行性本系统全部采用的是开源软件,可以在网络上轻松获得认证,不管被用于任何用途都不会出现法律问题。所以该系统在法律上是可行的。综上所述,操作系统进程管理演示系统在技术、经济、使用、法律4个方面均为可行。目标和规模已经明确。该系统的开发是可行的。2.2需求分析在系统的可行性分析阶段,已经证明了系统开发平台和系统本身的可行性。接下来为了明确系统设计的目标,我将对系统进行需求分析。2.2.1用户需求高校教学中常常会遇到许多生涩抽象的课程。这些课程的学习往往让学生难以理解,加大教师的教学难度,这种现象在计算机专业尤为明显。目前
12、在高校教学中往往采用ppt,视频,flash等手段来增加授课效果,使教学过程更加生动形象,但这些并不能完全满足于日常教学。操作系统的实际教学中很难用ppt等来直观可视化地演示进程管理各部分的工作原理。所以,开发一个操作系统进程管理演示系统,通过可视化教学的方式来辅助操作系统教学是很有必要的。2.2.2性能需求(1) 实用性:系统要符合用户制定的需求,功能要符合用户的使用习惯和使用要求。系统界面要简洁,方便,直观。(2) 可维护性:使用者对系统的功能可以清晰的了解,并简单的使用该系统。根据需求,在系统上能轻松的进行维护。并且在功能的设计上还将考虑系统的可扩展性,根据需求的改变增加功能。(3) 安
13、全性:制作完成的系统要保证系统运行时所用到的各类信息的使用安全。防止使用人信息泄露。(4) 可移植性:系统开发结束后,需要能够在时下主流的所有操作系统所构成的环境中正常使用。2.2.3功能需求本系统的设计的目的是方便教师的课堂教学,提高课堂的教学效果。同时,也可以让学生能更好的理解教学内容,帮助学生建立进程管理部分的整体概念,提高学习效率。具体来说,本系统将会实现以下目标:(1)进程控制模块:进程的创建(可以分为自动创建、手动创建)、进程的撤销、进程状态的变化、进程间的祖先关系、进程对各类资源的使用情况等。(2)进程调度模块:需要实现先来先服务、短作业优先、多级反馈队列、时间片轮转、高响应比调
14、度算法。(3)进程同步模块:利用多线程技术编写生产者-消费者问题,哲学家进餐问题、读者-写者问题。(4)进程通信模块:实现共享内存、消息队列和管道通信三种通信方式。(5)死锁避免模块:实现银行家算法,能够计算银行家算法。2.3系统的主要技术分析2.3.1 Lua语言1993年,巴西里约热内卢天主教大学的三名教授在多日的努力后创造了一门新的编程语言。这门语言就是时下最为火热的编程语言之一Lua语言5。Lua是西班牙语里的单词,意思是美丽的月亮。这正是创造者们对它的期望,希望它成为一门简单,美妙,有趣不乏味的编程语言。Lua语言设计者的初衷是制作一门大多数人都能使用的脚本语言,它具有良好的嵌入性,
15、方便切入到其他应用程序中。所以它的设计原则就是四点:简单,小巧,具有可移植性、编译快速。语言的实现是运用ANSIC编写的,是将整个C程序库嵌入到所需要的程序中。Lua语言发展到今天,已经更新了多个版本,版本一直遵循着开源的传统原则,方便了广大的程序员。Lua语言在多个领域都有着广泛的应用,例如游戏开发、智能机器人、图像图形的处理等等。其中以游戏开发是最多的一个。许多著名的游戏,比如魔兽世界的插件、仙剑奇侠传五、愤怒的小鸟、部落冲突等都是使用Lua语言来进行编写的。配合着相应的游戏引擎,实现所需要的命令。Lua是一个轻量级脚本语言,也是一种便于嵌入目标程序的语言。Lua让C/C+编写的代码调用L
16、ua脚本,同时C/C+函数也能够在 Lua 脚本中调用。与 C/C+代码的交互性,让 Lua在应用程序开发中有着广泛的应用基础。很多应用程序使用 Lua 作为自己的嵌入式脚本语言,以此来实现可配置性、可扩展性。2.3.2 Microsoft Visual Studio 简介Microsoft Visual Studio6(简称VS)是由美国Microsoft公司开发并发布的整合了多种编译语言的编译器。Microsoft Visual Studio是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于
17、微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework。Visual Studio是时下最流行的基于Windows平台的集成开发环境。随着版本更新,VS已经拥有了多个版本,最新版本为2015版。Microsoft Visual Studio 2013是Microsoft公司于2013年发布的Microsoft Visual Studio版本。新增了许多功能,如下:(1)代码信息的指示;(2)团队工作室(Team Room);(3)身份识别;(4).NET内存转储分析仪;(5)敏捷开发项目模板;(6)Git支持
18、单元测试,也支持单元测试之上的测试;2.3.3 进程调度问题 简介进程调度7是进程管理中最基本的功能。它的功能是创建一个新的进程,当一个进程完成工作后将其停止。或者当一个进程因为某种事件无法运行时将其停止。还可以负责进程运行时的状态转换。例如,当一个正在执行的进程因为某个事件导致无法继续运行,则需要将它的状态转换为阻塞状态;而当合适的事件出现,导致该进程能够运行时,又将该进程的状态转换为就绪状态。2.3.4 生产者-消费者问题 简介生产者-消费者问题8 (producer-consumer)属于进程同步问题。它描述的问题是:现有许多生产者(producer)进程正在生产所需要的产品。又有许多消
19、费者(consumer)进程,它们会去消费掉生产者生产的产品。如果生产者进程和消费者进程想要同时进行的话,那么在两者之间就必须设置一个拥有许多缓冲区的缓冲池。生产者进程会将它生产的产品放入其中一个缓冲区中。而消费者进程会从这个缓冲区拿走它所需要的产品。尽管所有的生产者进程和消费者进程都是在执行各自的任务。但是两者之间也有着相对的联系。因为如果缓冲区是空的,那么消费者进程是无法从中取得产品的;同时如果缓冲区满了,那么生产者进程也无法向其中投放产品。2.3.5 哲学家进餐问题 简介哲学家进餐问题问题9(The Dinning Philosophers Problem)属于进程同步问题,它的发明者叫
20、做Dijkstra。它描述的问题是:现有5个哲学家,他们有着一张圆形桌子,并且均匀的坐在桌子边。他们的生活就是思考和吃饭。他们两两之间都有一支筷子,当他们拿起身边的两支筷子时,他们就可以吃饭了。但是,当有一人吃饭时,这人旁边两位就不能吃饭了,因为他们没有筷子。吃饭完成后,筷子会放回原处。2.3.6 读者-先写问题 简介读者-先写问题10(Reader-Writer Problem)是指保证一个Writer进程必须与其他进程互斥地访问共享对象的同步问题。一个数据文件或者记录,可以被多个进程共享。我们把只要求读这个文件的进程叫做“Reader进程”,其他进程则称为“Writer”。允许多个进程同时
21、读一个共享对象,因为读操作不会使数据文件变得混乱。但是不允许一个Writer进程和其他Reader进程或Writer进程同时访问共享对象,因为这种访问会引起混乱。2.3.7 死锁问题 简介死锁11(Deadlock)是指当有多个进程同时在运行时,进程之间会进行资源的争夺,呈现分庭对峙的情形。当发生这种对峙时,如果没有其他的外力对其进行干预,进程们将无法继续运行,程序卡死。引起死锁的原因:(1)竞争资源。系统中拥有多种资源,如打印机,公用队列,运行内存,CPU等。当进程所需要的资源量超出了系统所提供的资源量,就会引起进程争夺资源,产生死锁。(2)进程间推进顺序非法。进程在运行的时需要有正确的请求
22、和释放资源的顺序,当这个顺序不正确的时候,就可能引起资源的不足,从而引发死锁。2.3.7 银行家算法 简介银行家算法12是由Dijkstra设计完成的算法。它的作用是监测资源的数量,从而得出结论是否会产生死锁。该算法早期的作用是作为银行系统现金贷款的发放的计算,所以因此得名。算法将进程的数据分为若干类型,分别为:可利用资源(Available)、最大需求矩阵(Max)、分配矩阵(Allocation)、需求矩阵(Need)。几者的关系为:需求矩阵i,j=最大需求矩阵i,j-可利用资源i,j 132.4系统开发平台操作系统:Microsoft Windows 8中文版;内存:8G;硬盘:1T;开
23、发软件:Microsoft Visual Studio2013;cocos code ide ;开发语言:c#、lua;2.5系统运行环境系统的运行需要硬件的支持。为了保证本系统能够流畅的目标硬件上可靠,效率的运行,最好保证该系统运行的环境为如下条件: 操作系统:Windows XP/7/8;内存:1G以上;硬盘:20G以上;编译器:Microsoft Visual Studio2008以上版本;cocos code ide;3系统总体设计3.1系统结构设计3.1.1系统功能描述需要实现的功能如下:(1)进程控制模块:可以是实现进程的创建(进程名,申请I/O数量,父进程,执行时间,申请内存大小
24、)、进程的创建队列显示、进程状态的显示(活动就绪,静止就绪,活动阻塞,静止阻塞,执行队列)、进程状态之间的互相转换、进程对各类资源的使用情况等。(2)进程调度模块:需要实现先来先服务算法、短作业优先算法、多级反馈队列算法、时间片轮转算法、高响应比调度算法。(3)进程同步模块:利用Lua语言编写生产者-消费者问题,哲学家进餐问题、读者-写者问题。将问题制作成相应的可视化动画界面,展示三个问题。例如:生产者-消费者问题,分别制作一个生产池,缓冲池,消费池,将进程用产品图片代替,通过图片的增减来体现问题的实质。(4)进程通信模块:实现共享内存、消息队列和管道通信三种通信方式。用相应的可视化界面展示。
25、例如:管道通信,在传递信息时,用水通过管道的动画形式显示信息的传送。(5)死锁避免模块:实现银行家算法,通过已知的信息,做到判断是否会产生死锁,如果不会产生死锁,显示资源的分配情况。 3.1.2系统功能模块本系统的功能模块图,请参见图3.1:图3.1系统功能模块图3.2系统各功能模块介绍本系统分为五个模块,分别是进程控制模块,进程调度模块,进程同步模块,进程通信模块,死锁避免模块。各模块功能服务介绍如下:(1)进程控制模块进程控制模块主要是为了让学生知道进程的活动就绪,静止就绪,活动阻塞,静止阻塞,执行队列等几种状态。实现几种状态间的转换。实现进程的创建,进程的内容包括进程名,申请I/O数量,
26、父进程,执行时间,申请内存大小等创建的进程会在数据表中显示出来。进程处于的活动就绪,静止就绪,活动阻塞,静止阻塞,执行队列状态会显示。进程状态之间能根据服务的方式而相应的转换。进能够显示进程占有资源占总资源的百分比。(2)进程调度模块进程调度模块,是为了让学生知道几种调度算法的计算方式。实现先来先服务算法、短作业优先算法、多级反馈队列算法、时间片轮转算法、高响应比调度算法。针对相应算法,能够通过进程的到达时间和服务时间计算进程的工作顺序、周转时间、完成时间、代权周转时间。(3)进程同步模块根据生产者-消费者问题,哲学家进餐问题、读者-写者问题三个问题的具体概念,设计相应的情景,将问题制作成相应
27、的可视化动画界面,展示三个问题。 生产者-消费者问题,分别制作一个生产区,缓冲区,消费区,将进程用产品图片代替,通过图片的增减来体现问题的实质。设计一张桌子,桌子周围均匀坐有5个哲学家,他们两两之间有一支筷子,当有一个哲学家进餐时将会使用身旁的两支筷子,而邻座的两个哲学家将不能进餐,即不能使用筷子。(4)进程通信模块进程通信模块是为了让学生了解进程间的通信方式,通过将三种典型的通信方式简化,变为简单的文字传递形式。进程通信的三种方式:共享内存、消息队列和管道通信。用相应的可视化界面展示,能够简单是说明三者的不同通信方式。管道通信,在传递信息时,用水通过管道的动画形式显示信息的传送。共享内存,设
28、计一个发送池,共享池和接收池。发送池发送信息,会出现在共享池中,接收池会从共享池中接收信息。当共享池为空时,接收池无法接收信息。(5)死锁避免模块银行家算法是为了避免系统进程发生死锁实现银行家算法的计算。通过已知的信息,做到计算进程顺序,相应资源分配量,判断是否会产生死锁,如果产生死锁,相对应的进程将会显示false。如果没有产生死锁,所有进程将显示true。 4 系统详细设计前文已经分别介绍了系统的需求分析和系统结构。并且将系统划分为五个模块,加以区分各个模块的具体功能。现在所要做的就是确定每个模块具体执行过程,即系统的详细设计。4.1系统进入选择界面的设计与实现4.1.1系统开启主界面操作
29、系统进程管理演示系统拥有多个模块,大部分模块由系统的主界面所连接。用户可以通过系统主界面进入相应的模块进行操作。同时,主界面除了和几大功能模块连接,还和系统的帮助和说明模块连接。用户可以通过主界面进入帮助和说明模块,了解系统的模块构成和使用方法。主界面如图4.1所示:图4.1 系统主界面这个模块使用的控件有两种:button、 label 14。label的作用是用来制作系统的标题和相关文字说明。button的作用是用来制作连接各模块的按钮,点击相应的按钮进入相应的模块界面。操作系统进程演示管理系统主界面控件的主要属性数据如下表4.1:表4.1 系统主界面控件的主要属性数据控件类型控件名称功能
30、主要属性设置LabelMainname显示系统的名称Text=操作系统进程演示系统ButtonZhu1进程控制的链接按钮Text=进程控制ButtonZhu2进程调度的链接按钮Text=进程调度ButtonZhu3进程同步的链接按钮Text=进程同步ButtonZhu4进程通信的链接按钮Text=进程通信ButtonZhu5死锁避免的链接按钮Text=死锁避免ButtonZhu6进程控制的链接按钮Text=进程控制ButtonZhu7帮助界面的链接按钮Text=帮助ButtonZhu8说明界面的链接按钮Text=说明本界面主要是将button和相应界面模块连接到一起。所用的代码主要是模块链接代
31、码,如下:链接模块的文件名 自定义模块名称 = new 链接模块的文件名(); this.Hide(); /这里是新窗口打开后,将前一个窗口关闭。 自定义模块的名称.Show();退出按钮的作用是退出打开的系统,代码如下:Application.Exit();/结束当前的程序4.1.2系统说明界面系统说明界面是为了向使用者说明系统的制作原因和制作目标。对系统进行相关的解释。标明制作人和版权问题。说明界面如图4.2所示:图4.2说明界面这个模块使用的控件有三种:button、listbox、label。label的作用是用来制作界面的标题。button的作用是作为返回主界面的按钮,点击按钮返回系
32、统的主界面。listbox是用来用来显示说明内容。说明界面控件的主要属性数据如表4.2所示:表4.2 说明界面控件的主要属性数据控件类型控件名称功能主要属性设置LabelShuo1显示系统的名称Text=系统说明ButtonButton1返回主界面的链接按钮Text=返回ListboxListbox1显示说明内容4.1.3系统帮助界面系统帮助界面是为了向使用者说明系统的主要结构和系统的主要结构。并对系统的操作方法进行讲解,让使用者能够正确使用系统。帮助界面如图4.3所示:图4.3说明界面这个模块使用的控件有三种:button、listbox、label。label的作用是用来制作界面的帮助标题
33、。button的作用是作为返回主界面的按钮,点击按钮返回系统的主界面。listbox是用来用来显示帮助的具体内容。说明界面控件的主要属性数据如下表4.3所示:表4.3 说明界面控件的主要属性数据控件类型控件名称功能主要属性设置LabelBangzhuzt显示系统的名称Text=系统帮助ButtonButton1返回主界面的链接按钮Text=返回ListboxListbox1显示说明内容4.1.4进程通信选择界面系统进程通信选择界面是为了让使用者选择进程通信的三种通信方法。进程通信选择界面如图4.4所示:图4.4 进程通信选择界面本界面总共用了一种控件,是button。button的作用是分别连
34、接共享内存,消息队列,管道通信三个模块,以及返回系统主界面。点击相应的按钮进入相应的接口模块。进程通信选择界面的控件的主要属性数据如下表4.4:表4.4 主界面控件的主要属性数据控件类型控件名称功能主要属性设置ButtonGongxiang共享内存的链接按钮Text=共享内存Buttonxiaoxi消息队列的链接按钮Text=消息队列Buttonguandao管道通信的链接按钮Text=管道通信Buttonfanhui返回的链接按钮Text=返回本界面主要是将button和相应界面模块连接到一起。所用的代码主要是模块链接代码,如下:链接模块的文件名 自定义模块名称 = new 链接模块的文件名
35、(); this.Hide(); /这里是新窗口打开后,将前一个窗口关闭。 自定义模块的名称.Show();4.2实际操作界面的设计与实现4.2.1进程控制模块进程控制模块的功能是实现进程的创建过程和进程的状态的转换。实现进程的创建,进程的内容包括进程名,申请I/O数量,父进程,执行时间,申请内存大小等创建的进程会在数据表中显示出来。进程处于的活动就绪,静止就绪,活动阻塞,静止阻塞,执行队列状态会显示。进程状态之间能根据服务的方式而相应的转换。进能够显示进程占有资源占总资源的百分比15。进程控制执行流程图,如4.5所示:图4.5 进程控制执行流程图进程控制界面如图4.6、4.7、4.8所示:图
36、4.6 进程控制界面图4.7 进程控制界面图4.8 进程控制界面本界面总共用了一种控件,分别是button,tabcontrol,textbox,label,timer,statusstrip,listview,radiobutton,groupbox。button的作用是启动各个功能的按钮;tabcontrol是起到菜单选择的作用;textbox的作用是数据的填写和录入;label的作用是进行相关控件的说明;timer的作用是起到时间间隔触发时间;listview作用是各种表单的显示;radiobutton的作用是起到选择选项;groupbox的作用是给特定的内容加上标题框。进程控制界面的控
37、件的主要属性数据如下表4.5:表4.5 进程控制界面控件的属性数据控件类型控件名称功能主要属性设置buttonchushihua实现cpu,内存,I/O初始化的链接按钮Text=初始化设置buttonxinjian创建进程的链接按钮Text=新建进程buttonchongzhi重置程序的链接按钮Text=重置buttonfanhui返回的链接按钮Text=返回buttonjixu暂停进程的链接按钮Text=继续buttonjiuxu就绪进程的链接按钮Text=就绪进程tabcontroltabcontrol1三个菜单的选择按钮Text= 资源与新建,进程控制,整体结果labellabel1显示
38、cupText=cuplabellabel2显示内存Text=内存续表4.5进程控制界面控件的属性数据控件类型控件名称功能主要属性设置labellabel3显示I/O设备Text=I/O设备labellabel4进程名Text=进程名labellabel5请求cup大小Text= 请求cpu大小labellabel6执行时间Text=执行时间labellabel7请求内存大小Text=请求内存大小labellabel8请求I/O设备数量Text=继续groupboxChushibox初始化设置单元Text= 初始化设置groupboxXinjianbox新建进程单元Text=新建进程timer
39、timer1触发事件statusstripstatusstrip显示各个数据的占有量radiobuttonradiobutton1方式选择Text= 多级反馈轮转调度,先来先服务buttonbutton5开始模拟按钮Text=开始模拟buttonbutton6就绪挂起按钮Text=就绪挂起buttonbutton7就绪激活链接按钮Text=就绪激活buttonbutton8阻塞释放按钮Text=阻塞释放buttonbutton9阻塞挂起按钮Text=阻塞挂起buttonbutton10阻塞激活按钮Text=阻塞激活buttonzuse阻塞按钮Text=阻塞buttonbutton12挂起按钮T
40、ext=挂起listviewlistview1活动就绪显示表单listviewlistview2静止就绪显示表单listviewlistview3活动阻塞显示表单listviewjingzhi静止阻塞显示表单listviewlistview5执行队列显示表单listviewlistview6输入的进程队列表单listviewlistview7完成的进程队列表单本界面主要是通过timer的时间触发时间来完成,timer的代码如下:if (flag) process.more_time-; count+; if (process.more_time = 0) flag = false; proce
41、ss.state = 3; finishPro(process); else if (count = timeSlice) flag = false; Transfer(process); occupyCPU(); if (flag = false & process.name != null) runPro(); count = 0; flag = true; if (process.name = null) MessageBox.Show(就绪队列进程已经执行完毕!); this.toolStripStatusLabel1.Text = CPU利用率: + Convert.ToString
42、(double.Parse(this.text3.Text)-totalCPU) / double.Parse(this.text3.Text) * 100) + %; this.toolStripStatusLabel2.Text = 内存利用率: + Convert.ToString(double.Parse(this.text1.Text)-totalMem) / double.Parse(this.text1.Text) * 100) + %;通过建立类,设置进程各个参数,代码如下:public string name; /进程名 public int need_CPU; /所需CPU public int need_time; /估计所需执行时间 public int wait_time; /等待时间 public int need_memery; /所需内存大小 public int need_printer; /所需打印机数量 public int more_time; /还需要执行的时间 public int zhuangtai; /表示进程的三种状态。执行为0、就绪为1、被阻塞等待为2、完成为3 。 public int ruanke; /处于哪个就绪状态1,2,3 public Process(string namePro, int need_CPU)