SSTF磁盘调度算法操作系统课程设计报告_第1页
SSTF磁盘调度算法操作系统课程设计报告_第2页
SSTF磁盘调度算法操作系统课程设计报告_第3页
SSTF磁盘调度算法操作系统课程设计报告_第4页
SSTF磁盘调度算法操作系统课程设计报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈尔滨理工大学课程设计(课程名称)题目: sstf磁盘调度算法班级: 姓名: 指导教师:系主任: 2014年03月01日目 录1sstf磁盘调度算法课程设计11.1 题目分析11.2 数据结构11.3 流程图11.4 实现技术21.5 设计结论和心得22 linux代码分析32.1 功能说明32.2 接口说明32.3 局部数据结构32.4 流程图32.5 以实例说明运行过程4第1章1sstf磁盘调度算法课程设计1.1 题目分析sstf磁盘调度算法问题是操作系统中的一个重要问题。主要要求访问的磁道与当前磁头所在磁道距离最近,以使每次的寻道时间最短。故sstf较之fcfs有更好的寻道性能。1.2

2、数据结构sstf磁盘调度算法问题中涉及的数据结构是定义数组str,存放输入的数据,用stri表示输入第i+1个数据,数组cidao和str意义一样。全局变量n,表示磁道的最大个数,now表示当前磁道号,全局变量sum和ave,表示总的寻道时间和平均寻道长度。用变量i和j,表示第i+1和j+1磁道,变量k表示任意磁道,变量d表示选择移动的方向,有两个取值 1表示向外,0表示向内。用伪代码表示如下:intscan(linklistl,intcurrent)lnode*p,*q,*s;floatsum=0;if(l-next!=null)p=l-next; while(p-datanext; 用主要

3、代码表示如下:now=printnow(0;if(cidaom-i=now) sum=printin(cidao,now,m);if(nowcidao0nowcidaom-i)count”磁盘扫描序列为:”;while(cidaok=0)&(rm)if(now-cidaoi20)&0xffc);/*_pg_dir=0*/to_dir=(unsignedlong*)(to20)&0xffc); /计算要复制的内存块占用的页表数(也即目录项数)。size=(unsigned)(size+0x3fffff) /下面开始对每个占用的页表依次进行复制操作。outofmemory,seefreeing*/

4、22;for(size-0from_dir+,to_dir+) /如果目的目录项指定的页表已经存在(p=1),则出错,死机。if(1&*to_dir) panic(copy_page_tables:alreadyexist); /如果此源目录项未被使用,则不用复制对应页表,跳过。if(!(1&*from_dir)continue; /取当前源目录项中页表的地址from_page_table。from_page_table=(unsignedlong*)(0xfffff000&*from_dir); /为目的页表取一页空闲内存,如果返回是0则说明没有申请到空闲内存页面。返回值=-1,退出。if(

5、!(to_page_table=(unsignedlong*)get_free_page()return-1;/*outofmemory,seefreeing*/ /设置目的目录项信息7是标志信息,表示(usr,r/w,present)。*to_dir=(unsignedlong)to_page_table)|7; /针对当前处理的页表,设置需复制的页面数。如果是在内核空间,则仅需复制160页,否则需要/复制1个页表中的所有1024页面nr=(from=0)?0xa0:1024; /对于当前页表,开始复制指定数目nr个内存页面。for(nr-0from_page_table+,to_page_

6、table+)this_page=*from_page_table;/取源页表项内容。if(!(1&this_page)/如果当前源页面没有使用,则不用复制。continue; /复位页表项中r/w标志置0)。(如果u/s位是0,则r/w就没有作用。如果u/s是1,而r/w是0,/那么运行在用户层的代码就只能读页面。如果u/s和r/w都置位,则就有写的权限。)this_page&=2; *to_page_table=this_page;/将该页表项复制到目的页表中。/如果该页表项所指页面的地址在1m以上,则需要设置内存页面映射数组mem_map,于是计算/页面号,并以它为索引在页面映射数组相应

7、项中增加引用次数。if(this_pagelow_mem)*from_page_table=this_page;/令源页表项也只读?。this_page-=low_mem;this_page=12;mem_mapthis_page+; invalidate();/刷新页变换高速缓冲。return0;2.1 功能说明这一段程序的主要功能为:(1)复制进程的页目录页表;2.2 接口说明本程序的输入参数为:unsignedlongfrom,unsignedlongto,longsize输出结果:为将进程的页目录页表复制:2.3 局部数据结构本程序共有5个局部变量及数据结构,其类型定义及语义如下:unsigned long * from_page_table;/记录复制文件的位置unsigned long * to_page_table;/目标文件位置unsigned long this_page;/页目录unsigned long * from_dir, * to_dir;/页表unsigned long nr;记录页表页面数2.4 流程图本程序的流程图如图2所示图2程序流程图2.5 以实例说明运行过程例如,当有多个进程到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论