第六讲磁盘调度算法.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1计算机科学与技术学院操作系统实验2实验安排序号实验项目名称实验学时实验要求完成要求1实验环境的使用2熟悉操作系统集成实验环境OSLab的基本使用方法。必做2操作系统的启动6了解操作系统的启动过程。必做3进程的创建6掌握创建进程的方法,理解进程和程序的区别;了解进程的创建过程,理解进程是资源的分配单位。必做4进程的同步4理解进程同步的意义;理解进程同步的原理。选做5物理存储器与进程逻辑地址空间的管理6掌握进程逻辑地址空间的管理方法,掌握物理存储器的管理方法。必做本次磁盘调度算法8掌握磁盘调度算法执行的条件和时机,了解常用的磁盘调度算法,加深对各种扫描算法的理解。必做31.实验目的•通过学习EOS实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机。•观察EOS实现的FCFS、SSTF和SCAN磁盘调度算法,了解常用的磁盘调度算法。•编写CSCAN和N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。42.多线程并发访问软盘读89扇区写100扇区读103扇区读90扇区写101扇区写104扇区读91扇区写106扇区读105扇区线程1访问文件A线程2访问文件B线程3访问文件C阻塞阻塞阻塞阻塞阻塞阻塞阻塞阻塞软盘驱动器读89扇区写100扇区读103扇区读90扇区写101扇区写104扇区读91扇区写106扇区读105扇区用户从用户的角度看(宏观上),三个线程是在同时访问软盘上的数据。从线程的角度看(微观上),三个线程是在交替的访问软盘上的单个扇区。从软盘驱动器的角度看,它甚至根本不知道线程的存在,只是根据请求来访问软盘上的各个扇区。5磁盘调度算法在EOS中的位置FAT12文件系统FAT32文件系统ISO-9660文件系统块设备软盘驱动器及驱动程序硬盘驱动器及驱动程序光盘驱动器及驱动程序…………应用程序应用程序……应用程序用户态核心态可以在块设备层中加入磁盘调度算法和读写缓冲区管理功能。用户态核心态ReadFile()FatReadFile()IopReadWriteSector()FloppyRead()(a)(b)6磁盘调度算法执行的条件、执行的时机、操作的对象当多个线程并发访问磁盘时,只能有一个线程访问磁盘(独占磁盘),而其它的线程会被阻塞,待独占磁盘的线程结束访问操作后,才能唤醒一个阻塞的线程,令其继续独占访问磁盘。这里提到的唤醒一个阻塞的线程的过程,就是磁盘调度算法工作的过程。可能会有多个线程由于并发访问磁盘而被阻塞,磁盘调度算法就是根据不同的策略,从中选择一个合适的线程来唤醒。准确的说,磁盘调度算法操作的对象是——由于并发访问同一个磁盘设备而被阻塞的多个线程。7执行的条件、执行的时机、操作的对象•条件:多个线程并发访问同一个磁盘设备才会触发磁盘调度算法。单个线程访问磁盘不会触发磁盘调度算法。•时机:将阻塞线程唤醒时执行调度,而不是将线程阻塞时执行调度。•对象:由于并发访问同一个磁盘设备而被阻塞的多个线程。83.EOS中实现的磁盘调度算法•目前EOS只管理了一个块设备——软盘驱动器,为了尽量简单,EOS只考虑对这个唯一的块设备进行磁盘调度。•为每个访问磁盘的线程创建一个对应的请求,并将这些请求放入一个请求队列中。•在块设备读写函数IopReadWriteSector中依次处理请求队列中的请求,各个请求被处理的顺序由磁盘调度算法决定。•在函数IopDiskSchedule中实现各种磁盘调度算法。•控制台命令“ds”专门用来测试磁盘调度算法。94.专门用来测试磁盘调度算法的控制台命令“ds”该控制台命令是在ke/sysproc.c文件中的ConsoleCmdDiskSchedule函数内实现的。在该函数执行的过程中,首先让当前线程访问一次磁盘上的某个磁道,从而设置磁头的初始位置,然后将磁盘设备的状态设置为忙,并创建多个访问不同磁道的线程。由于磁盘设备忙,这些线程的请求都会被放入请求队列中,直到被磁盘调度算法选中后才会被处理。最后触发磁盘调度算法,按照调度策略依次处理请求队列中的所有请求。优点:•方便指定线程的数量、各个线程要访问的磁道号以及线程被阻塞的顺序。•与磁盘上使用的文件系统无关。10ke/sysproc.c文件中的ConsoleCmdDiskSchedule函数PRIVATEVOIDConsoleCmdDiskSchedule(INHANDLEStdHandle){PREQUESTpNextRequest;externBOOLIsDeviceBusy;ULONGStartCylinder=10;AccessCylinderThread((PVOID)StartCylinder);//初始化访问第10号柱面fprintf(StdHandle,StartCylinder:%d\n,StartCylinder);IsDeviceBusy=TRUE;NewThreadAccessCylinder(StdHandle,8);//被阻塞的线程NewThreadAccessCylinder(StdHandle,21);……NewThreadAccessCylinder(StdHandle,10);pNextRequest=IopDiskSchedule();//运行磁盘调度算法PsSetEvent(&pNextRequest-Event);}11FCFS算法磁头移动的轨迹08910128078214167磁道号(柱面)时间总寻道数360寻道次数10平均寻道数36当前磁头停留在10磁道,请求队列中的线程依次访问磁道8、21、9、78、0、41、10、67、12、10。12实现SSTF算法的IopDiskSchedule函数流程图IopDiskSchedule函数开始选择请求队列中的第一个请求返回选中的请求的指针注意,队列是一个双向循环链表,所以当遍历回到队列头时,表示队列结束。队列结束?计算请求对应的线程要访问的磁道与当前磁头所在磁道的偏移新距离小于最短距离?将新距离记录为最小距离,并记录下请求的指针获取队列中的下一个请求是否否是13实现SSTF算法的IopDiskSchedule函数PREQUESTIopDiskSchedule(VOID){PLIST_ENTRYpListEntry;PREQUESTpRequest;LONGOffset;ULONGShortestDistance=0xFFFFFFFF;PREQUESTpNextRequest;for(pListEntry=RequestListHead.Next;pListEntry!=&RequestListHead;pListEntry=pListEntry-Next){pRequest=CONTAINING_RECORD(pListEntry,REQUEST,ListEntry);Offset=pRequest-Cylinder-CurrentCylinder;if(abs(Offset)ShortestDistance){ShortestDistance=abs(Offset);pNextRequest=pRequest;}}returnpNextRequest;}14SSTF算法磁头移动的轨迹总寻道数150寻道次数10平均寻道数15当前磁头停留在10磁道,请求队列中的线程依次访问磁道8、21、9、78、0、41、10、67、12、10。08910128078214167磁道号(柱面)时间15SCAN算法磁头移动的轨迹总寻道数146寻道次数10平均寻道数14当前磁头停留在10磁道,请求队列中的线程依次访问磁道8、21、9、78、0、41、10、67、12、10。(假设方向由里向外)08910128078214167磁道号(柱面)时间16CSCAN算法磁头移动的轨迹总寻道数155寻道次数10平均寻道数15当前磁头停留在10磁道,请求队列中的线程依次访问磁道8、21、9、78、0、41、10、67、12、10。08910128078214167磁道号(柱面)时间17N=6时,N-Step-SCAN算法磁头移动的轨迹总寻道数213寻道次数10平均寻道数21当前磁头停留在10磁道,请求队列中的线程依次访问磁道8、21、9、78、0、41、10、67、12、10。08910128078214167磁道号(柱面)时间18第五讲磁盘调度算法在实验报告中至少包括下列问题及其回答:1.实验指导P176-3.2验证先来先服务(FCFS)磁盘调度算法,要求请给出在“输出”窗口中的结果。2.实验指导P177-3.3验证验证最短寻道时间优先(SSTF)磁盘调度算法,要求请给出在“输出”窗口中的结果。3.实验指导P178-3.4验证SSTF算法造成的线程“饥饿”现象,要求请给出在“输出”窗口中的结果。19第五讲磁盘调度算法4.实验指导P179-3.5验证扫描(SCAN)磁盘调度算法,要求在非饥饿(即《实验指导》P176-3.2节中的数据)和饥饿(即《实验指导》P178-3.4节中的数据)请给出在“输出”窗口中的结果,并且要求在每次输入两次“ds”命令(注意不要连续输入,要等第一次“ds”命令执行完,再输入第二次“ds”命令),分析结果为什么不同。5.按照《实验指导》的P179-3.6改写SCAN算法,编写代码。要求至少给出源代码、解释及运行结果。检查的时候只检查第5个问题,第1-4主要在实验报告中看!20•上次实验五进程创建,本次课必须完成并提交运行的源程序和.OUD文件。•如果本次进程同步实验完成,需要上交本次上机运行的源程序和.OUD文件。未全部完成的同学提交本次上机的.OUD文件。•登录时必须输入真实的学号和姓名,否则后果自负。要求:文件夹(命名:学号+姓名),文件夹(命名:源程序)+(学号+姓名)(第一讲实验环境的使用)20111030133907.OUD。21注意保持纪律1.实验报告中只给出基本要求,分数不会太高。2.考勤一票否决。3.请大家注意保持实验室安静!

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功