操作系统课程设计说明书-基于Linux的模拟进程调度算法的实现_第1页
操作系统课程设计说明书-基于Linux的模拟进程调度算法的实现_第2页
操作系统课程设计说明书-基于Linux的模拟进程调度算法的实现_第3页
操作系统课程设计说明书-基于Linux的模拟进程调度算法的实现_第4页
操作系统课程设计说明书-基于Linux的模拟进程调度算法的实现_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE1操作系统课程设计说明书

学院、系:软件学院专业软件工程学生姓名:学号:设计题目:基于Linux的模拟进程调度算法的实现起迄日期指导教师

需求分析(1)任务功能描述基于linux的模拟进程调度算法的实现,可以实现手动创建几个进程,或者随机创建几个进程,都能在界面上完成;并且包括进程的名称(不能重复)、创建时间、执行时间等,程序主要完成了先来先服务,短作业优先和高相应比优先调度算法的实现。(2)软件设计目的及最终成果软件设计的目的是在设计出的软件界面上创建几个进程,不论是手动创建还是随机产生,程序都会随机产生这几个进程的到达时间和服务时间,之后系统会按照算法计算出出先来先服务,短作业优先和高相应比优先调度算法的完成时间,周转时间和带权周转时间。2总体设计(1)软件体系结构分析此软件主要包含四大模块,先来先服务算法,短作业优先算法,高相应比优先调度算法和函数。其中短作业优先算法主要是先运行第一个到达的进程,之后对其它的进程服务时间进行比较,从而得到进程的执行顺序;先来先服务算法主要是利用进程的到达时间arrivetime进行比较,得到进程的执行顺序;最高响应比算法主要是先执行第一个到达的进程,然后用当前的时间和其他进程到达的时间进行比较,如果在当前时间之前到达,那么就可以利用“(等待时间+服务时间)/服务时间”来求出它们的响应比,然后对响应比的值进行比较得到进程的执行顺序;最后的主函数main()中采用初始化函数init_task_list()随机产生对应数目的进程,或者是函数init_task_list1()手动产生对应数目的进程,然后利用Disp()显示出进程的信息,并调用函数show_select()选择操作,而且在每一个算法执行结束之后,都需要调用函数reset()对进程的周转时间以及带权周转时间进行重置,这样,就可以得到同一进程序列在不同调度算法之下的执行顺序以及相应的平均周转时间和平均带权周转时间,实现了对进程各个调度算法的比较。(a)先来先服务算法在此算法中,包含三个部分,第一部分是voidtask_run_FCFS(structtask_struct*node),主要负责最后结果的输出;第二部分是voidFCFS_shec_first(),主要负责作业间的比较,以确定作业的执行顺序;第三部分是voidFCFS_shec(),主要负责算法的执行。其流程图2-1如下:开始输入进程个数N开始输入进程个数N输入N个进程的名称,到达时间和服务时间初始化就绪队列进程完成?完成CPU分配给就绪队列首进程完成就绪队列空?NYYN图2-1(b)短作业优先算法在此算法中,包含三个部分,第一部分是voidtask_run_SPJ(structtask_struct*runnode),主要负责最后结果的输出;第二部分是voidSPJ_shec_first(),主要负责作业间的比较,使作业按服务时间有小到大排序;第三部分是voidSPJ_shec(),主要负责算法的执行。其程序流程图2-2如下:开始开始初始化所有的JCB使JCB按作业提交的时刻的先后顺序排队的时间T1=0调度队首的作业投入运行:(更改对首指针,使作业的状态R,记住作业开始运行的时刻T2等等)计算并打印运行作业4的完成时刻为T3,周转时间T4带权周转时间W4(完成时刻T3=开始运行时刻+运行时间:周转时间T4=完成时刻-提交时刻;带权周转时间=周转时间/运行时间)更改时间T的值(T=T+作业1的运行时间)等待队列空?计算并打印这组作业的平周转时间及带权平均周转时间完成NY图2-2(c)高相应比优先调度算法在此算法中,包含三个部分,第一部分是voidtask_run_HRN(structtask_struct*node),主要负责最后结果的输出;第二部分是voidHRN_shec_first(),主要负责作业间的比较,以确定优先权的顺序,优先权大的现执行;第三部分是voidHRN_shec(),主要负责算法的执行。其程序流程图2-3如下:和下一个还没执行的作业比较当前在上次作业被执行完之前到当前作业取较早到达且相应比较高的一个当前作业取相应比较高的一个当前作业取较早到达的一个和下一个还没执行的作业比较当前在上次作业被执行完之前到当前作业取较早到达且相应比较高的一个当前作业取相应比较高的一个当前作业取较早到达的一个同时到达返回这一次要执行的作业开始当前作业为依号找到第一个还没执行的作业当前作业时最后一个作业 YNNY图2-3编译:首界面:生成进程:运行以及各个算法的比较:3详细设计高相应比优先调度算法voidtask_run_HRN(structtask_struct*node){structtask_struct*head=node;TIME+=head->sevicetime; head->turnovertime=TIME-head->arrivetime; head->weighttime=(float)head->turnovertime/(float)head->sevicetime;printf("\t%4s%-8d%-8d%-8d%-8d%.2f\n",head->name,head->arrivetime,head->sevicetime,TIME,head->turnovertime,head->weighttime);node->state=Finish;}voidHRN_shec_first(){structtask_struct*shec_first_node=task_list,*ptr=task_list->next;intearlytime=shec_first_node->arrivetime;for(;ptr!=0;ptr=ptr->next){if(ptr->state!=Finish&&earlytime>ptr->arrivetime){shec_first_node=ptr;earlytime=shec_first_node->arrivetime;}}TIME+=shec_first_node->arrivetime;task_run_HRN(shec_first_node); turnover+=shec_first_node->turnovertime; weight+=shec_first_node->weighttime;}voidHRN_shec(){TIME=0;inttask_num=TASK_NUM; printf("\n\t\t\t\tHRN调度结果信息\n");printf("\n\t进程名称到达时间服务时间完成时间周转时间带权周转时间\n"); HRN_shec_first();--task_num; while(task_num){structtask_struct*runtask=task_list,*ptr=task_list;while(runtask->state==Finish){runtask=runtask->next;}waittime=TIME-runtask->arrivetime;floatmax=runtask->prio=(float)(waittime+runtask->sevicetime)/(float)runtask->sevicetime;for(;ptr!=0;ptr=ptr->next){ if(waittime=TIME-ptr->arrivetime) { ptr->prio=(float)(waittime+ptr->sevicetime)/(float)ptr->sevicetime;if(ptr->state!=Finish&&max<ptr->prio) {runtask=ptr;max=runtask->prio; } }}task_run_HRN(runtask); turnover+=runtask->turnovertime; weight+=runtask->weighttime; --task_num;} c=weight/TASK_NUM; printf("\t平均周转时间:%.2f",turnover/TASK_NUM); printf("\t\t平均带权周转时间:%.2f\n",c);}4.心得体会操作系统作为我们的主要专业课之一,我对它有着浓厚的兴趣。

温馨提示

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

评论

0/150

提交评论