栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

操作系统 磁盘调度算法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统 磁盘调度算法

磁盘调度算法 FCFS

将需要分配的先来先分配。算法实现,直接计算每两个之间磁盘移动的距离。取一个绝对值。

void FCFS(){
	cout<<"FCFS: n";
	int pre=100;
	cout<<"n从100号磁道开始nn";
	cout<<"下一个磁道号 移动距离n"<
		cout<<"     "< 
SSTF 

FCFS的平均寻到距离较大。SSTF算法会选择要求访问的磁道与当前磁头所在的磁道距离最近的。

算法实现:用循环暴力去未分配磁盘的作业序列里找和当前最近的。

void SSTF(){
	cout<<"SSTF: n";
	int pre=100,cnt=0,sum=0;
	bool vis[1010];
	for(int i=0;i
		int pos=0,mi=1e9;
		for(int i=1;i
			if(abs(q[i]-pre)
				pos=i;
				mi=abs(q[i]-pre);
			}
		}
		cout< 
电梯磁盘调度算法 SCAN 

固定一个方向,扫描到边界,到边界之后在回到另一边。

算法实现:将序列排好序,找到起始位置,固定开始方向向右,循环向右,然后再循环向左。

void SCAN(){
	cout<<"SCAN:"<
		if(q[i]==100) {
			start=i;
			vis[i]=true;
			break;
		}
	}

	cout<<"下一个磁道号 移动距离n"<
		cout<=0;i--){
		cout< 
实验九 磁盘调度算法的模拟 

使用C语言完成磁盘调度算法中的最短寻道时间优先调度算法和电梯调度算法!假设进程请求的访问磁盘的磁道序列号为:100 55 58 39 18 90 160 150 38 184请输出采用不同算法时访问的磁道号,并计算平均寻道长度。请提交源代码和运行结果截图!

代码:

#include
using namespace std;
const int N=1010;
int len=0,x;//len表示序列的长度
int q[N];//存储作业序列

void FCFS(){
	cout<<"FCFS: n";
	int pre=100;
	cout<<"n从100号磁道开始nn";
	cout<<"下一个磁道号 移动距离n"< //循环遍历一遍即可
		cout<<"     "<
	cout<<"SSTF: n";
	int pre=100,cnt=0,sum=0;
	bool vis[1010];
	for(int i=0;i
		int pos=0,mi=1e9;
		for(int i=1;i//两重循环,每一次都循环找和当前最近的,这里其实可以二分的,但是这种作业没必要。
			if(abs(q[i]-pre)
				pos=i;
				mi=abs(q[i]-pre);
			}
		}
		cout<
	cout<<"SCAN:"<
		if(q[i]==100) {
			start=i;
			vis[i]=true;
			break;
		}
	}

	cout<<"下一个磁道号 移动距离n"<//向右扫描
		cout<=0;i--){//循环向左扫描
		cout<
	printf("请输入进程请求的访问磁盘的磁道序列号(输入-1结束)n");
	while(cin>>x){
		if(x==-1) break;
		q[len++]=x;
	}
	FCFS();
	cout<<"n<---------------------------->n"<n"< 

实现截图:

总结:实现的比较简单,有很多小细节没有具体去细化。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号