0、磁盘的驱动调度有“移臂调度”和“旋转调度”两部分组成。 常用的移臂调度算法有: 先来先服务算法 最短寻找时间优先算法 电梯调度算法 单向扫描算法。
(要注意题目要求的是哪种算法,求总移动距离还是平均移动距离)
假设柱面的编号从0到199。例如,如果现在读写磁头正在53号柱面上执行输入输出操作,而等待访问者依次要访问的柱面为98,183,37,122,14,124,65,67。
(1).先来先服务调度算法
当53号柱面上的操作结束后,访问柱面的次序为98,183,37,122,14,124,65,67。
读写磁头总共移动了640个柱面的距离。(从53开始,每次移动距离之和,平均移动距离是640/8=80个柱面)
(2).最短寻找时间优先调度算法
现在当53号柱面的操作结束后,访问次序为65、67、37、14,98,122,124,183。 读写磁头总共移动了236个柱面的距离。(从53开始,每次找距离当前最近的进行移动)
(3) 电梯调度算法
由于该算法是与移动臂的方向有关,所以,应分两种情况来讨论。
(i)移动臂先向外移。当前正在53号柱面执行操作的读写磁头是移动臂由里向外(向0号柱面方向)带到53号柱面的位置,因此,当访问53号柱面的操作结束后,依次访问的次序为37、14,65,67,98,122,124,183。读写磁头共移动了208个柱面的距离。
(ii)移动臂先向里移。当前正在53号柱面执行操作的读写磁头是移动臂由外向里(向柱面号增大方向)带到53号柱面的位置,因此,当访问53号柱面的操作结束后,依次访问的次序为65、67,98,122,124,183、37,14柱面的访问者服务。读写磁头共移动了299个柱面的距离。
(总之象电梯一样,移动一个来回完成所有访问)
(4).单向扫描调度算法
1. 一个磁盘组有100个柱面,每柱面8个磁道,每磁道8个扇区,现有一个文件含5000个记录,每记录与扇区大小相等,在磁盘组上顺序存放(从0面0道0扇区开始),问(1)第3468个记录的物理位置 (2)第56个柱面上第7磁道第5扇区对应的块号。
(1) 3468/(8*8)=54余12,12/8=1余4, 物理位置是第54个柱面第1磁道第4块 (2) 56*(8*8)+7*8+5
2. 采用单向扫描(cscan, 也叫循环扫描),每块2KB,共有16384块,(1)说明如何进行磁盘块管理 (2)设某单面磁盘6000转/分钟,每磁道100扇区,相邻磁道移动时间需1ms,某时刻磁头位于100号磁道, 向内移动,磁道请求队列为50,90,30,120,从这4个磁道中都是随机读取1个扇区,问需多少时间。
移动柱面次序:100,120,30 ,50,90共170个柱面, 所以移动磁头时间为170*1=170ms; 6000转/分钟即是10ms/转,平均等待时间为转半圈时间,等4次,因此等待时间10/2*4=20ms; 读一个扇区即是旋转一个扇区,需10/100=0.1ms,共4次,因此读取时间是0.1*4=0.4ms; 所以总时间是三者之和190.4ms
3.设磁盘的每个磁道分成9个扇区,现有一文件共有A、B、C、D、E、F、G、H、I 9条记录,每个记录的大小与块的大小相等,设磁盘转速为27ms/转,每读出一块后需要2ms的处理时间。如忽略其他辅助时间,问:
(1) 如果顺序存放这些记录并顺序读取,处理该文件要用多少时间?
(2) 如果要顺序读取该文件,记录如何存放处理时间最短?需要多少时间?
答:磁盘转速为27ms/转,每个磁道存放9条记录,读取一条记录需要是将=27/9=3ms。 (1) 读出并处理A记录需要5ms,后续8条记录的读取并处理时间相同,等待时间为
27-2=25ms, 于是处理9条记录的总时间为8(27-2)+9(3+2)=245ms.
(2) 读取并处理一条记录的时间需5ms,当读出并处理A记录时,假设A记录放在第0
个块中,读写头移到第1个块的中间,为了能顺序读到B记录,应将它放在第2个块中,即应将记录按如下顺序存放.。
块号 0 1 2 3 4 5 6 7 8 记录 A F B G C H D I E 这样,处理一条记录并将此头移到下一条记录的时间为 3(读出)+2(处理)+1(等待)=6ms
最后一次只需要5ms, 则处理9条记录的总时间为:6*8+5=53ms.
4.一个磁盘组有10个盘面,每个盘面100个磁道,每个磁道16个扇区,用位示图管理空 闲块,问位示图占多大空间?
10*100*16/8=2000(字节)
5.一个文件系统,其文件控制块FCB大小为64B,一个盘块大小为1KB,采用一级目录,假定文件目录中有3200个目录项,问查找一个文件平均需要访问磁盘多少次
一个盘块(扇区)可放1024/64=16个FCB,3200个目录项需要3200/16=200块,所以查找一个文件平均需要访问磁盘100次
6.文件系统采用两级索引分配方式,磁盘块大小为1KB,每个块号(可看作索引表省略逻辑块号,只有物理块号一个字段,即索引表中一项)占4字节,问单个文件最大长度?
1024/4=256 256*256*1KB=64MB
7.一个记录式文件,链式分配方式,逻辑记录固定长度是100字节,盘块为512字节,问修改第22个逻辑记录需要启动磁盘多少次
22*100/512=4余XXXX, 所以要读到第5块, 即启动磁盘5次
8.磁盘有500块,块号0-499, 用位示图,当字长是32位时,需要几个字长空间来存放该位示图? 图中第i字节第j位表示的块号?(从0开始计算) 需要空间500/32=16字长; 表示块号是32*i+j
9.盘块大小为512字节,一个文件依次存放在50,121,75,80,63块上,若要存取文件第1569逻辑字节处的信息,问需要访问哪个物理盘块?
1569/512=3余XXXX, 对应物理块号为80,所以要访问第80块。
10.块大小为512B,文件A有590个逻辑记录,每个记录255B,则每块存放2个记录。文件A的路径为\\root\%usr\%usr1\\mytext\\A. (root表示根目录) (1) 链式分配,读A中第590条记录,需要访问磁盘多少次 (2)连续分配,读A中第590条记录,需要访问磁盘多少次 (3)目前处于\\root\%usr\%usr2目录下,如何访问A
答:(1) usr, usr1, mytext这3级目录需要访问3次, 590/2=295, 所以共需要298次 (2)连续分配访问文件只需要1次, 访问目录同上需要3次,所以共需要3+1=4次
(3)用绕道法,.. \%usr1\\mytext\\A
11.混合索引,块长1KB,每个块号长度(索引表每项长度)为4字节,将以下逻辑地址转换成物理位置。 (1)9000 (2)14000 (3)350000
(1)9000/1024=8余808,所以物理位置是367块,偏移量808字节
(2)14000/1024=13余688,13-10=3,所以物理位置是953块,偏移量688字节
(3)350000/1024=341余816,341-10-256=75,所以物理位置是3333块,偏移量816字节
12.索引表有12项,每项占4字节,前10项直接索引,后2项分别指向一级索引表和二级索引表,每个盘块4KB, 问最大文件长度是多少?
10*4KB+1*1k*4KB+1*1K*1K*4KB=40KB+4MB+4GB
13.某磁盘组,每个盘面有200个磁道,格式化时每磁道分成4个扇区,整个磁盘组有8000个物理块,问有多少个盘?
8000/(200*4)=10个盘面, 一个盘有两个面,所以有5个盘。