广工操作系统实验

上传人:re****.1 文档编号:511256161 上传时间:2022-11-26 格式:DOCX 页数:35 大小:496.99KB
返回 下载 相关 举报
广工操作系统实验_第1页
第1页 / 共35页
广工操作系统实验_第2页
第2页 / 共35页
广工操作系统实验_第3页
第3页 / 共35页
广工操作系统实验_第4页
第4页 / 共35页
广工操作系统实验_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

1、操作系统实验报告学生学院计算机学院专业班级12级网络1班学 号学生姓名指导教师2015年 01月 07日目录1实验一进程调度2实验二作业调度3实验三存储管理实验一进程调度(实现了最高优先级优先,时间片轮转,多级反馈队列三种算法 )1、实验目的编写并调试一个模拟的进程调度程序,采用最高优先数优先算法,时间片轮 转算法,多级反馈队列算法对进程进行调度。以加深对进程的概念及进程调度算 法的理解.2:实验原理每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程 名、到达时间、需要运行时间、已运行时间、进程状态等等。每个进程的状态可以是就绪W (Wait)、运行R (Run)两种状态

2、之一。就绪进程获得CPU后都只能运行一个时间片。用运行时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则 撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行 时间,也就是进程需要继续运行,此时应分配时间片给就绪队列中排在该进程之 后的进程,并将它插入就绪队列队尾。3:实验内容,方法首先对于:最高优先数算法:最高优先数算法的基本思想是把cpu分配给就绪队列中优先数最高的进程。而 我采用优先数动态变化的方式,进程在没获得一次cpu时间后其优先数就减一, 然后对各个进程的优先数进行重新排序。继续把cpu分配给优先数最高的进程。 进程的剩余时间

