




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验一处理器调度 一 实验内容 选择一个调度算法 实现处理器调度 二 实验目的 在采用多道程序设计的系统中 往往有若干个进程同时处于就绪状态 当就绪状态进 程 个数大于处理器数时 就必须依照某种策略来决定哪些进程优先占用处理器 本实验模 拟在单处理器情况下处理器调度 帮助学生加深了解处理器调度的工作 三 实验题目 设计一个按优先数调度算法实现处理器调度的程序 提示 1 假定系统有五个进程 每一个进程用一个进程控制块PCB 来代表 进程控制块的格 式为 进程名 时间 要求求运行时间 优先数 状态 其中 进程名 作为进程的标识 假设五个进程的进程名分别是P1 P2 P3 P4 P5 指针 按优先数的大小把五个进程连成队列 用指针指出下一个进程的进程控制块 首地址 最后一个进程中的指针为 0 要求运行时间 假设进程需要运行的单位时间数 优先数 赋予进程的优先数 调度时总是选取优先数大的进程先执行 状态 可假设有两种状态 就绪 状态和 结束 状态 五个进程的初始状态都为 就绪 状态 用 R 表示 当一个进程运行结束后 它的状态变为 结束 用 E 表示 2 在每次运行你所设计的处理器调度程序之前 为每个进程任意确定它的 优先数 和 要求运行时间 3 为了调度方便 把五个进程按给定的优先数从大到小连成队列 用一单元指出队首 进程 用指针指出队列的连接情况 例 队首标志 4 处理器调度总是选队首进程运行 采用动态改变优先数的办法 进程每运行一次优 先数就减 1 由于本实验是模拟处理器调度 所以 对被选中的进程并不实际的 启动运行 而是执行 优先数 1 要求运行时间 1 来模拟进程的一次运行 提醒注意的是 在实际的系统中 当一个进程被选中运行时 必须恢复进程的现场 它占有处理器运行 直到出现等待事件或运行结束 在这里省去了这些工作 5 进程运行一次后 若要求运行时间 0 则再将它加入队列 按优先数大小插入 且 置队首标志 若要求运行时间 0 则把它的状态修改为 结束 且退出队列 6 若 就绪 状态的进程队列不为空 则重复上面 4 和 5 的步骤 直到所有进 程都成为 结束 状态 7 在所设计的称序中应有显示或打印语句 能显示或打印每次被选中进程的进程名以 及运行一次后进称对列的变化 8 为五个进程任意确定一组 优先数 和 要求运行时间 启动所设计的处理器调 度 程序 显示或打印逐次被选中进程的进程名以及进程控制块的动态变化过程 四 程序中使用的数据结构及符号说明 define num 5 假定系统中进程个数为 5 struct PCB char ID 进程名 int runtime 要求运行时间 int pri 优先数 char state 状态 R 就绪 F 结束 struct PCB pcblist num 定义进程控制块数组 五 流程图 1 主程序流程图 2 子程序 init 流程图 调用初始化子程序 调用运行子程序 结 束 开 始 开 始 定义 i i 0 i num 输出操作提示 输入 ID pri runtime state R getchar 结束 i i 1 3 子程序 max pri process 流程图 开始 定义 i key max 100 i 0 i num pcblist i state r max pcblist i pri 进程名 int runtime 要求运行时间 int pri 优先数 char state 状态 R 就绪 F 结束 struct PCB pcblist num 定义进程控制块数组 void init PCB 初始化子程序 int i for i 0 i num i printf PCB d ID pri runtime n i 1 为每个进程任意指定 pri 和 runtime scanf s d d pcblist i state R 进程初始状态均为就绪 getchar 接收回车符 int max pri process 确定最大优先级进程子程序 int max 100 max 为最大优先数 初始化为 100 int i int key for i 0 i num i if pcblist i state r r 为辅助状态标志 表示正在运行 return 1 返回 1 else if max pcblist i pri max 存放每次循环中的最大优先数 key i 将进程号赋给 key if pcblist key state F 具有最大优先数的进程若已运行完毕 return 1 则返回 1 else 否则 return key 将 key 作为返回值返回 void show 显示子程序 int i printf n ID pri runtime state n printf n for i 0 i num i 依次显示每个进程的名 优先数 要求运行时间和状态 printf s 6d 8d s n printf press any key to continue n void run 进程运行子程序 int i j int t 0 t 为运行次数 for j 0 j num j t pcblist j runtime 运行次数即为各个进程运行时间之和 printf nbefore run the conditon is n show 调用 show 子程序显示运行前 PCB 的情况 getchar 等待输入回车符 for j 0 j t j while max pri process 1 具有最大优先数的进程没有运行完 让其运行 pcblist max pri process state r 将其状态置为 r 表示其正在运行 for i 0 i num i if pcblist i state r pcblist i pri 1 将当前运行进程的优先数减 1 pcblist i runtime 要求运行时间减 1 if pcblist i runtime 0 pcblist i state F 运行完则将该进程状态置为结束 else pcblist i state R 未运行完将其状态置为就绪 show 显示每次运行后各 PCB 的情况 getchar 等待回车进入下一次运行 void main 按动态优先数调度主程序 init 初始
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水龙吟苏轼次韵课件
- 水粉画讲解课件
- 海上光伏项目海洋环境监测与保护方案
- 消防设施区域划分与标识方案
- 市政管道施工地下水控制方案
- 医院药品采购与供应药品采购管理36课件
- 遮风避雨35景观建筑设施及小品设计18课件
- 二零二五版电动摩托车租赁与人才培训合同
- 二零二五年度文化活动策划劳务承包协议
- 二零二五年度房地产网络营销代理服务合同范本
- 2023年宁波市慈溪市人民法院招聘编外人员考试真题及答案
- 高速公路服务区升级转型商业计划书
- 数学原来这么有趣
- 常见行政案件笔录模版
- 手术室甲状腺切除术手术配合护理查房
- 国家电网电力中级职称考试题
- 数据库设计规范说明
- 建设工程消防验收评定规则
- 肾内科临床技术操作规范2022版
- 2023年中国工商银行软件开发中心春季校园招聘500人笔试模拟试题及答案解析
- 地质勘查钻探岩矿心管理通则
评论
0/150
提交评论