赞
踩
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.实现代码如下:
- n = int(input())
- count = 0
- list_1 = [100, 185, 39, 124, 16, 126, 67, 69]
- list_1.sort()
- for i in list_1:
- if n <= i:
- pn = list_1.index(i)
- break
- for j in range(pn, len(list_1)):
- count += abs(n - list_1[j])
- n = list_1[j]
- while pn > 0:
- pn -= 1
- count += n - list_1[pn]
- n = list_1[pn]
- print(count)
2.最短寻道优先算法(SSTF)
算法简介:SSTF即最短寻道时间优先(ShortestSeekTimeFirst),该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,但这种调度算法却不能保证平均寻道时间最短。
A.提出问题:假设磁头当前停留在第55道,正在向磁道号增加的方向移动。每移动一个磁道需要花费1ms,现有一个磁道访问的请求序列,100,185,39,124,16,126,67,69,忽略磁盘启动和减速时间,且不计旋转延时,则采用最短寻道优先(SSTF)调度算法需要花费的磁道访问总时间是?
B.实现代码如下:
- n = int(input())
- count = 0
- list_1 = [100, 185, 39, 124, 16, 126, 67, 69]
- list_2 = []
- while len(list_1) != 0:
- for i in list_1:
- list_2.append(abs(n - i))
- tidy = min(list_2)
- count += tidy
- pn = list_2.index(tidy)
- n = list_1[pn]
- list_1.pop(pn)
- list_2.clear()
- print(count)
写在最后:这是本人第一篇文章,代码是自己在刷计算机四级题目时懒得算,突发奇想写下来的。比较粗糙,难免有不少纰漏,仅供自身学习记录,大家可以简单参考一二,谢谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。