3、为0时就退出队列。首先用create ()函数创建链表并对其初始化,然后对链表按照优先级大小 进行排序,然后把排序后的链表放进processing ()函数中进行处理,让其占有 一个时间片执行,若进程任然未完成,则把该进程放进insert ()函数中插入就 绪队列中。用disp ()函数进行进程的显示。4:流程图:5:重要函数和数据结构的说明:Struct PCB对进程结构体进行定义Create()函数进行链表的初始化Processing()函数对整个链表的循环进行处理Sort()函数对优先级进行动态排序:Disp()函数对结果进行显示struct PCB *sort(struct PCB *

4、head)/递增排序函数:入口参数:链表的头指针,此为链表中的排序函数*/(struct PCB *p,*q;int temp;for(p=head;p!=NULL;p=p-next)(for(q=p-next;q!=NULL;q=q-next)(if(p-prioprio) /通过对链表里面的数据进行互换达到重新排序(temp=q-prio;q-prio=p-prio;p-prio=temp;temp=q-name;q-name=p-name;p-name=temp;temp=q-run;q-run=p-run;p-run=temp;temp=q-rest;q-rest=p-rest;p-r

5、est=temp;return head;5:实验效果: C:UsersAdiTiini strato rDeska实逾实会一1 最高忧先数优先 exe、最高优先数优先算盛、,进程每获得一次C pu时间麻先薮减1,每个cpu时间为2优先级所需时间41剩余时间213口口口 态雷绪 状运罄所需时间1剩余时间0口口口 态雷绪 状运走及E4-T-先2 2 1优所需时间进程1已完成剩余时间03优先级进程3已完成所需时间3剩余时间1状杏-运行中优先级1所需时间1剩余时间0状邑运行中优先级0所需执行时间进程2已完成:6:实验总结:对于最高优先数优先的算法,在设计好进程控制块链表后,就要对优先级进 行排序,优

6、先数动态变化和链表的循环是比较花时间处理的,如上图所显示,优 先级在进程每执行一个时间片后减一,实现动态变化,开始在这两部分总是出问 题,经过耐心的处理还是把问题很好的解决了。对于第二个:时间片轮转算法,3:实验方法,步骤:基本思想:所有就绪进程按fcfs排成一个队列,总是把处理机分配给队首的进程,各进程占用的cpu时间片相同,如果运行进城用完时间片后还未完成,就把它送进就绪队列的末尾,把处理机重新分配给队首的集成。直至所有的进程运行完毕。4:流程图:4:重要的函数和数据结构:Struct PCB对进程结构体进行定义Create()函数进行链表的初始化Insert()函数把未完成的进程插入就绪

7、队列的末尾Processing()函数对链表循环进行处理Disp()函数对结果进行显示其中insert()函数对进程插入就绪队列末尾是比较重要的void insert(struct PCB *p)struct PCB *p1,*p2;p2=p1=p;p2=(struct PCB *)malloc(sizeof(struct PCB);while(p1-next)p1=p1-next;p1-next=p2;p2-state=就绪中;p2-name=p-name;p2-run=p-rest;p2-queue=(p-queue)+1;p2-rest=p-rest;p2-fragement=2;p2-

8、next=NULL;:5:实验效果:矿E:C-Free 5Workspace时间片轮转旧xb时间片大小默认为2时间片轮转法请输入进程总个数:3情输入进程号所需执行时间K 2? 33 6进程名1所需时间剩余时间036口口m 态雷绪 状运靠进程1已完成进程名所需时间剩余时间16态雷状运就进程名3所需时间61剩余时间41态如状运就:6:实验总结:如上图所示,进程在一个时间片执行完后进程,剩余时间为0,退出队列, 进程2在执行完一个时间片后仍然未完成,进入就绪队列末尾,以此类推,直至 三个进程都完成,这个时间片轮转算法比较简单,只需要处理好把未完成的进程 插入就绪队列末尾即可,把已完成的从就绪队列中释

9、放。调试过程中总是会出现 bug,但需要我们耐心一个个解决。第三个:多级队列反馈算法::3:实验方法,步骤:其思想是:当一个新进程进入内存后,首先将它放入第一个队列的末尾,按 fcfs的原则排队等待,当轮到该进程执行,如能在该时间片内完成,则撤出系统, 倘若在时间片内未完成,则放进第二个队列的末尾,按同样的fcfs原则等待执行。首先用create()函数创建链表并对其初始化,然后把链表放进processing ()函数中进行处理,若任然未完成,则把该进程放进insert ()函数中插入下一 队列。4:流程图开始:4:重要的函数和数据结构:struct PCB对进程结构体进行定义Create()

10、函数进行链表的初始化Insert ()函数把未完成的进程插入下一个就绪队列的末尾Processing()函数对链表循环进行处理Disp()函数对结果进行显示Insert()函数把进程插入下一个就绪队列void insert(struct PCB *p)struct PCB *p1,*p2;p2=p1=p;p2=(struct PCB *)malloc(sizeof(struct PCB);while(p1-next)p1=p1-next;p1-next=p2;p2-state=就绪中;p2-name=p-name;p2-run=p-rest;p2-queue=(p-queue)+1;p2-re

11、st=p-rest;p2-fragement=2*(p-fragement);p2-next=NULL;void processing(struct PCB *head)对占有cpu时间的进程进行系列的处理struct PCB *p1,*p2,*p3;int n=0;p1=head;while(p1)p1-rest=p1-rest-p1-fragement;if(p1-restrest=0;p1-state=运行中;disp(p1);if(p1-rest=0)printf(ttt 进程d 已完成n”,p1-name);if(p1-rest0)insert(p1);p1=p1-next;5:实验

12、效果:请分别输入进程总个数;3C:U sersAd mini strato rDesktQp德作系统实孙实稳一签爰反氛F请输入进程号所需执行时间1 32 53 8进程名所需时间1 32 53 8剩余时间158态雷绪状运费所在队列111时间片2进程名所需时间2 53 811剩余时间381态雷绪状运费所在队列11时间片224进程名所需时间3811剩余时间61m口口 态雷绪 状运费所在队列1时间片244进程名所需时间1123剩余时间03口m口 态雷绪 状运罄所在队列22时间片444进程1已完成进程名所需时间3剩余时间0所在队列时间片44进程2已完成进程名3所需时间6进程2已完成剩余时间2状知运行中所

13、在队列2时间片4进程名3所需时间2剩余时间0状知运行中所在队列3时间片8青按任意键继续-进程3已完成6:实验总结:对于这个多级队列反馈,我在结构体pcb的定义中增加了一个表示队列序号 的queue来从逻辑上标识不同的队列,:和让时间片的大小呈指数增长的变量 fragement,如上图所示,进程1在第一个时间片运行完后任然未完成,则进入第 二个就绪队列,它的时间片大小变为了 4,使得进入下个队列的进程能获得较大 的时间片。可见,多级反馈队列能够比较好的适应长作业和短作业的需求。实验二作业调度(实现了单道和多道)一:实验目的:编写并调试作业调度的模拟程序,了解作业调度在操作系统中的作用,以加深对作业调度算 法的理解。二:实验内容和要求:1、为单道批处理系统设计一个作业调度程序(1) 、编写并调试一个单道处理系统的作业调度模拟程序。(2) 、作业调度算法:分别采用先来先服务(FCFS)、响应比高者优先(HRN)的调度算法。(3) 、由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是 否得到满足,它所占用的CPU时限等因素。(4) 、每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:

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

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

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