os_kernel_lab/related_info/lab8/disksim-homework.md
2015-05-18 01:14:38 +08:00

87 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 磁盘访问 练习
## 磁盘抽象模型
一个磁盘反指针旋转有3个磁道和一个磁头每个磁道有12个扇区。
完成一个磁盘访问请求的时间包括:寻道时间(seek time)+旋转时间rotational time+传输时间transfer time
执行如下
```
$ ./disksim.py -a 10 -G
```
`-a 10`表示访问扇区10 `-G`表示显示图形动画。
可以看到磁头在外侧磁道的扇区6的中间位置 扇区10与扇区6在一个磁道上。在图形界面上按`s`键,将启动模拟执行过程。并在执行结束后,按`q`键,则退出图形,并显示统计结果如下:
```
REQUESTS ['10']
Block: 10 Seek: 0 Rotate:105 Transfer: 30 Total: 135
TOTALS Seek: 0 Rotate:105 Transfer: 30 Total: 135
```
表示寻道时间是0个时间单位旋转时间是105个时间单位传输时间是30个时间单位总共的磁盘访问请求的时间是135.注意从扇区6到扇区9旋转了90度而为了进行传输需要从扇区910的中间位置开始从扇区1011的中间位置结束。所以需要再旋转15度即旋转了105度而每旋转1度花费1个时间单位所以旋转花费了105个时间单位。
如果执行
```
$ ./disksim.py -a 1011 -G
```
表明发出了2个磁盘访问请求可得到如下的结果
```
REQUESTS ['10', '11']
Block: 10 Seek: 0 Rotate:105 Transfer: 30 Total: 135
Block: 11 Seek: 0 Rotate: 0 Transfer: 30 Total: 30
TOTALS Seek: 0 Rotate:105 Transfer: 60 Total: 165
```
由于访问完扇区10后紧接着立刻访问扇区11所以寻道和旋转时间都是0,总的访问时间是165.
如果需要寻道,比如执行
```
$ ./disksim.py -a 1018 -G
```
执结果如下
```
REQUESTS ['10', '18]
Sector: 10 Seek: 0 Rotate:105 Transfer: 30 Total: 135
Sector: 18 Seek: 40 Rotate:170 Transfer: 30 Total: 240
TOTALS Seek: 40 Rotate:275 Transfer: 60 Total: 375
```
这里一个寻道的时间是40个时间单位。且假设采用FIFOFCFS磁盘调度算法。当访问完扇区10后磁头需要寻道到中间磁道处包括扇区18扇区10对应的中间磁道的扇区是22号扇区从扇区22扇区18需要旋转7个扇区的距离23,12,13,14,15,16,17花费210个时间单位注意这里面包含了40个寻道的时间单位所以旋转所化时间为210-40=170个时间单位。这样总体的访问时间为375
请回答如下问题:
## 问题 1请执行 FIFO磁盘调度策略
```
./disksim.py 采用FIFO -a 0
./disksim.py -a 6
./disksim.py -a 30
./disksim.py -a 7,30,8
./disksim.py -a 10,11,12,1324,1
```
请回答每个磁盘请求序列的IO访问时间
## 问题 2请执行 SSTF磁盘调度策略
```
./disksim.py -a 10,11,12,1324,1
```
请回答每个磁盘请求序列的IO访问时间
## 问题 3请执行 SCAN, C-SCAN磁盘调度策略
```
./disksim.py -a 10,11,12,1324,1
```
请回答每个磁盘请求序列的IO访问时间