【操作系统导论】第37章课后习题解答

前言

在做之前请仔细阅读"作业前的准备",内容仅作记录,请谨慎参考。

作业前的准备

安装python库

这次作业的文件夹名称为file-disks
如果尝试使用提供的disk.py进行一次模拟:
在这里插入图片描述
会被提示缺少必要的库,我们需要在Linux下安装python名为tk的库
需要两条命令:
sudo apt-get install python-pip
sudo apt-get install python-tk

Readme中的关键信息

在这里插入图片描述
从中得到关键信息如下:
默认转速:1度/时间单位(没错,就是角度的度)
一次完整旋转所需时间:360个时间单位
传输一个扇区相当于转30度:
在这里插入图片描述
比如要传输1所在扇区的数据,磁头从01的中间点开始,到12的中间点结束完成一次传输
因此单个扇区传输所需时间:30个时间单位 在这里插入图片描述
从中得到关键信息:
相邻磁道之间有40个单位距离,默认寻道时间为1/单位时间
加上“-c”选项可以直接得到结果而不用等它转
OK,之后就可以快乐的做(受)作业(苦)了

37.1

题目描述

在这里插入图片描述

分析及解答

第一组:

./disk.py -a 0 -G
在这里插入图片描述
如图所示,第一组需要旋转到0所在扇区进行数据传输:
寻道时间:0
旋转时间:到达0所在扇区(11~0中间)一共165度,所以花费165单位时间
传输时间:单个扇区占30度,所以花费30单位之间
总时间:0+165+30=195单位时间
按下s模拟,查看模拟结果:
在这里插入图片描述
在这里插入图片描述
可以发现与计算结果一致。

第二组:

./disk -a 6 -G
在这里插入图片描述
如图所示,第二组需要旋转到6所在扇区进行数据传输:
寻道时间:0
旋转时间:磁头从指向6开始到指向5~6的中间,一共旋转345度,花费345单位时间
传输时间:单个扇区占30度,所以花费30单位之间
总时间:0+345+30=375单位时间
按下s模拟,查看模拟结果:
在这里插入图片描述
在这里插入图片描述
可以发现与计算结果一致。

第三组:

./disk.py -a 30 -G
在这里插入图片描述
如图所示,第三组需要旋转到30所在扇区进行数据传输:
寻到时间:最外磁道到最内磁道距离为80单位,花费80单位时间
旋转时间:如果不需要切换磁道需要345单位时间,寻到花费80单位时间,在寻道时磁盘已经在旋转,由于磁头不在目标磁道,所以旋转花费265单位时间
传输时间:单个扇区占30度,所以花费30单位之间
总时间:80+265+30=375单位时间
按下s键,查看模拟结果:
在这里插入图片描述
在这里插入图片描述
可以发现与计算结果一致。

第四组:

./disk.py -a 7,30,8 -G
在这里插入图片描述
如图所示,第四组需要旋转到7 30 8三个扇区进行数据传输:
对于7所在扇区:
寻道时间:0
旋转时间:从6到达6~7中间位置经过15度,花费15单位时间
传输时间:单个扇区占30度,所以花费30单位之间
总时间:0+15+30=45单位时间
对于30所在扇区:
寻道时间:跨越了两个磁道,经过80单位距离,花费80单位时间
旋转时间:如果在同一磁道,到达29~39中间需要经过300度,花费300单位时间,但这其中80单位时间磁头未在目标磁道,所以旋转花费220单位时间
传输时间:单个扇区占30度,所以花费30单位时间
总时间:80+220+30=330单位时间
对于8所在扇区:
寻道时间:跨越了两个磁道,经过80单位距离,花费80单位时间
旋转时间:如果在同一磁道,旋转到7~8中间需要经过30度,花费30单位时间,但这一时间小于寻道时间,磁盘并不会预测磁头位置而停下,所以需要再额外旋转一周,旋转花费30+360的时间,减去寻道时间,旋转时间为310单位时间
传输时间:单个扇区占30度,所以花费30单位时间
总时间:80+310+30=420单位时间
综上:
总寻道时间:0+80+80=160单位时间
总旋转时间:15+220+310=545单位时间
总传输时间:30+30+30=90单位时间
总花费时间:160+545+90=795单位时间
按下s键,查看模拟后的结果:
在这里插入图片描述
在这里插入图片描述
可以发现与计算结果一致。

第五组:

./disk.py -a 10,11,12,13
在这里插入图片描述
在这里插入图片描述
如图所示,第四组需要旋转到10 11 12 13四个扇区进行数据传输:
对于10所在扇区:
寻道时间:0
旋转时间:磁盘从6开始旋转到9~10之间的位置,经过了105度,花费了105单位时间
传输时间:单个扇区占30度,所以花费30单位时间
总时间:0+105+30=135单位时间
对于11所在扇区:
寻道时间:0
旋转时间:磁头此时处于10~11之间的位置,直接开始传输数据,所以旋转时间为0
传输时间:单个扇区占30度,所以花费30单位时间
总时间:0+0+30=30单位时间
对于12所在扇区:
寻道时间:磁头移动到12所在的磁道,移动距离为40单位,花费40单位时间
旋转时间:如果在同一磁道,旋转到23~12中间需要经过0度,花费0单位时间,但这一时间小于寻道时间,磁盘并不会预测磁头位置而停下,所以需要再额外旋转一周,旋转花费0+360的时间,减去寻道时间,旋转时间为320单位时间
传输时间:单个扇区占30度,所以花费30单位时间
总时间:40+320+30=390单位时间
对于13所在扇区:
寻道时间:0
旋转时间:磁头此时处于12~13之间的位置,直接开始传输数据,所以旋转时间为0
传输时间:单个扇区占30度,所以花费30单位时间
总时间:0+0+30=30单位时间
综上:
总寻道时间:0+0+40+0=40单位时间
总旋转时间:105+0+320+0=425单位时间
总传输时间:30+30+30+30=120单位时间
总花费时间:135+30+390+30=585单位时间
按下s键,查看模拟后的结果:
在这里插入图片描述
在这里插入图片描述
可以发现与计算结果一致。

