操作系统实验报告(9)

2019-08-01 23:24

山东科技大学学生课程设计

{ f=0; break; } }

if(f==0) //若有进程没完成,则为不安全状态 {

printf(\系统此时处在不安全状态!\ safe=0; } else {

printf(\系统当前为安全状态,安全序列为:\ for(i=0;i

printf(\输出安全序列 printf(\ } }

void print() //输出函数 {

int i,j; printf(\

printf(\此时资源分配情况**********************\\n\

printf(\进程 Max Allocation Need \\n\ for (i=0;i

printf(\ for(j=0;j

- 38 -

山东科技大学学生课程设计

printf(\ }

for(j=0;j

printf(\ }

for(j=0;j

printf(\ }

for(j=0;j

printf(\ }

for(j=0;j

printf(\ }

printf(\ }

printf(\各类资源可利用的资源数为:\ for (j=0;j

printf(\ }

printf(\}

- 39 -

山东科技大学学生课程设计

2.4运行结果

3.磁盘调度算法 3.1最短寻道优先

3.1.1 需求分析

该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。SSTF算法的平均每次磁头移动距离,明显低于FCFS的距离。SSTF较之FCFS有更好的寻道性能,故过去一度被广泛采用过。

基本功能如下:

(1)将磁道号由小到大的排序;

(2)通过比较左右距离的大小,确定下一寻道号 以下是各功能模块的功能描述: 1.主函数模块

本模块的主要功能是获得磁道号和进行次磁道调度。

- 40 -

山东科技大学学生课程设计

2.排序功能模块

本模块的主要功能是将磁道号进行排序,按从小到大排成一个数组。 3.输出模块

本模块的主要功能是输出磁盘调度后的磁道号。 测试数据: 磁道数目:5 磁道号:3 2 1 9 6 当前磁道号:4

3.1.2 概要设计

本次程序使用c语言的方法,首先将获得的磁道号进行排序,然后在主函数中进行磁盘的调度,最后输出磁道号。

3.1.3 详细设计

1.主函数模块

首先进行磁道号的获取,然后调用排序函数sort(),将进程号进行排序,在主函数中,先通过循环得到当前磁道号的位置,通过比较与左右磁道号的距离,决定下一个磁道是左还是右,并且进行输出。

2.排序模块

将磁道号进行由小到大排序,并存入数组。

- 41 -

山东科技大学学生课程设计

开始 输入磁道号 调用sort()函数 输入当前磁道号 否 当前磁道号>a[i] 是 a[i]-a[left]>a[i]-a[righ是 否 a[i]=a[left] a[i]=a[right输出a[i] 是 是否还有磁道号 否 结束 图2:sstf流程图

- 42 -


操作系统实验报告(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:DNF大转移NPK补丁翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: