模拟进程调用课程设计Linux进程调度模拟算法的设计与实现.doc_第1页
模拟进程调用课程设计Linux进程调度模拟算法的设计与实现.doc_第2页
模拟进程调用课程设计Linux进程调度模拟算法的设计与实现.doc_第3页
模拟进程调用课程设计Linux进程调度模拟算法的设计与实现.doc_第4页
模拟进程调用课程设计Linux进程调度模拟算法的设计与实现.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

枣 庄 学 院信息科学与工程学院课程设计任务书 题目: Linux进程调度模拟算法的设计与实现 学 号: 201012120233 姓 名: 孟 国 涛 专 业: 网络工程 课 程: 操作系统 指导教师: 燕孝飞 职称: 讲 师 完成时间: 2012年 5 月-2012 年 6 月枣庄学院信息科学与工程学院制2012年05 月20日课程设计任务书及成绩评定 课程设计的任务和具体要求观察、体会操作系统的进程调度方法,并通过一个简单的进程调度模拟程序的实现,加深对进程调度算法,进程切换的理解。采用动态优先数的方法,编写一进程调度程序模拟程序。模拟程序只进行相应的调度设计。指导教师签字: 日期: 指导教师评语成绩: 指导教师签字: 日期: 课程设计所需软件、硬件等系统:Windows XP上的虚拟机上运行的Red Hat Linux软件:VC+6.0课程设计进度计划起止日期工作内容备注5月30日至6月17日收集资料程序设计参考文献、资料索引序号文献、资料名称编著者出版单位01. Linux操作系统项目化教程 王艳青 北京大学出版社02. 数据结构 栾晓春 燕孝飞 中国石油大学出版社 3目 录摘要51引言 1.1linux及其特点5 1.1.1 linux的概述 5 1.1.2 linux的特点51.2 linux的结构 51.3 linux的版本 62 进程调度程序的设计2.1进程调度62.2介绍一下优先权调度 63.实验结果.84.总结105.附录10.摘要在计算机网络高速发展的今天,计算机技术不断地更新与完善,无论是硬件还是软件的变更都会在计算机操作系统的设计技术与使用风格上得到体现。操作系统是计算机系统配置的所有软件中使用最广泛的基础软件,它在整个计算机系统软件中处于中心地位,也是计算机专业课教学中做重要的环节之一。从操作系统自身角度讲,它不仅很好地体现了计算机日益发展中的软件研究成果,而且也较好地体现了计算机的硬件技术发展及计算机系统结构的用户界面环境。本实验主要根据是按动态优先数设计五个进程的调度算法。即在它们调度的过程中,其优先数是不断变化的。1引言1.1 Linux及其特点1.11Linux的概述 Linux是一种免费的、开放源代码的、交互式、多用户和多任务的、类Unix的网络操作系统一,它包括系统内核、系统工具、应用程序以及一个完整的的开发环境。实际上,准确点说,Linux指的是:一个类似UNIX的开放的操作系统内核。1.1.2Linux的特点(1)自由和开放性(2)类UNIX (3)交互性强 (4)多用户和多任务 (5)出色的速度性能 (6)丰富的网络功能 (7)可靠的系统安全 (8)良好的可移植性 (9)具有标准兼容性 1.2 linux的结构内核:Linux操作系统的主要部分,是运行程序和管理像磁盘和打印机等硬件设备的核心程序 Shell:是系统的用户界面,提供了用户与内核进行交互操作的一种接口 ,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核 .而且,Shell有自己的编程语言用于对命令的编辑。当然也提供图形界面实用程序:的Linux标准系统都有一套称为应用程序的程序集,它们是专门的程序,包括文本编辑器,编程语言,X Window,办公套件,Internet工具,数据库等 1.3 Linux的版本:内核版本:根据约定,次版本号为奇数时,表示该版本加入新内容,但不一定很稳定,相当于测试版;次版本号为偶数时,表示这是一个可以使用的稳定版本。由于Linux内核开发工作的连续性,因此内核的稳定版本与在此基础上进一步开发的不稳定版本总是同时存在的。对于一般用户,建议采用稳定的内核版本发行版本:(1)SlackwareLinux (2)Red Hat Linux (3)Turbo Linux (4)Debian Linux (5)红旗Linux 2进程调度程序的设计2.1进程调度无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。2.2介绍一下优先权调度算法优先数法的基本思想是:对就绪队列中的每个进程,首先安某种原则定义一个优先数来表示它,处理机调度时,每次选择就绪队列中优先数最大者(也可规定优先数愈小,其优先权愈高),让它占用处理机运行。确定优先数一般可以又一下集中考虑:(1)频繁使用外部舒服输出设备的进程优先数大。这样有利于提高CPU使用效率。(2)重要程序的进程优先数大,怎样有利于用户灵活操作。(3)进入计算机系统时间长的进程优先数大,这样有利于缩短作业的完成时间。(4)交互式用户作业进程优先数大,这样有利于提高中断相应时间。优先数的设置可以采用静态和动态两种方式。静态设置方式就是指系统在建立一个进程时,就按照某种原则为进程制定一个优先数,这个优先数在进程存在期间一直保持不便。而动态设置方式是指系统在进程存在期间经常改变进程的优先数,如何动态的改变进程的优先数,依赖于具体操作系统的设计目标3实验结果初始就绪队列4总结最高优先权优先(FPF)调度算法 此算法常被用在批处理系统中,作为作业调度算法,也作为多种操作系统中的进程调度,还可以用于实时系统中。当其用于作业调度, 将后备队列中若干个优先权最高的作业装入内存。当其用于进程调度时,把处理机分配给就绪队列中优先权最高的进程,可以进一步把该算法分成以下两种:非抢占式优先权算法、抢占式优先权调度算法。非抢占式优先权算法是指一旦把处理机分配给就绪队列中优先权最高的进城后,该进程变一直执行下去直到完成。这种调度算法主要用于批处理系统中,也可以用于某些对实时性要求不高的实时系统中;而抢占式优先权算法系统将处理机分配给优先权最高点的进程,并执行但当在执行期间遇到另外一个优先权更高的程序的时候就会将处理机的使用权给这个优先权比较高的进程,这种调度算法能够更好的满足紧迫作业的要求,常用在要求比较严格的实时系统中,以及对性能要求较高的批处理和分时系统找中。在这个实验中我们要学会高优先权调度算法的原理和调度过程、还要能够熟练运用。5附录#include ;#define getpch(type) (type*)malloc(sizeof(type)struct pcb /* 定义进程控制块PCB */ char name10; /进程名 char state; /状态 int super; /优先级 int ntime; /要求服务时间 int rtime; /已运行时间 struct pcb* next; *ready=NULL,*p;typedef struct pcb PCB;void sort(PCB *a) /* 建立对进程进行优先级排列函数*/ PCB *first, *second; int insert=0; if(ready=NULL)|(a-super)(ready-super) /*优先级最大者,插入队首*/ a-next=ready; ready=a; else /* 进程比较优先级,插入适当的位置中*/ first=ready; second=first-next; while(second!=NULL) if(a-super)(second-super) /*若插入进程比当前进程优先数大,插入到当前进程前面*/a-next=second; first-next=a; second=NULL; insert=1; else /*指针后移,寻找插入点*/ first=first-next; second=second-next; if(insert=0) first-next=a;/* 插入进程优先数最低,则插入到队尾*/ void createpcb() /* 建立进程控制块函数*/ int i,num; printf(ttt最高优先权优先调度tn); printf(n 请输入进程个数:); scanf(%d,&num); for(i=0;iname,&p-super,&p-ntime); p-rtime=0; p-state=w; p-next=NULL; sort(p); void display1() /*建立进程显示函数,用于显示当前进程*/ printf(n进程名 状态 优先数 要求服务的时间 已运行时间 n); void display2(PCB * pr) printf(%3.5s %7c %6d %12d %10d,pr-name,pr-state,pr-super,pr-ntime,pr-rtime); printf(n); void check() /* 建立进程查看函数 */ PCB *pr; printf(n); printf(n); printf(n * 当前正在运行的进程是%s,它的状态如下:n,p-name); /*显示当前运行进程*/ display1(); display2(p); pr=ready; printf(n *当前就绪队列中进程的状态如下:n); /*显示就绪队列状态*/ if(pr=NULL) printf( *就绪队列为空!);else display1(); while(pr!=NULL) display2(pr); pr=pr-next; void destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ printf(n 进程 %s 已完成.n,p-name); free(p); void running() /* 建立进程就绪函数(进程运行时间到,置就绪状态)*/ (p-rtime)+; /*运行时间加一*/ if(p-rtime=p-ntime) /*已运行时间与要求服务时间相等时,撤销进程*/destroy(); /* 调用destroy函数*/ else (p-super)-; /*优先权减一*/ p-state=w; sort(p); /*调用sort函数*/ void main() cre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论