进程模拟调度程序.doc

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数学与计算机学院 课程设计说明书 课 程 名 称: 操作系统原理-课程设计 课 程 代 码: 题 目: 进程调度模拟程序 年级/专业/班: 09级 计科 5班 学 生 姓 名: 学   号: 开 始 时 间: 2011 年 12 月 9 日 完 成 时 间: 2011 年 12 月 23 日 课程设计成绩: 学习态度及平时成绩(30) 技术水平与实际能力(20) 创新(5) 说明书撰写质量(45) 总 分(100) 指导教师签名: 年 月 日 摘 要 随着计算机的普及,在计算机上配置合适的操作系统,已成为不可或缺的因素,操作系统时配置在计算机硬件上的第一层软件,时对硬件系统的首次扩充,其他的诸如汇编程序,编译程序,数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操作系统的支持,取得它的服务。OS作为用户与计算机硬件之间的接口,作为系统资源的管理者,实现了对计算机资源的抽象,因此,不断提高计算机资源的利用率,方便用户,以及器件的不断更新换代,计算机体系结构的不断发展,已经成为推动计算机操作系统发展的主要因素,为了达到这些目的,了解操作系统的发展过程,熟悉操作系统的内部结构,掌握操作系统的运行,已经成为当代大学生,特别是计算机专业的学生所必不可少的知识。 操作系统的主要任务是为多道程序的运行提供良好的运行环境,并能最大程度的提高系统中各种资源的利用率和方便用户,为了实现这些功能,操作系统还应该具有处理机管理,存储器管理,设备管理和文件管理等功能。 关键词:操作系统;资源利用率;处理机;文件管理 目 录 1 引 言 1 1.1 问题的提出 1 1.2任务与分析 1 2 程序的主要函数 2 2.1建立将要模拟进程调度的所有进程PCB链表 2 2.2模拟CPU运行进程 3 2.3显示 4 2.4排序 5 2.5建立先来先服务调度算法的就绪队列 7 2.6建立最高优先数优先调度算法的就绪队列 8 2.7进程模拟调度 9 2.8主函数 12 3 程序运行平台 14 4 总体设计 14 5 程序结构体的说明 14 6 程序运行结果 15 7 结论 22 8 参考文献 23 9 附录 24 1 引 言 1.1 问题的提出 随着现在操作系统的日趋成熟,用户对计算机的需求越来越多,处理机在同一时刻处理资源的能力是有限的,从而导致各种任务随时随地的争夺使用处理机,因而此对程序的并发能力提出了更高的要求。 引进并发技术后,为了更好地说明并发现象(尤其是动态进程),引入了进程的概念。进程是一个具有一定独立功能的可并发执行的关于某个数据集合一次运行活动的程序。一个程序的启动执行,便是一个进程的建立;一个程序执行结束(正常或者是不正常)进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法。每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。时间片为单位进行计算每个进程的状态可以是就绪 ()、运行R(Run)、或完成F(Finish)种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。重复以上过程,直到所要进程都完成为止。 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)

新起点 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档