• 大小: 5.1MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-26
  • 语言: C/C++
  • 标签: 操作系统  

资源简介

计算机操作系统的实验课:磁盘调度算法的c++模拟实现。包含可直接执行的工程压缩包,有详尽的注释。

资源截图

代码片段和文件信息

/*
磁盘调度程序
输入:当前磁头位置,磁头移动方向,磁道访问请求序列
输出:磁头依次访问的磁道号顺序,磁头移动的总磁道数
算法:先来先服务(FCFS),最短寻道时间优先(SSTF),扫描算法(SCAN)

*/
#include
#include
#include
#define DISK_SUM 200
#define REQUEST__COUNT 8
using namespace std;

void FCFS(int currentNum int sequence[REQUEST__COUNT])
{
cout << “磁头依次访问的磁道号顺序:“;
cout << currentNum << ‘ ‘;
for (int i=0; i < REQUEST__COUNT; i++)
{
cout << sequence[i] << ‘ ‘;
}
cout << endl;

int count = abs(sequence[0]-currentNum);
for (int i = 1; i < REQUEST__COUNT; i++)
{
count += abs(sequence[i] - sequence[i - 1]);
}
cout << “磁头移动的总磁道数:“ << count << endl;

double average = (double)count / (double)REQUEST__COUNT;
cout << “平均寻道长度:“ <}

void SSTF(int currentNum int sequence[REQUEST__COUNT])
{
int temp;
int a[REQUEST__COUNT + 1];
//把初始位置和序列合并至一个数组
a[0] = currentNum;
for (int i = 1; i < REQUEST__COUNT+1; i++)
{
a[i] = sequence[i-1];
}

//按照最短寻道时间排序
for (int j = 0; j < REQUEST__COUNT-1; j++)
{
for (int i = REQUEST__COUNT; i > j+1; i--)
{
if (abs(a[i] - a[j]) < abs(a[i - 1] - a[j]))
{//若后一个的距离较短则交换
temp = a[i];
a[i] = a[i - 1];
a[i - 1] = temp;
}
}
}

cout << “磁头依次访问的磁道号顺序:“;
for (int i = 0; i < REQUEST__COUNT+1; i++)
{
cout << a[i] << ‘ ‘;
}
cout << endl;

int count = 0;
for (int i = 1; i < REQUEST__COUNT+1; i++)
{
count += abs(a[i] - a[i - 1]);
}
cout << “磁头移动的总磁道数:“ << count << endl;

double average = (double)count / (double)REQUEST__COUNT;
cout << “平均寻道长度:“ << average << endl;
}

void SCAN(int currentNum int sequence[REQUEST__COUNT] int direction)
{
int left[REQUEST__COUNT] right[REQUEST__COUNT];
int result[REQUEST__COUNT];

int p = 0q = 0;//数组下标
//将序列分成小于当前位置的和大于当前位置的
    for (int i = 0; i < REQUEST__COUNT; i++)
{
if (sequence[i] < currentNum)
{
left[p++] = sequence[i];
}
else
{
right[q++] = sequence[i];
}
}

//对left按从大到小排序,right按从小到大排序
int temp;
for (int i = 0; i < p - 1; i++)
{
for (int j = 0; j < p - 1; j++)
{
if (left[j] < left[j + 1])
{
temp = left[j];
left[j] = left[j+1];
left[j+1] = temp;
}
}
}

for (int i = 0; i < q - 1; i++)
{
for (int j = 0; j < q - 1; j++)
{
if (right[j] > right[j + 1])
{
temp = right[j];
right[j] = right[j + 1];
right[j + 1] = temp;
}
}
}
    
if (direction == 0)
{//先向左扫描
for (int i = 0; i < p; i++)
{
result[i] = left[i];
}

for (int i = p; i < REQUEST__COUNT; i++)
{
result[i] = right[i - p];
}
}
else
{//向右扫描
for (int i = 0; i < q; i++)
{
result[i] = right[i];
}

for (int i = q; i < REQUEST__COUNT; i++)
{
result[i] = left[i - q];
}
}

cout << “磁头依次访问的磁道号顺序:“;
cout << currentNum << ‘ ‘;
for (int i = 0; i < REQUEST__COUNT; i++)
{
cout << result[i] << ‘ ‘;
}
cout << endl;

int count = abs(result[0] - curre

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     29184  2017-11-27 17:00  diskDispatch\.vs\diskDispatch\v15\.suo

     文件    4861952  2017-11-27 17:00  diskDispatch\.vs\diskDispatch\v15\Browse.VC.db

     文件   25690112  2017-11-27 16:41  diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH\d43cc503e999643a\MAIN.ipch

     文件     112640  2017-11-27 16:48  diskDispatch\Debug\diskDispatch.exe

     文件    1954024  2017-11-27 16:48  diskDispatch\Debug\diskDispatch.ilk

     文件    2641920  2017-11-27 16:48  diskDispatch\Debug\diskDispatch.pdb

     文件         33  2017-11-24 18:26  diskDispatch\diskDispatch\data.txt

     文件        207  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.log

     文件        638  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.command.1.tlog

     文件      19210  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.read.1.tlog

     文件        540  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\CL.write.1.tlog

     文件        214  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\diskDispatch.lastbuildstate

     文件       1190  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\link.command.1.tlog

     文件       3314  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\link.read.1.tlog

     文件        518  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog\link.write.1.tlog

     文件     276223  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\main.obj

     文件     338944  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\vc141.idb

     文件     438272  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\vc141.pdb

     文件       5826  2017-11-23 19:41  diskDispatch\diskDispatch\diskDispatch.vcxproj

     文件       1057  2017-11-23 19:41  diskDispatch\diskDispatch\diskDispatch.vcxproj.filters

     文件       4861  2017-11-27 16:11  diskDispatch\diskDispatch\main.cpp

     文件       1448  2017-11-23 18:26  diskDispatch\diskDispatch.sln

     目录          0  2017-11-23 18:32  diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH\d43cc503e999643a

     目录          0  2017-11-23 18:29  diskDispatch\.vs\diskDispatch\v15\ipch\AutoPCH

     目录          0  2017-11-23 18:29  diskDispatch\.vs\diskDispatch\v15\ipch

     目录          0  2017-11-27 17:00  diskDispatch\.vs\diskDispatch\v15

     目录          0  2017-11-27 16:48  diskDispatch\diskDispatch\Debug\diskDispatch.tlog

     目录          0  2017-11-23 18:26  diskDispatch\.vs\diskDispatch

     目录          0  2017-11-27 16:48  diskDispatch\diskDispatch\Debug

    ...D.H.         0  2017-11-23 18:26  diskDispatch\.vs

............此处省略6个文件信息

评论

共有 条评论