最短寻道时间优先算法(SSTF)

最短寻道时间优先(Shortest Seek Time First,SSTF)是一种磁盘调度算法。它的基本思想是优先选择离当前磁头位置寻道时间最短的磁道进行访问。以使每次的寻道时间最短。该算法旨在通过减少磁头的移动距离来优化磁盘访问性能。

算法特点

优点

SSTF算法通过选择距离当前磁头最近的磁道请求进行访问,有效减少了磁头的移动距离,从而提高了磁盘的访问效率。

相比于先来先服务(FCFS)算法,SSTF算法在效率上有显著提升。

缺点

SSTF算法可能导致某些磁道请求长时间得不到服务,即产生“饥饿”现象。因为当新进程请求到达且其所要访问的磁道与磁头当前所在的磁道距离较近时,会优先满足这些请求,而忽略其他距离较远的请求。

92bcd0cabc0f4c938a33edf312d5cd9e.png代码实现

 

  • #include <iostream>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    
    int a[110];
    int ans[110];
    bool vis[110];
    
    
    int main()
    {
    	int n,start,index,sum=0;
    	cin >> n;//请求序列长度
    
    	cin>>start;//输入起点位置
    	//输入请求序列
    	for (int i = 1; i <= n; i++)
    	{
    		cin >> a[i];
    	}
    	int count = 0;
    	while (count < n)
    	{
    		int min = 10000000;
    		//找出离起点最近的点
    		for (int i = 1; i <= n; i++)
    		{
    			if (!vis[i])
    			{
    				if (min > abs(start - a[i]))
    				{
    					min=abs(start - a[i]);
    					index = i;//记录最近的点的索引
    				}
    			}
    		}
    		ans[count] = a[index];//记录路径
    		vis[index] = true;//标记已访问
    		start = a[index];//更新起点
    		sum += min;//累计寻道长度
    		count++;
    	}
    	for (int i = 0; i < n; i++)
    	{
    		cout << ans[i] ;
    		if (i != n - 1)
    			cout << "->";
    	}
    	cout << endl;
    	cout<<"寻道长度"<<sum<<endl;
    	return 0;
    }

     

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值