[优秀毕业设计精品] 进程模拟调度程序.doc
《[优秀毕业设计精品] 进程模拟调度程序.doc》由会员分享,可在线阅读,更多相关《[优秀毕业设计精品] 进程模拟调度程序.doc(36页珍藏版)》请在三一办公上搜索。
1、数学与计算机学院课程设计说明书课 程 名 称: 操作系统原理-课程设计 课 程 代 码: 题 目: 进程调度模拟程序 年级/专业/班: 09级 计科 5班 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 12 月 9 日完 成 时 间: 2011 年 12 月 23 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书撰写质量(45)总 分(100)指导教师签名: 年 月 日摘 要随着计算机的普及,在计算机上配置合适的操作系统,已成为不可或缺的因素,操作系统时配置在计算机硬件上的第一层软件,时对硬件系统的首次扩充,其他的诸如汇编程序,编译程序,数据库
2、管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。OS作为用户与计算机硬件之间的接口,作为系统资源的管理者,实现了对计算机资源的抽象,因此,不断提高计算机资源的利用率,方便用户,以及器件的不断更新换代,计算机体系结构的不断发展,已经成为推动计算机操作系统发展的主要因素,为了达到这些目的,了解操作系统的发展过程,熟悉操作系统的内部结构,掌握操作系统的运行,已经成为当代大学生,特别是计算机专业的学生所必不可少的知识。操作系统的主要任务是为多道程序的运行提供良好的运行环境,并能最大程度的提高系统中各种资源的利用率和方便用户,为了实现这些功能,操作系统还应该具有处理机管理
3、,存储器管理,设备管理和文件管理等功能。关键词:操作系统;资源利用率;处理机;文件管理目 录 1 引 言11.1 问题的提出11.2任务与分析12 程序的主要函数22.1建立将要模拟进程调度的所有进程PCB链表22.2模拟CPU运行进程32.3显示42.4排序52.5建立先来先服务调度算法的就绪队列72.6建立最高优先数优先调度算法的就绪队列82.7进程模拟调度92.8主函数123 程序运行平台144 总体设计145 程序结构体的说明146 程序运行结果157 结论228 参考文献239 附录241 引 言 1.1 问题的提出随着现在操作系统的日趋成熟,用户对计算机的需求越来越多,处理机在同一
4、时刻处理资源的能力是有限的,从而导致各种任务随时随地的争夺使用处理机,因而此对程序的并发能力提出了更高的要求。引进并发技术后,为了更好地说明并发现象(尤其是动态进程),引入了进程的概念。进程是一个具有一定独立功能的可并发执行的关于某个数据集合一次运行活动的程序。一个程序的启动执行,便是一个进程的建立;一个程序执行结束(正常或者是不正常),便是一个进程的撤销。由于同时处于就绪态(争夺使用CPU资源)的进程通常比较多,因此需要CPU调度算法来决定由哪个进程获得CPU使用权进入运行状态,即进程调度算法。1.2任务与分析本课题主要的目的是编写并调试一个有N个进程并发的进程模拟调度程序。进程调度算法:采
5、用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。等待I/O的时间以时间片为单位进行计算,可随机产生,也可事先指定。每个进程的状态可以是就绪 R(Ready)、运行R(Run)、等待(Wait)或完成F(Finish)四种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用
6、CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。2 程序的主要函数2.1建立将要模拟进程调度的所有进程PCB链表算法思想:要建立的进程个数n作为函数参数,头指针作为返回,在函数内部由一重循环建立每个进程PCB的各个数据项,其中进程需要运行时间
7、、到达时间以及优先数全部采用随机生成。代码:plist *creatpro(int n) /建立所有将要进行N个模拟调度的进程int j;plist *p, *q, *head;p= (plist *) malloc(sizeof(plist);head = p; for(j=0;jname = j+1; p-needtime = 1+(int)(10.0*rand()/(RAND_MAX+1.0);p-arrivetime = (int)(10.0*rand()/(RAND_MAX+1.0);p-pri = 1+(int)(9.0*rand()/(RAND_MAX+1.0);p-state
8、= 0;p-cputime =0;p-next = (plist *) malloc(sizeof(plist);p=p-next; q-next = NULL;return head;流程图: p= (plist *) malloc(sizeof(plist); head = p; for(j=0;jname = j+1; p-needtime = 1+(int)(10.0*rand()/(RAND_MAX+1.0); p-arrivetime = (int)(10.0*rand()/(RAND_MAX+1.0); p-pri = 1+(int)(9.0*rand()/(RAND_MAX+1
9、.0); p-state = 0; p-cputime =0; p-next = (plist *) malloc(sizeof(plist); p=p-next;q-next = NULL;return head;2.2模拟CPU运行进程算法思想:需要运行进程的PCB作为函数参数,先修改进程状态,然后修改再修改进程已运行时间和还需运行时间。代码:void action(plist * nowpro)/模拟CUP运行进程的过程nowpro-state = 2; /设置进程状态为运行态printf(now is process %d ,nowpro-name);nowpro-needtime-;
10、 /修改进程还需运行时间nowpro-cputime+; /修改进程已运行时间nowpro-state = 1;if(nowpro-needtime=0)/进程运行结束printf(tthe process %d is endn,nowpro-name); nowpro-state = 4; /进程运行结束,设置进程状态为结束态elseprintf(tprocess %d needtime is %dn,nowpro-name,nowpro-needtime);printf(-n);流程图:nowpro-state = 2; nowpro-needtime-; nowpro-cputime+;
11、 nowpro-state = 1; nowpro-needtime=0?真 假printf(tthe process %d is endn, printf(tprocess %d needtime is %dn,nowpro-name); nowpro-name,nowpro-needtime);nowpro-state = 4;2.3 显示算法思想:先判断链表借点是否为空,然后利用循环输出各PCB信息代码:void show(plist * process) /显示if(!process)printf(there is no process nown);while(process&proc
12、ess-state!=4)printf(name of process %d,process-name);printf(tneedtime %d,process-needtime);printf( arrivetime %d,process-arrivetime);printf( pri %d,process-pri);printf( state %d,process-state);printf( cputime %dn,process-cputime);process = process-next;流程图:if(!process) 真 假printf(there is no 当process
13、&process-state!=4 process nown); printf(name of process %d,process-name); printf(tneedtime %d,process-needtime); printf( arrivetime %d,process-arrivetime); printf( pri %d,process-pri); printf( state %d,process-state); printf( cputime %dn,process-cputime); process = process-next;2.4排序算法思想:利用两层循环,比较相邻
14、两个元素的大小,第一遍将最大的数排到最末,第二遍将次大的数排到最末的数的前面,经N-1遍后将满足排序的要求。代码:plist *sort(plist *head) /将进程队列按到达先后顺序排序plist *p,*p1,*p2,*p3,*temp;p=head;while(p-next!=NULL) p=p-next;while(p!=head)p3=p1=head;p2=p1-next;while(p1!=p & p1-next!=NULL)if(p1-arrivetime)(p2-arrivetime)if(p1=head)head=p2;elsep3-next=p2;temp=p2-ne
15、xt;p2-next=p1;p1-next=temp;temp=p1;p1=p2;p2=temp; p3=p1;p1=p1-next;p2=p1-next;p=p3;return head;2.5建立先来先服务调度算法的就绪队列算法思想:先来先服务调度算法中的就绪队列是按到达时间的先后排序的,当就绪队列为空时,直接将作为将要添加的进程PCB temp作为队头,如果就绪队列不为空,则将temp添加到队列末尾。添加到就绪队列后再修改进程状态为就绪态。代码:plist *fcfs_creatready(plist *ready_queue,plist *temp) /将进程temp添加到就绪队列re
16、ady_queue的尾部plist *q;q=ready_queue;if(ready_queue) /当就绪队列不为空时,新进入的进程添加到就绪队列末尾while(q-next)q=q-next; /使指针P指向就绪队列中最后一个进程q-next=temp;temp-state=1;/修改进程状态temp-next=NULL;else /当就绪队列为空时,新进入的进程作为就绪队列头部ready_queue=temp;ready_queue-state = 1; /将进程状态设为就绪状态temp-next=NULL;return ready_queue;流程图:q=ready_queue;re
17、ady_queue=NULL?真 假q-next ready_queue=temp; q=q-next; ready_queue-state=1; q-next=temp; temp-next=NULL;temp-state=1; temp-next=NULL; return ready_queue;2.6建立最高优先数优先调度算法的就绪队列算法思想:最高优先数优先调度算法中的就绪队列是按进程优先数递减排序的,当就绪队列为空时,直接将作为将要添加的进程PCB temp作为队头,如果就绪队列不为空,则将temp添加到队列合适位置。然后再修改进程状态为就绪态。代码:plist *hrrn_crea
18、tready(plist *ready_queue, plist *temp)/按优先数递减的顺序将进程temp添加到就绪队列ready_queue的合适位置plist *q, *p;p=q=ready_queue;if(ready_queue & ready_queue-pritemp-pri) /按优先数递减的顺序将进程temp添加到就绪队列ready_queue的合适位置while(q&q-pri=temp-pri)p=q;q=q-next; /使指针P-next指向就绪队列中进程temp的插入位置p-next=temp;temp-next=q;temp-state=1;/修改进程状态e
![[优秀毕业设计精品] 进程模拟调度程序.doc_第1页](https://www.31ppt.com/fileroot1/2023-2/17/49614e69-efce-41a3-8aea-96d9ce6ce31a/49614e69-efce-41a3-8aea-96d9ce6ce31a1.gif)
![[优秀毕业设计精品] 进程模拟调度程序.doc_第2页](https://www.31ppt.com/fileroot1/2023-2/17/49614e69-efce-41a3-8aea-96d9ce6ce31a/49614e69-efce-41a3-8aea-96d9ce6ce31a2.gif)
![[优秀毕业设计精品] 进程模拟调度程序.doc_第3页](https://www.31ppt.com/fileroot1/2023-2/17/49614e69-efce-41a3-8aea-96d9ce6ce31a/49614e69-efce-41a3-8aea-96d9ce6ce31a3.gif)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优秀毕业设计精品 优秀毕业设计精品 进程模拟调度程序 优秀 毕业设计 精品 进程 模拟 调度 程序

链接地址:https://www.31ppt.com/p-2385787.html