广工操作系统实验报告

上传人:大米 文档编号:457715158 上传时间:2022-11-21 格式:DOC 页数:20 大小:401KB
返回 下载 相关 举报
广工操作系统实验报告_第1页
第1页 / 共20页
广工操作系统实验报告_第2页
第2页 / 共20页
广工操作系统实验报告_第3页
第3页 / 共20页
广工操作系统实验报告_第4页
第4页 / 共20页
广工操作系统实验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《广工操作系统实验报告》由会员分享,可在线阅读,更多相关《广工操作系统实验报告(20页珍藏版)》请在金锄头文库上搜索。

1、- 计算机 学院 软件工程 专业 2 班_组、* 3110006294 黄煜财 协作者 无 教师评定_实验题目 进程调度 一、实验目的用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。二、实验容和要求设计一个有 N个进程共行的进程调度程序。要求采用最高优先数优先算法,时间片轮转算法,多级队列调度算法这三种算法。每个进程有一个进程控制块 PCB表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定也可以由随机数产生。进程的到达时间为进程输入的时间。 进程的运行时间以时间片

2、为单位进展计算。 每个进程的状态可以是就绪 WWait、运行RRun、或完成FFinish三种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已到达所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1即降低一级,然后把它插入就绪队列等待CPU。 每进展一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进展检查。重复以上过程,直到所有的进程都完成为止。三、实验原理及设计方案1、进程调度算法:采用多

3、级反响队列调度算法。其根本思想是:当一个新进程进入在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片完成,便可准备撤离系统;如果它在一个时间片完毕时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。2、实验步骤:1按先来先效劳算法将进程排成就绪队列。2检查所有队列是否为空,假设空则退出,否则将队首进程调入执行。3检查该运行进程是否运行完毕,假设运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。4是否再插入新的进程,假设是则把它放到第一逻辑队列的列尾。5重复步骤2、3、4,直到就绪队列为空。

4、四、程序流程图进程完成,撤消该进程就绪队列首进程投入运行时间片到,运行进程已占用CPU时间+1运行进程已占用CPU时间已到达所需的运行时间把运行进程插入到下一个队列的队尾插入新的进程开场初始化PCB,输入进程信息所有队列都为空各进程按FCFS原则排队等待调度五、重要数据构造及难程序列表typedef struct pcb/进程管理块char name10;/进程名字char state;/进程状态int queue;/进程所在的队列int ntime;/进程需要运行的时间int rtime;/进程已经运行的时间int etime;/进程在本队列可运行的时间片struct pcb *link;P

5、CB;PCB*ready = NULL, *pinsert = NULL, *pfend = NULL,*p =NULL;/就绪队列,进程插入位置的变量void insert()/插入进程if(!ready )ready = p;pfend = p;pinsert = p;else if(ready -queue = 1)/第一队列存在p-link = pfend-link;pfend-link = p;pfend = p;findpos();elsep-link = ready;ready = p;findpos();void sort()/调整进程队列if(!ready-link |rea

6、dy-queue link-queue) return;p = ready -link;ready -link = pinsert -link;pinsert -link = ready;pinsert = ready;ready = p;if (ready & ready - queue = pinsert -queue)findpos();六、运行结果七、分析与小结在这个多级反响的实验中,我采取了用一条实际上的链表队列来模拟多个逻辑上的队列,通过维护几个链表的状态信息来找到每个进程运行完后应该插入的地方,还有一个标志位Fend用来说明新插入的队列的位置。虽然实验原理很简单,但是在编写代码的

7、过程中遇到了不少的问题,在两个小时之已经完成的大体代码的编写,但是之中存在不少的问题,导致了用了差不多四个小时的时间去调试才把它弄好,这主要归咎于在开场设计代码的不太合理,在后期使得代码构造有些混乱,使得调试更加的麻烦,以及对编程的不熟悉。通过这个实验不仅使我对进程的调度算法有了更深的认识,使得理论知识得到的实践,也使我的编程能力得到了进一步提高。 计算机 学院 软件工程 专业 2 班_组、* 3110006294 黄煜财 协作者 无 教师评定_实验题目 作业调度 一、 实验目标本实验要求学生模拟作业调度的实现,用高级语言编写和调试一个或多个作业调度的模拟程序,了解作业调度在操作系统中的作用,

