1 / 8
文档名称:

模拟电梯调度算法概要.docx

格式:docx   大小:81KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

模拟电梯调度算法概要.docx

上传人:mazhuangzi1 2022/5/26 文件大小:81 KB

下载得到文件列表

模拟电梯调度算法概要.docx

文档介绍

文档介绍:了解驱动调度程序的动态运行过程,理解和掌握驱动调度的职能。 驱动调度 能 降低为若干个输入输出请求服务所需的总时间,从而提高系统功能。
二、软硬件环境

、 TURBOC2。
2. 硬件配置
内存,根据随机函数产生的[0, 1]之间的数,判断是否大于
1/2,是,则执行驱动调度,否,则执行接受请求。
入口参数 无
返回值无

输入在[0・】]區间
内的一个甌机數
•:・..!、
图 1 主程序流程图
函数名 jieshou( 如图 2“接受请求”模拟算法所示
功能将输入的进程访问磁盘请求排入等待队列,写入请求I/O表
入口参数 无
I
返回值无
端入:谨桿名物理
地址
进程持入等持阻列
图2 “接受请求”模拟算法
函数名 driver( 如图 3 电梯调度模拟算法所示
功能模拟电梯调度,实现进程对磁盘的访问。查找“请求I/O表”,当有等待访问 磁盘的进程时,优先选择与当前柱面号相同的请求,从这些请求中选择一能使旋转 距离最短的等待访问进程,如没有与当前柱面号相同的访问请求,则移臂来选择,沿 臂移动方向选择一个与当前柱面号最近的访问进程。
入口参数 无
返回值无
图 3 电梯调度模拟算法
:
/*本程序使用磁盘中的柱面数为 200,物理记录数为 8*/
struct askb /*请求 I/O 表 */
{
int jname; /*进程名 */
int zmh;
int wj;
char fx;
};
struct askb W[1600],M;
int flag[1600]={0}; /*记录磁臂的方向, 0 向里, 1 向外 */
int r=0;
int cont=1;
int m=0,n=0; /*记录当前磁盘位置 */
int Q;
int t=0;
int g=1;
int b[1600]={1,0,0}; /*记录有无进程访问磁盘请求 */
print(
{
int sc;
printf("qingqiu I/O biao\n"; /*输出请求 I/O 表 */ for(sc=0;sc<1600;sc++
if(W[sc].jname!='N'&&W[sc].jname!=0&&flag[sc]==0 printf("jname=%d,zmh=%d,wj=%d,fx=u\n",W[sc].jname,W[sc].zmh,W[sc].wj; else if(W[sc].jname!='N'&&W[sc].jname!=0&&flag[sc]==1 printf("jname=%d,zmh=%d,wj=%d,fx=d\n",W[sc].jname,W[sc].zmh,W[sc].wj;
b[W[r].zmh*8+W[r].wj]=0;
printf("jincheng fangwen cipan\n"; /*启动磁盘 */
printf("jname=%d,zmh=%d,wj=%d,fx=%c\n",W[r].jname,W[r].zmh,W[r].wj,W[r]. fx;
printf("\n";
cont--;
}
driver(
{