江南大学理学院学院实验报告课程名称_操作系统__ 班级: 姓名:1.实验目的
进程调度
实验日期 ____ 学号:4.运行过程 5..实验调试及分析 6.实验总结
实验报告要求
2.实验要求 3 实验流程图
一.实验目的
多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定 那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机 调度问题,加深对进程调度的理解。 实验内容与要求: 二. 实验内容与要求: 1.优先权法、时间片轮转法、FCFS 简化假设 1)进程为计算型的(无 I/O) 2)进程状态:ready、running、finish 3)进程需要的 CPU 时间以时间片为单位确定 2.算法描述 1)优先权法——动态优先权 当前运行进程用完时间片后,其优先权减去一个常数。 2)时间片轮转法 当前运行进程运行一块时间片 3)FCFS 进程按顺序运行,直到当前进程运行完成,运行下一进步 3.实验要求 1)产生的各种随机数的取值范围加以限制,如所需的 CPU 时间限制在 1~20 之间。 2)进程数 n 不要太大通常取 4~8 个 3)使用动态数据结构 4)独立编程 5)至少三种调度算法 三.实验流程图: 实验流程图:
四.运行过程 1)进程调度算法选择
2)优先级算法
3)时间片轮转算法
4)FCFS 先来先服务
五.实验调试及分析 实验调试及分析 调试及 数据结构:
PCB
pid 编号
pname 进程 名
pstate 状 态
pneedtime 总时间
ptime 当 前时间
priority 优先级
pcbnode 队列结点
变量
操作
pcbs (PCB) *pcb
pcbnode *link
run 运行操 作
runend 运 行结束
insertnode( p,q)在 q 后 插入结点
deletenode (p,q)删除 p 结点,q 为
addnode(p) 增加结点
1.时间片轮转调度(poll 函数中的错误) 1)时间片轮转调度过程要忘记判断进程是否完成,以及完成后要撤消进程 添加代码 if(running.lik->runend()){ p = running.link ; running.link = 0 ; delete p ;} 2)运行过程应该是 CPU 没运行一次,就打印一次,在 poll 函数中, 错误代码 真确代码
2.优先级调度(priority 函数中的错误) 1)在寻找最大优先级中,没能找到此进程在 READY 队列中的前驱(后面要用) 添加代码:front=f 错误代码 真确代码
2)如果最大优先级大于正在运行的优先级则强占 cpu,应该要先清空 running 队列, 之后再把优先级最大的进程放 running 队列运行. 添加代码: ready.deletenode( q, front ) ; 错误代码: 真确代码:
六.实验总结 本次试验让我了解到什么的是进程调度,其主要的功能是根据作业控制块中的信息,审 查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选区 某些作业调入内存,并为它们创建进程,分配必要的
资源。
教师评价
优
良
中
及 格
不及 格
教师 签名
日期