当前位置:   article > 正文

用Python简单实现scan(电梯)算法和最短寻道优先算法

用Python简单实现scan(电梯)算法和最短寻道优先算法

1.SCAN(电梯)算法

打个比方:如果请求调度的磁道为98, 183, 37, 122, 14, 124, 65, 67,磁头从53号磁道开始移动,磁头就会按照65, 67, 98, 122, 124, 183, 37,14 的顺序依次查找,并将数据输入内存。

A.提出问题:假设磁头当前停留在第55道,正在向磁道号增加的方向移动。每移动一个磁道需要花费1ms,现有一个磁道访问的请求序列,100,185,39,124,16,126,67,69,忽略磁盘启动和减速时间,且不计旋转延时,则采用SCAN(电梯)调度算法需要花费的磁道访问总时间是?

B.实现代码如下:

  1. n = int(input())
  2. count = 0
  3. list_1 = [100, 185, 39, 124, 16, 126, 67, 69]
  4. list_1.sort()
  5. for i in list_1:
  6. if n <= i:
  7. pn = list_1.index(i)
  8. break
  9. for j in range(pn, len(list_1)):
  10. count += abs(n - list_1[j])
  11. n = list_1[j]
  12. while pn > 0:
  13. pn -= 1
  14. count += n - list_1[pn]
  15. n = list_1[pn]
  16. print(count)

2.最短寻道优先算法(SSTF)

算法简介:SSTF即最短寻道时间优先(ShortestSeekTimeFirst),该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。

A.提出问题:假设磁头当前停留在第55道,正在向磁道号增加的方向移动。每移动一个磁道需要花费1ms,现有一个磁道访问的请求序列,100,185,39,124,16,126,67,69,忽略磁盘启动和减速时间,且不计旋转延时,则采用最短寻道优先(SSTF)调度算法需要花费的磁道访问总时间是?

B.实现代码如下:

  1. n = int(input())
  2. count = 0
  3. list_1 = [100, 185, 39, 124, 16, 126, 67, 69]
  4. list_2 = []
  5. while len(list_1) != 0:
  6. for i in list_1:
  7. list_2.append(abs(n - i))
  8. tidy = min(list_2)
  9. count += tidy
  10. pn = list_2.index(tidy)
  11. n = list_1[pn]
  12. list_1.pop(pn)
  13. list_2.clear()
  14. print(count)

写在最后:这是本人第一篇文章,代码是自己在刷计算机四级题目时懒得算,突发奇想写下来的。比较粗糙,难免有不少纰漏,仅供自身学习记录,大家可以简单参考一二,谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/394924
推荐阅读
相关标签
  

闽ICP备14008679号