操作系统驱动调度

上传人:pu****.1 文档编号:493801621 上传时间:2022-09-25 格式:DOCX 页数:9 大小:59.41KB
返回 下载 相关 举报
操作系统驱动调度_第1页
第1页 / 共9页
操作系统驱动调度_第2页
第2页 / 共9页
操作系统驱动调度_第3页
第3页 / 共9页
操作系统驱动调度_第4页
第4页 / 共9页
操作系统驱动调度_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《操作系统驱动调度》由会员分享,可在线阅读,更多相关《操作系统驱动调度(9页珍藏版)》请在金锄头文库上搜索。

1、实验三驱动调度模拟电梯调度算法,实现对磁盘的驱动调度。、实验目的磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。三、数据结构#defineM20typedefstru

2、ctPCBcharprocM;m工当前斗面号sCanf if(i= (%d I)旁的访问请求内访器求的可是是一 其法能使旋转距 小箸离最短的访问者有请求是M叫I 向的向外横前移相力响为向电移作图调度模拟算法具的访问者printf(正在运行的进程为:n);初而printf(n);/*if(direction=1)/启动磁盘 out_info();printf( upn);fI输入:进程 名物理地址W-生0, 1区间内的一个随机数进程排入等待队列printf(n);if(direction=-1)out_info();printf(downn);printf(n);*/printf(n);prin

3、tf(接受请求前的等待进程表为n);output();printf(请输入接受等待进程数量n);scanf(%d,&n);printf(请依次输入进程的信息n);printf(进程名,柱面号,磁道号,物理记录号n);for(m=1;mproc);scanf(%d,&p-cylinder_num);scanf(%d,&p-track_num);scanf(%d,&p-phy_num);p-next=NULL;insert(p);printf(接受请求后的等待进程表为:n);printf(n);output();elseprintf(没有接受进程,继续往下运行程序n);/电梯调度算法voidlif

4、t()intmin,cha,max;PCB*p,*q,*B;/p为指要删除的节点,q为查找的节点,B指向要删除节点的前一个节点q=head;if(q!=NULL)while(q!=NULL)&(q-cylinder_num!=h-cylinder_num)/找到第一个相同的柱面号q=q-next;if(q=NULL)/殷有柱面号相同的等待进程q=head;if(direction=1)/当前移臂方向upwhile(q!=NULL)&(q-cylinder_numcylinder_num)q=q-next;if(q=NULL)/股有比当前柱面号大的等待进程direction=-1;/置当前移臂方

5、向为外移q=head;/从小于当前柱面号的访问中选择一个最大的,p指向p=q;max=q-cylinder_num;q=q-next;while(q!=NULL)if(maxcylinder_num)max=q-cylinder_num;p=q;/p指向最大的节点q=q-next;else/有大于当前柱面号的等待进程min=q-cylinder_num;p=q;q=q-next;while(q!=NULL)/大于当前柱面号并且小于指定最小的节点时if(h-cylinder_numcylinder_num)&(q-cylinder_numcylinder_num)min=q-cylinder_n

6、um;p=q;/p指向最小的节点q=q-next;else当前移臂方向向外while(q!=NULL)&(q-cylinder_numh-cylinder_num)q=q-next;if(q=NULL)/股有比当前柱面号小的请求direction=1;q=head;/从大于当前柱面号的访问中选择一个最小的,p指向p=q;min=q-cylinder_num;q=q-next;while(q!=NULL)if(minq-cylinder_num)min=q-cylinder_num;p=q;/p指向最小的节点q=q-next;else/有比当前柱面号小的请求进程max=q-cylinder_nu

7、m;p=q;q=q-next;while(q!=NULL)/从小当前柱面号访问进程中选择一个最大的,用p指向if(p-cylinder_numcylinder_num&q-cylinder_numcylinder_num)max=q-cylinder_num;p=q;/p指向最大的节点q=q-next;/else/有比当前柱面号小的请求进程/else/当前移臂方向向外/if(q=NULL)/没有柱面号相同else/有柱面号相同的等待进程min=q-phy_num-h-phy_num;/第一个相同柱面号设为最小值p=q;/指向最小的节点,旋转距离最短的访问者if(minnext;while(q!

8、=NULL)if(q-cylinder_num=h-cylinder_num)/有柱面号相同cha=q-phy_num-h-phy_num;if(chacha)/有更小的节点,旋转距离最短的访问者min=cha;p=q;/指向最小的节点q=q-next;/while查找/elsecurrent_process(p);/保留选中的进程if(direction=1)/启动磁盘printf(被选中的等待进程为:n);printf(n);out_info();printf(upn);printf(n);if(direction=-1)printf(被选中的等待进程为:n);printf(n);out_

9、info();printf(downn);printf(n);if(p=head)head=p-next;elseB=head;while(B-next!=p)/找到要删除进程的前一个节点B=B-next;B-next=p-next;/被选中者退出I/O请求表/if(q!=NULL)结束elseprintf(请求进程表为空,接收请求或退出n);/电梯调度算法结束voidmain()/主函数system(cls);chargo=y;floatnumber;init();printf(*执行驱动调度*n);printf(*当前运行进程为*n);out_info();printf(upn);prin

10、tf(-*创建I/O请求进程等待表*-n);create_PCB();/创建进程链表printf(n);printf(I/O请求进程等待表为:n);printf(n);output();while(go=y|go!=n)printf(n);printf(输入01之间的数:n);printf(大于n);printf(小于n);scanf(%f,&number);while(numberlift();printf(调用电梯驱动调度算法后的I/O请求表为:n);printf(n);output();break;if(number=Receive_requests();/WI用接受请求模块printf

11、(是否继续n);printf(n);printf(n);scanf(%s,&go);main();七、心得体会模拟电梯调度算法,实现对磁盘的驱动调度磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使我理解并且掌握了驱动调度的职能。学到了书上学不到的东西,丰富了知识面收益匪浅,感谢老师的指导操作系统实验报告学号:01姓名:张广辉班级:软件工程091指导老师:丁红南通大学杏林学院2011年12

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 市场营销

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