37.2

题目描述

在这里插入图片描述

分析及解答

修改磁盘的寻道速率,对于不需要进行寻道的数据传输来说,时间没有变化,寻道速率将影响含有寻道过程花费的时间,即-a 30、-a 7,30,8、-a 10,11,12,13这三组。
[命令格式在原命令加上-S x,对于寻道时间没有变化的组,在此不再分析]
在这里插入图片描述
-S 2
在这里插入图片描述
-S 4
在这里插入图片描述
-S 8
在这里插入图片描述
-S 10
在这里插入图片描述
-S 40
在这里插入图片描述
-S 0.1
在这里插入图片描述

37.3

题目描述

在这里插入图片描述

分析及解答

由于磁盘的旋转速率变慢,因此所有的旋转时间都将变长,另外由于旋转速率变慢,数据传输所花费的时间也将变得更长。[一共有15种组合,在此不在一一列出]。

37.4

题目描述

在这里插入图片描述

分析及解答

对于-a 7,30,8
在FIFO磁盘调度策略下,处理顺序为7–>30–>8
命令:./disk.py -p FIFO -a 7,30,8 -G
在这里插入图片描述
在SSTF磁盘调度策略下,处理顺序为7–>8–>30
命令:./disk.py -p SSTF -a 7,30,8 -G
在这里插入图片描述

37.5

题目描述

在这里插入图片描述

分析及解答

在SSTF磁盘调度策略下,处理顺序为7–>8–>30
命令:./disk.py -p SSTF -a 7,30,8 -G
在这里插入图片描述
在SATF磁盘调度策略下,处理顺序为7–>8–>30
命令:./disk.py -p SATF -a 7,30,8 -G
在这里插入图片描述
可以看到在SSTF和SATF磁盘调度策略下,对于-a 7,30,8处理所花费的时间是一致的
SATF磁盘调度策略优于SSTF磁盘调度策略的例子有很多:
-a 8,25,5
在SSTF磁盘调度策略下,处理顺序为8–>25–>5
命令:./disk.py -p SSTF -a 8,25,5 -G
在这里插入图片描述
在SATF磁盘调度策略下,处理顺序为8–>5–>25
命令:./disk.py -p SATF -a 8,5,25 -G
在这里插入图片描述
当在同时磁道旋转时间过长,大于磁头转移到别的磁道再转移回来的时间时,SATF磁盘调度策略将优于SSTF磁盘调度策略。

37.6

题目描述

在这里插入图片描述

分析及解答

对于-a 10,11,12,13的处理,之所以没有被特别好的处理是因为磁头寻道置12,13扇区所在磁道时,已经越过了12,13所在扇区。
磁道偏斜可以改变磁盘的扇区构造
在这里插入图片描述
如上图所示,左边是磁道偏斜为0的情况,右边是磁道偏斜为1的情况,相比没有磁道偏斜的情况,当磁道偏斜为1时,内测磁道将相对于其外侧的那个磁道进行一个扇区的偏斜。

默认寻道速率为1单位距离/单位时间,因此磁头从最外侧磁道转移至中间磁道需要花费40单位时间,为了减少这组请求的总时间,需要在磁头到达中间磁道时还未越过23~12的中间位置,因此可以设置磁道偏斜为2:
命令:./disk.py -o 2 -a 10,11,12,13
在这里插入图片描述
假设磁头寻道速率为S,磁道偏斜为O,则对于该处理流,需满足:
(S/40)/(O×30+15)<1
其中满足上式的较小的非负整数 O 即为针对题设请求流的偏斜

写在后面

这次不如点个赞再走呗 (✿◠‿◠)

  • 30
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
操作系统导论》是一本关于操作系统基本概念和原理的教材。操作系统是计算机系统中最核心的软件之一,它管理和控制计算机硬件资源,并提供给用户和应用程序一个简单易用、高效稳定的接口。 《操作系统导论》主要内容包括操作系统的历史、发展背景,以及操作系统的基本概念、功能和特性等。通过对操作系统的研究,读者能够了解操作系统的架构和组成,掌握操作系统的重要原理和算法,并能够利用这些知识进行操作系统的设计和开发。 在《操作系统导论》中,读者将深入学习操作系统的各个模块,比如进程管理、内存管理、文件系统等。通过对这些模块的学习,读者能够理解操作系统的核心功能,并能够掌握操作系统的基本工作原理。此外,书中还介绍了操作系统的各种经典算法和策略,如调度算法、页面置换算法等,这些算法是实现操作系统功能的基础。 除了基本概念和原理外,《操作系统导论》还涵盖了一些研究热点和前沿技术,如分布式系统、虚拟化技术和云计算等。通过深入了解这些新领域的内容,读者可以了解到操作系统在不同领域的应用和发展趋势。 总之,《操作系统导论》是一本系统介绍操作系统的教材,内容丰富、深入浅出,适合计算机科学与技术相关专业的学生和从业人员阅读使用。通过学习这本书,读者能够全面了解操作系统的基本概念和原理,提高操作系统的设计和开发能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼树C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值