进程调度实验报告

发布时间:2021-06-05

江南大学理学院学院实验报告课程名称_操作系统__ 班级: 姓名: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 ) ; 错误代码: 真确代码:

六.实验总结 本次试验让我了解到什么的是进程调度,其主要的功能是根据作业控制块中的信息,审 查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选区 某些作业调入内存,并为它们创建进程,分配必要的

资源。

教师评价

及 格

不及 格

教师 签名

日期

    精彩图片

    热门精选

    大家正在看