409417080xxx一班.docx

上传人:b****3 文档编号:12641380 上传时间:2023-04-21 格式:DOCX 页数:24 大小:393.31KB
下载 相关 举报
409417080xxx一班.docx_第1页
第1页 / 共24页
409417080xxx一班.docx_第2页
第2页 / 共24页
409417080xxx一班.docx_第3页
第3页 / 共24页
409417080xxx一班.docx_第4页
第4页 / 共24页
409417080xxx一班.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

409417080xxx一班.docx

《409417080xxx一班.docx》由会员分享,可在线阅读,更多相关《409417080xxx一班.docx(24页珍藏版)》请在冰豆网上搜索。

409417080xxx一班.docx

409417080xxx一班

石家庄经济学院华信学院

操作系统课程设计报告

 

(学院)系:

华信学院

专业:

计算机科学与技术

姓名:

迷路的小兰

班级:

一班

学号:

409417080XXX

指导教师:

姐姐

 

2012年6月22日

操作系统课程设计报告

姓名

小兰

学号

409417080112

日期

2012/6/11到2012/6/22

实验室

机房2

指导教师

姐姐

设备编号

设计题目

驱动调度

一、设计内容

模拟电梯调度算法,实现对磁盘的驱动调度。

二、设计目的

磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。

它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。

系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。

这就叫驱动调度,使用的算法称为驱动调度算法。

驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。

本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。

通过实验使自己理解和掌握驱动调度的职能。

三、设计过程

同组成员:

菲菲

本人主要工作:

驱动调度(电梯调度)和随机数函数

先向指针初始方向访问进程,直到没有进程访问为止,再返回指针初始位置,向反方向访问,随机数函数是根据时间计算数值用的是rand()和srand()函数,头文件用的是stdlb.h和time.h

1.数据结构设计(链表,指针,数组)

(1)结构体

#defineSTRUCT_H

#defineM20

typedefstructPCB

{

charpro[M];//进程名

intz_num;//柱面号

intc_num;//磁道号

intw_num;//物理记录号

structPCB*next;

}PCB;

2.算法设计

本设计主要包含以下五部分功能模块:

1,主函数模块main();

2,驱动调度模块drive();

3,初始化模块init(),current_process(PCB*Q)

4,接受请求模块Receive_requests(),insert();

5,输出模块output(),out_info();

下面对各功能模块进行详细说明:

(1)主函数模块

main()

入口参数:

初始化的值及进程输入中的值

出口参数:

运行结果

功能:

模拟调度运行

流程图:

 

 

图1主函数流程图

 

(2)驱动调度模块

drive()

入口参数:

等待进程

出口参数:

访问及删除的进程信息

功能:

电梯调度进程

 

(3)初始化模块

A.voidinit()

入口参数:

出口参数:

初始值

功能:

初始化指针

流程图:

B.current_process(PCB*Q)

入口参数:

出口参数:

进程链表初始值

功能:

初始化进程链表

流程图:

(4)接受请求模块。

A.Receive_requests()

入口参数:

随机数,及选择数字

出口参数:

进程I/O信息

功能:

输入请求进程

流程图:

 

B.insert()

入口参数:

初始化指针p

出口参数:

q的下一个指针位置

功能:

插入进程信息

流程图:

(5)输出模块

A.output()

入口参数:

要访问的进程信息值

出口参数:

I/O表

功能:

输出访问进程信息

流程图:

B.out_info()

入口参数:

接受请求的进程信息

出口参数:

输出进程表

功能:

输出访问进程

流程图:

 

四、程序运行结果

1、源文件dianti\main.cpp

2、运行结果:

(1)运行界面

输出:

初始值

输入:

结果:

如图1

图1运行界面

 

(2)生成随机数

输入:

enter

输出:

随机数

结果:

<0.5接受请求

 

图2生成随机数

 

(3)选择退出

输入:

n

输出:

退出界面

结果:

 

图3选择退出

 

(4)输入信息不符合要求

输入:

进程信息

输出:

错误提示或者正确信息

结果:

 

图4输入信息不符合要求

 

(5)接受请求界面

输入:

符合要求的进程信息

输出:

输入的信息,I/O请求信息表

结果:

 

图5接受请求界面

 

图6接受请求界面,输出I/O信息表

 

(6)驱动调度界面

输入:

enter

输出:

随机数>0.5

结果:

驱动调度:

 

图7驱动调度界面

PS:

c的柱面号离初始指针最近,54>50,方向向里up

 

 

图8接上一步运行,接受请求界面

 

图9驱动调度输出访问进程并删除

Ps:

57>54>50,up

 

图10

 

图11驱动调度并删除进程

PS:

199>57>54>50,up

 

图11驱动调度并删除进程

PS:

因为没有大于50的可以访问的进程了,所以指针down,d的磁道号最近

 

图12驱动调度并删除进程

 

图11驱动调度并删除进程

PS:

49=49,物理记录号2>1,

 

图11驱动调度并删除进程

PS:

49=49>42,物理记录号2=2,方向down

 

图12退出进程

PS49=49>42=42down,退出。

五、设计总结

通过和同组同学合作,终于把驱动调度的模拟程序写出来了,我们用的是链表结构和指针模拟的调度进程,我负责主函数里的随机数和驱动调度的编写,程序刚写出来错误百出,驱动调度中的旋转调度不知道如何写,参阅多资料终于解决了这个问题,初始化头指针开始设值为0,指针只能向里运行,多亏同组同学及时发现这个问题,将初值改了,程序才得以正常运行。

为了简单明了,我们将程序分成几个模块。

我们在主函数里还引用了随机数函数,只用rand()只能产生伪随机数,需要srand()和rand()结合使用,这个函数是基于随机数的函数。

我负责驱动调度是使用的电梯算法(scan算法),跟天体运行过程相仿,编程简单无需计算,提高了程序的效率,电梯在2楼只能先向上访问楼层,直到楼顶才可访问2楼以下的楼层,大大减少了寻道距离。

通过实习我复习了数据结构和c语言,为考研奠定了基础。

而且更加深入的理解了磁盘调度的算法,对考验操作系统复习提供了帮助。

这次实习提高了我的编程能力,及熟练使用了循环语句和选择语句。

希望指导老师可以多设几个,这样的课程设计时间长些。

 

六、指导教师评语及成绩

评语:

 

成绩:

 

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1