天津理工大学实验报告
学院(系)名称:计算机与通信工程学院
姓名 班级 2013级1班 课程名称 实验时间 批改意见 教师签字: 学号 实验项目 操作系统 2015年11月16日 第7、8节 专业 信息与计算科学 处理机调度算法实现 课程代码 实验地点 成绩 0667056 7号楼219 实验内容: 1.设定系统中有五个进程,每一个进程用一个进程控制块表示。 2.在每次运行处理机调度程序之前,由终端输入五个进程的“优先数”和“要求运行时间”。 3.为了调度方便,五个进程按照优先数从大到小的顺序形成就绪队列。 处理机调度总是选队首进程运行。采用动态优先数办法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。 4.进程运行一次后,若要求运行时间不等于零,则再将它加入就绪队列末尾;若要求运行时间为零,则将其状态置为“结束”,且退出就绪队列。 5.若“就绪”状态的进程队列不为空,重复上面4,5步骤,直到所有进程都成为“结束”状态。 实验目的: 在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,操作系统必须按照某种调度策略决定哪些进程优先占用CPU。本实验是在单处理机的情况下用优先权的调度策略实现处理机调度,以加深了解处理机调度的工作过程。 实验要求: 在设计的程序中应有输入语句,输入5个进程的“优先数”和“要求运行时间”,也应有显示或打印语句,能显示或打印每次被选中调度运行进程的进程名,运行一次后队列的变化以及结束进程的进程名。 第1页 共4页
程序设计如下: 1.实验流程图: 2.实验过程设计 struct pcb { 定义进程控制块PCB ,其中包含优先级,进程名,还需时间,已用时间的变量 void sort() 建立对进程进行优先级排列函数建立一个函数方法,使得所创建的进程能够按照其优先级大小进行排序。 建立进程控制块函数,在这个函数里面,接受键盘对pcb‘结构体变量的输入,调用sort()函数方法对每次执行时都会对优先级进行减一运算,对一用事件惊醒加一运算。, void disp(PCB * pr) 建立进程显示函数,用于显示当前进程的状态。 void check() 建立进程查看函数 。 void destroy() 建立进程撤消函数(进程运行结束,撤消进程) void running() /建立进程就绪函数(进程运行时间到,置就绪状态) void main()主函数 {定义进程数组,进程队列,并初始化 通过循环使每个进程入队 对进程按优先数从大到小排列 进程运行函数} 开始 第2页 共4页
程序运行结果: 第3页 共4页 实验结果分析: 实验最后结果出现优先数为负【-1】的情况,是因为运行时间大于优先数,而进程每运行1次,优先数减1,要求运行时间减1而导致的。 实验心得: 这次实验的内容是线性同步。这个实验目的是可以培养我们的分析和解决实际问题的能力,编程手段,为我们将来从事技术工作和科学研究奠定扎实的基础。 第4页 共4页