欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统---进程调度算法地模拟.pdf

    • 资源ID:82095925       资源大小:768.64KB        全文页数:10页
    • 资源格式: PDF        下载积分:19.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要19.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统---进程调度算法地模拟.pdf

    .操作系统 实验题目 进程调度算法模拟 一、实验目的 通过对进程调度算法的模拟,进一步理解进程的根本概念,加深对进程运行状态和进程调度过程、调度算法的理解.二、设备与环境 1硬件设备:PC 机一台 2软件环境:安装 Windows 操作系统或者 Linux 操作系统,并安装相关的程序开发环境,如 C C+Java 等编程语言环境.三、实验内容 1用 C、C+、Java 语言编程实现对 5 个进程采用动态优先权调度算法进展调度的过程.数据如下:5 个进程的到达时刻和服务时间见下表,忽略 I/O 以与其它开销时间,使用动态优先权算法进展调度,优先权初始值为 100,请输出各个进程的完成时刻、周转时间、带权周转时间.进程 到达时刻 服务时间 A 0 3 B 2 6 C 4 4 D 6 5 E 8 2 2每个用来标识进程的进程控制块 PCB 可用结构来描述,包括以下字段用不到的字段可以不定义.进程标识数 ID.进程优先数 PRIORITY,并规定优先数越大的进程,其优先权越高.进程已占用 CPU 时间 CPUTIME.进程还需占用的 CPU 时间 ALLTIME.当进程运行完毕时,ALLTIME 变为 0.进程的阻塞时间 STARTBLOCK,表示当进程再运行 STARTBLOCK 个时间片后,进程将进入阻塞状态.进程被阻塞的时间BLOCKTIME,表示已阻塞的进程再等待BLOCKTIME个时间片后,将转换.成就绪状态.进程状态 STATE.队列指针 NEXT,用来将 PCB 排成队列.3优先数改变的原如此:进程在就绪队列中呆一个时间片,优先数增加 1.进程每运行一个时间片,优先数减 3.4 为了清楚地观察每个进程的调度过程,程序应将每个时间片内的进程的情况显示出来,包括正在运行的进程,处于就绪队列中的进程和处于阻塞队列中的进程.5分析程序运行的结果,谈一下自己的认识.四、实验结果与分析 1实验关键代码 模拟 PCB 数据结构定义:/枚举进程的状态:新建、就绪、执行、阻塞、终止 enum STATE_PROCESS New,Ready,Run,Block,Finish;typedef enum STATE_PROCESS STATE;/建立 PCB 结构体 struct PCB_NODE int id;/进程标识数 int priority;/进程优先数 int arriveTime;/进程到达时间 int cpuTime;/进程已占用 CPU 时间 int allTime;/进程还需占用 CPU 时间 int blockTime;/进程已阻塞时间 STATE state;/进程状态 struct PCB_NODE*prev;/PCB 前指针 struct PCB_NODE*next;/PCB 后指针 ;typedef struct PCB_NODE PCB;模拟进程队列操作函数定义:/进程入列 void queuePush /进程出列 void queuePop /查看队列中进程信息 void queueWalk 模拟就绪队列操作函数定义:/进程插入到就绪队列 void readyQueuePush /优先数最大的进程出列 PCB*readyQueuePop /每个时间片更新就绪队列中的进程信息 void readyQueueUpdate /返回就绪队列最大优先数的值 int readyMaxPriority /查看就绪队列中的进程信息 void readyQueueWalk 模拟阻塞队列操作函数定义:/进程插入到阻塞队列.void blockQueuePush /优先数最大的进程出列 PCB*blockQueuePop /每个时间片更新阻塞队列中进程的信息 void blockQueueUpdate /查看阻塞队列中的进程信息 void blockQueueWalk 模拟动态优先权进程调度函数定义:/初始化进程 PCB 数据,返回 PCB 头指针 PCB*initData /模拟 CPU 执行 1 个时间片的操作 void cpuWord 主函数关键代码:int timeSlice=0;/模拟 CPU 时间片 int cpuBusy =0;/模拟 CPU 状态 PCB*cpuProcess=NULL;/当前 CPU 执行的进程 PCB*pHead,*pro;/进程 PCB 头指针 pHead=initData;/初始化进程 PCB,返回进程头指针 pro=pHead+1;/pro 指向 PCB 中第一个进程 readyQueueUpdate;/根据进程到达时间将新建进程参加绪队列 /模拟动态优先权进程调度 while if printf;break;/end if if /CPU 空闲,选择一个进程进入 CPU if 0 /选择就绪队列优先级最高的进程作为 CPU 运行进程 cpuProcess=readyQueuePop;else /就绪队列中没有进程,改为选择阻塞队列优先级最高的进程 cpuProcess=blockQueuePop;cpuProcess-cpuTime=0;/设置当前运行进程占用 CPU 时间 cpuProcess-state=Run;/设置当前运行进程的状态 cpuBusy=1;/设置 CPU 当前状态为忙 /end if timeSlice+;/当前时间片加 1 printf;cpuWord;/模拟 CPU 执行 1 个时间片的操作 ifallTime=0 /假如当前执行进程还需 CPU 时间片为 0 cpuProcess-state=Finish;/设置当前进程状态为终止 free;/释放该进程的 PCB 内存空间 cpuBusy=0;/CPU 状态设置为空闲 /end if /更新就绪队列和阻塞队列中的进程信息 blockQueueUpdate;readyQueueUpdate;/查看就绪队列和阻塞队列的进程信息 readyQueueWalk;blockQueueWalk;if 0&cpuProcess-priority readyMaxPriority blockQueuePush;/需抢占 CPU,当前执行的进程调入阻塞队列 cpuProcess=readyQueuePop;/从就绪队列中选择优先级最高的进程运行 /end if printf;return 0;(2)动态优先权调度算法流程图.2实验结果 第 1 个时间片后:.第 2 个时间片后:第 3 个时间片后:第 4 个时间片后:第 5 个时间片后:.第 6 个时间片后:第 7 个时间片后:第 8 个时间片后:第 9 个时间片后:第 10 个时间片后:.第 11 个时间片后:第 12 个时间片后:第13个时间片后:第 14 个时间片后:第 15 个时间片后:.第 16 个时间片后:第 17 个时间片后:第 18 个时间片后:第 19 个时间片后:第 20 个时间片后:.(3)实验结果分析 调度算法开始之前进程 PCB 信息为:调度算法完毕之后进程 PCB 信息为:调度算法分析:4实验心得 通过进程动态优先权调度算法的模拟,对进程的运行状态,进程 PCB 数据结构,进程调度算法有了更深的理解.动态优先权调度算法为了防止高优先级进程无休止地运行下去,调度程序在每个时钟滴答即每个时钟中断降低当前进程的优先级.如果这个动作导致该进程的优先级低于次高优先级的进程,如此进展进程切换,可以防止低优先级进程长时间的饥饿等待.此外,优先级可以由系统动态确定.例如有些进程为 I/O 密集型,其多数时间用来等待 I/O 完毕.当这样的进程需要 CPU 时,应立即分配给它 CPU,以便启动下一个 I/O 请求,这样就可以在另一个进程计算的同时执行I/O操作.使这类I/O密集型进程长时间等待只会造成它无谓地长时间占用内存.使 I/O 密集型进程获得较好服务的一种简单算法是,将其优先级设为 1/f,f 为该进程在上一时间片中所占的局部.如果一个在其 50ms 的时间片中只使用 1ms 的进程的优先级为 50,而在阻塞进程 ID 到达时间 服务时间 完毕时间 周转时间 带权周转时间 0 0 3 10 10 1 2 6 20 18 2 4 4 16 12 3 6 5 18 12 4 8 2 13 5 .之前用掉 25ms 的进程优先级为 2,使用掉全部时间片的进程优先级为 1.这样,可以很方便地将一组进程按优先级分成假如干类,并在各类之间采用优先级调度,而在各类进程的内部采用轮转调度.如如下图为一个具有 4 类优先级的系统,其调度算法如下:只要存在优先级为第 4 类的可运行进程,就按照轮转法为每个进程运行一个时间片,此时不理会较低优先级的进程.假如第 4类进程为空,如此按照轮转法运行第3类进程.假如第4类和第3类均为空,如此按照轮转法运行第 2 类进程.如果不偶尔对优先级进展调整,如此低优先级进程很可能会产生饥饿现象.队列头 可运行进程 教 师 评 价 评定项目 A B C D 评定项目 A B C D 算法正确 界面美观,布局合理 程序结构合理 操作熟练 语法、语义正确 解析完整 实验结果正确 文字流畅 报告规 X 题解正确 其他:评价教师签名:年 月 日 优先级4优先级2优先级3优先级1最高优先级 最低优先级

    注意事项

    本文(操作系统---进程调度算法地模拟.pdf)为本站会员(w***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开