8、以加深对作业调度算法的理解。二、实验容和要求为单道批处理系统设计一个作业调度程序(1)、编写并调试一个单道处理系统的作业调度模拟程序。(2)、作业调度算法:分别采用先来先效劳FCFS,最短作业优先SJF、响应比高者优先HRN的调度算法。 先来先效劳就是每次调度都是从后备作业队列中,选择一个最先进入该队列的作业,将它调入存,为它分配资源、创立进程,然后放入就绪队列,投入运行,一直运行到完成或发生*事件而阻塞后,才放弃处理。最短作业优先是从后备队列中选择一个估计运行时间最短的作业,将它调入存运行并一直执行到完成,或发生*事件而被阻塞放弃处理时,再重新调度。响应比高者优先是通过计算出作业的响应比,按

9、响应比高而进展调度的,其计算公式是:优先权等待时间+要求效劳时间/要求效劳时间.(3)、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。(4)、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。(5)、对每种调度算法都要求打印每个作业开场运行时刻、完成时刻、周转时间、带权周转时间,以及这

10、组作业的平均周转时间及带权平均周转时间,并比较各种算法的优缺点。三、实验原理及设计方案1、实验原理 先来先效劳算法:是按照作业进入输入井的先后次序来挑选作业,先进入输入井的作业优先被挑选,当系统中现有的尚未分配的资源不能满足先进入输入井的作业,则顺序挑选后面的作业。 FCFS算法简单易行,但性能却不大好。短作业优先算法:总是按照作业要求运行时间来选择作业,每次挑选要求作业执行时间短且资源要求能满足的作业优先分派处理机,通常后来的短作业不抢先正在执行的作业。SJF改善平均周转时间和平均带权周转时间,缩短作业的等待时间 ,提高系统的吞吐量,但对长作业非常不利。响应比高者优先算法:最高响应比优先法(

11、HRN,Highest Response_ratio Ne*t)是对FCFS方式和SJF方式的一种综合平衡。FCFS方式只考虑每个作业的等待时间而未考虑执行时间的长短,而SJF方式只考虑执行时间而未考虑等待时间的长短。因此,这两种调度算法在*些极端情况下会带来*些不便。HRN调度策略同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。 响应比R定义如下: R =(W+T)/T = 1+W/T 其中T为该作业估计需要的执行时间,W为作业在后备状态队列中的等待时间。每当要进展作业调度时,系统计算每个作业的响应比,选择其中R最大者投入执行。这样,即使是长作业,随

12、着它等待时间的增加,W / T也就随着增加,也就有时机获得调度执行。这种算法是介于FCFS和SJF之间的一种折中算法。由于长作业也有时机投入运行,在同一时间处理的作业数显然要少于SJF法,从而采用HRN方式时其吞吐量将小于采用SJF 法时的吞吐量。另外,由于每次调度前要计算响应比,系统开销也要相应增加。2、 设计方案struct source /*定义资源需求构造*/char memery5; /*主存需求*/int machine; /*磁带机数量*/;struct jcb /* 定义作业控制块PCB */ char name10; char state; /* 状态 */ double s

13、uper; /* 响应比优先权 */ int ntime; /* 需要运行时间 */ int rtime; /* 开场运行时间 */int ptime; /*提交时间*/int ftime; /*完成时间*/ source *needsources; /*资源需求链*/ struct jcb* link; /* 下一个作业控制块的地址 */*ready=NULL,*run,*p;四、程序流程图12响应比高优先算法短作业优先算法先来先效劳算法初始化作业JCB和资源source,所有作业按照先后顺序排列,作业提交时间为系统默认时间p-ptime=Systemtim,作业完成时间p-ftime=03作业调度算法.开场YNNNYY用响应比高优先算法,先计算所有作业高响应比,调度队响应比最高的首作业投入运行,更改作业状态为R,记录作业开场运行时间和完成时间,修改下一作业指针等,计算运行作业i的完成时刻,周转时间和带权周转时间计算并打印这组作业的平均周转时间及带权平均周转时间用短作业算法调度需求时间最短的作业投入运行,更改作业状态为R,记住作业开场运行时间,修改下一作业指针等,计算运行作业i的完成时刻,周转时间和带权周转时间完毕等待队列空.释放该作业占用资源作业运行完毕.用先来先效劳算法调度队首作业投入运行,更改作业状态为R,记住作业开场运行时间,修改下一作业指针

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号