进程调度模拟程序课程设计

上传人:aa****6 文档编号:44316813 上传时间:2018-06-09 格式:DOC 页数:36 大小:461KB
返回 下载 相关 举报
进程调度模拟程序课程设计_第1页
第1页 / 共36页
进程调度模拟程序课程设计_第2页
第2页 / 共36页
进程调度模拟程序课程设计_第3页
第3页 / 共36页
进程调度模拟程序课程设计_第4页
第4页 / 共36页
进程调度模拟程序课程设计_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《进程调度模拟程序课程设计》由会员分享,可在线阅读,更多相关《进程调度模拟程序课程设计(36页珍藏版)》请在金锄头文库上搜索。

1、数学与计算机学院 课程设计说明书课 程 名 称: 操作系统原理-课程设计 课 程 代 码: 题 目: 进程调度模拟程序 年级/专业/班: 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 12 月 9 日完 成 时 间: 2011 年 12 月 23 日课程设计成绩:学习态度及平 时成绩(30)技术水平与实际 能力(20)创新 (5)说明书撰写质量(45)总 分 (100)指导教师签名: 年 月 日摘摘 要要随着计算机的普及,在计算机上配置合适的操作系统,已成为不可或缺的因素,操作系统时配置在计算机硬件上的第一层软件,时对硬件系统的首次扩充,其他的诸如汇编程序,编译程序,数据库管理系

2、统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。OS 作为用户与计算机硬件之进程模拟调度程序II间的接口,作为系统资源的管理者,实现了对计算机资源的抽象,因此,不断提高计算机资源的利用率,方便用户,以及器件的不断更新换代,计算机体系结构的不断发展,已经成为推动计算机操作系统发展的主要因素,为了达到这些目的,了解操作系统的发展过程,熟悉操作系统的内部结构,掌握操作系统的运行,已经成为当代大学生,特别是计算机专业的学生所必不可少的知识。操作系统的主要任务是为多道程序的运行提供良好的运行环境,并能最大程度的提高系统中各种资源的利用率和方便用户,为了实现这些功能,操作系统还应

3、该具有处理机管理,存储器管理,设备管理和文件管理等功能。关键词:关键词:操作系统;资源利用率;处理机;文件管理I目 录 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 附录

4、.24西华大学数计学院课程设计说明书11 引引 言言 1.1 问题的提出问题的提出随着现在操作系统的日趋成熟,用户对计算机的需求越来越多,处理机在同一时刻处理资源的能力是有限的,从而导致各种任务随时随地的争夺使用处理机,因而此对程序的并发能力提出了更高的要求。引进并发技术后,为了更好地说明并发现象(尤其是动态进程) ,引入了进程的概念。进程是一个具有一定独立功能的可并发执行的关于某个数据集合一次运行活动的程序。一个程序的启动执行,便是一个进程的建立;一个程序执行结束(正常或者是不正常) ,便是一个进程的撤销。由于同时处于就绪态(争夺使用 CPU 资源)的进程通常比较多,因此需要 CPU 调度算

5、法来决定由哪个进程获得 CPU 使用权进入运行状态,即进程调度算法。1.2 任务与分析任务与分析本课题主要的目的是编写并调试一个有 N 个进程并发的进程模拟调度程序。进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用 CPU 时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生) 。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。等待 I/O 的时间以时间片为单位进行计算,可随

6、机产生,也可事先指定。每个进程的状态可以是就绪 R(Ready) 、运行 R(Run) 、等待(Wait)或完成F(Finish)四种状态之一。 就绪进程获得 CPU 后都只能运行一个时间片。用已占用 CPU 时间加 1 来表示。 如果运行一个时间片后,进程的已占用 CPU 时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用 CPU 时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减 1(即降低一级) ,然后把它插入就绪队列等待 CPU。 进程模拟调度程序2每进行一次调度程序都打印一次运行进程、就绪队列、等待进程以及各个进程的 PCB,以便进行

7、检查。重复以上过程,直到所要进程都完成为止。2 2 程序的主要函数2.1 建立将要模拟进程调度的所有进程建立将要模拟进程调度的所有进程 PCB 链表链表算法思想算法思想:要建立的进程个数 n 作为函数参数,头指针作为返回,在函数内部由一重循环建立每个进程 PCB 的各个数据项,其中进程需要运行时间、到达时间以及优先数全部采用随机生成。代码代码:plist *creatpro(int n) /建立所有将要进行 N 个模拟调度的进程int j;plist *p, *q, *head;p= (plist *) malloc(sizeof(plist);head = p;for(j=0;jname =

8、 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 = 0;p-cputime =0;p-next = (plist *) malloc(sizeof(plist);p=p-next;q-next = NULL;return head;西华大学数计学院课程设计说明书3流程图:流程图:p= (plist *) malloc(sizeof(plist)

9、;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 = 0;p-cputime =0;p-next = (plist *) malloc(sizeof(plist);p=p-next;q-next = NULL;return head;2.2 模拟模拟 CPU 运行进程运行进程算法思想算法思想:需要

10、运行进程的 PCB 作为函数参数,先修改进程状态,然后修改再修改进程已运行时间和还需运行时间。代码:代码:void action(plist * nowpro)/模拟 CUP 运行进程的过程nowpro-state = 2; /设置进程状态为运行态printf(“now is process %d “,nowpro-name);nowpro-needtime-; /修改进程还需运行时间nowpro-cputime+; /修改进程已运行时间nowpro-state = 1;if(nowpro-needtime=0)/进程运行结束printf(“tthe process %d is endn“,n

11、owpro-name); 进程模拟调度程序4nowpro-state = 4; /进程运行结束,设置进程状态为结束态elseprintf(“tprocess %d needtime is %dn“,nowpro-name,nowpro-needtime);printf(“-n“);流程图流程图:nowpro-state = 2; nowpro-needtime-; nowpro-cputime+; 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 *

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号