下载此文档

分析mini磁盘驱动程序.docx


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
该【分析mini磁盘驱动程序 】是由【夜紫儿】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【分析mini磁盘驱动程序 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。名目摘要................................................................................. 11引言............................................................................. 1争论背景 1争论目的和意义 2主要争论工作 2MINIX硬盘驱动程序 2MINIX硬盘驱动程序原理 2MINIX硬盘驱动程序实现 4主要数据构造分析 4主要操作实现 53总结............................................................................. 7致谢................................................................................. 8参考文献.......................................................................... 82MINIX磁盘驱动程序争论摘要本文对I/O设备及驱动程序进展了分析,主要争论了MINIX硬盘驱动程序的根本原理,通过阅读代码,分析了MINIX硬盘驱动程序所用的主要数据构造及主要函数的实现。关键词:MINIX,I/O设备,磁盘驱动程序引言争论背景I/O设备作为计算机的一个重要组成局部占据整个操作系统的相当局部,对计算机的整体性能有很大影响。操作系统的主要功能之一是掌握全部输入输出设备,它必需向设备发出命令,捕获中断并进展错误处理,还必需供给一个设备与系统其余局部之间的简洁易用的接口。设备治理的一个根本特征是设备处理的抽象性,即全部硬件设备都被看成一般文件,可以通过与操纵一般文件一样的系统调用来翻开、关闭、读取和写入设备。图1表示了设备访问的层次关系。图1设备访问层次图I/O设备大致可以分为两类:块设备和字符设备。块设备将信息存储在固定大小的块中,每个块都有自己的地址。块设备的基本特征是每个块都能够独立于其他块而读写。磁盘是最常见的块设备。块设备和字符设备的模型具有足够的一般性,可以作为使处理不同I/O设备的操作系统软件具有设备无关性的根底。例如,文件系统仅仅掌握抽象的块设备,而把与设备有关的局部留给较低层软件,即设备驱动程序去处理。设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作一般文件一样对硬件设备进展操作,设备驱动程序是内核的一局部,它完成以下的功能:对设备初始化和释放;数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据和回送应用程序恳求的数据;检测和处理设备消灭的错误。争论目的和意义计算机CPU的处理速度越来越快,内存和硬盘的容量也越来越大,但是相对于CPU处理速度的增长,硬盘的读写速度增长缓慢,计算机的I/O速度成了计算机系统性能提高的瓶颈。本文主要争论MINIX操作系统的硬盘驱动程序,通过分析MINIX的驱动程序,了解MINIX硬盘驱动的根本原理和设计模式,把握MINIX的硬盘驱动的实现,加深了对操作系统的理解。主要争论工作本文主要争论了MINIX硬盘驱动程序的根本原理,并对MINIX硬盘驱动程序的实现进展了分析。MINIX硬盘驱动程序MINIX硬盘驱动程序原理不同计算机家族成员使用的处理器不同,而且根本硬件也有很大区分。比较老的奔腾系列使用16位的AT总线,而最的设计2仅仅供给PCI总线。对每一类总线,都有一个与之对应的I/O适配器系列,为了到达这样的可伸缩性,操作系统不应限制只能够使用一种适配器。与总线设计同时配套的还有BIOS中的固件。为了更好地利用以前的硬件,同时使MINIX能够运行在以前老版本的硬件环境下,则存在至少四种根本类型的硬盘掌握器最初的8位XT类型掌握器、16位AT类型掌握器,以及IBMPS/2系列计算机中两种不同类型的掌握器。MINIX主要承受这一方法:在内核中编译几个不同的硬盘驱动程序,供给一种方法使用户打算使用哪一个。这样MINIX引导监控程序允许在启动时读各种引导参数,可以手工输入这些参数,也可以将其永久存放于磁盘上。在启动时假设觉察引导参数格式为label=AT则在MINIX启动时强制使用IDE硬盘驱动程序〔at_wini〕。这依靠于at_wini驱动程序安排了这个标号。标号在引导映像编译阶段被安排。为了削减支持多个硬盘驱动程序所导致的问题,MINIX还做了其他两件事。第一是供给了一个支持在MINIX和ROMBIOS硬盘之间接口的驱动程序,这个驱动程序几乎可以保证在全部的系统下都可以工作,通过使用引导参数label=BIOS来选择,不过一般这是可求助的最终一种方法。MINIX处理驱动程序的另一策略是尽可能推迟初始化工作。这样,假设在某些硬件配置中没有硬盘驱动程序可用,则仍旧可以从软盘启动,以完成一些有用的工作,只要不访问硬盘,MINIX就不会有任何问题。硬盘任务的主循环可以执行9种标准恳求。由于在硬盘上总有分区和子分区,所以DEV_OPEN恳求需要执行大量的工作。当翻开设备时,必需首先读入这些代码。每一个DEV_READ恳求、DEV_WRITE恳求、DEV_GATHER恳求和DEV_SCATTER恳求都分成两个阶段来处理:预备和传输。对于硬盘,DEV_CANCEL恳求和DEV_SELECT恳求被无视。2硬盘驱动程序自己不进展调度算法,该项工作是由文件系统完成的,它将集中/分散I/O恳求组合起来成为恳求队列。来自文件系统缓存的诸如DEV_GATHER以及DEV_SCATTER的恳求申请多个块,但驱动程序也能够处理大小为扇区尺寸任意倍的恳求。全部硬盘驱动程序的主循环将把一个单独块数据的恳求转换为恳求向量中的一个元素。恳求队列中的元素都针对连续的磁盘扇区,并且文件系统在将队列交给驱动程序之前会对其进展排序,故对一个完整的恳求队列而言,能够在磁盘上指出最开头的恳求位置就足够了。,这是一个面对高级设备的简单驱动程序,有好几页宏定义了掌握器存放器、状态位和命令、数据构造和原型。宏定义用宏定义了温侧斯特磁盘掌握器用到的存放器,有读写存放器,只读存放器和只写存放器。command这是用来描述驱动器向温侧斯特硬盘掌握器发送命令的数据构造。其中包括了恳求数据的大小count,读写的扇区号sector,读写的磁道号cyl_lo等必需的参数。wini这是用来描述硬盘设备驱动器的数据构造,每个驱动器对应一个这样的数据构造。其中包括了该驱动器相应的状态state,中断恳求号irq,柱面的规律号lcylinders,磁头的规律号lheads等信息。trans这是用来描述传输恳求的数据构造,该构造包含描述此次传输所属的I/O恳求iop,传输的扇区号block,传输数据的大小count2以及传输数据所在的物理地址phys。在w_finish函数中用到了这个数据构造,w_finish的功能是完成聚拢的I/O恳求。w_dtab这是每个块设备驱动程序都有的一个数据构造。w_tab被初始化为指向实际完成这项工作的函数指针。,由于硬盘不需要特别的去除操作,,和其他不需要特别去除操作的设备驱动程序共享了该函数。该构造承受了操作系统、文件系统惯用的方式,在一个构造中定义变量名、函数指针。该构造中包含设备名w_name,这是一个变量,翻开设备操作的函数指针w_do_open,以及其他几个操作的函数指针。主要操作实现硬盘驱动的主流程为:入口函数调用初始化参数的函数init_params初始化驱动器的各项参数,然后调用driver_task(&w_dtab)主循环承受来自文件系统的消息,再调用相应的函数完成文件系统的恳求。voidat_winchester_task这个函数是硬盘驱动器的入口函数,只有两行代码。该函数调用一个由硬件打算的初始化过程init_params,(&w_dtab)。这个循环永久运行,把调用分派到driver表中指向的各种函数。init_params由于硬盘是机械电子存储设备,所以要做肯定量的工作来初始化硬盘驱动器。有关硬盘的各种参数保存于数组wini中,作为推迟初始化策略的一局部,由于在必需使用设备以前对设备初始化可能会失败,所以在内核初始化时调用的init_params并不做任何访问磁盘的工作。它做的主要工作是把有关磁盘的规律配置信息拷贝到wini数组中。这些信息是ROMBIOS从CMOS存储器中提取的。2driver_task(&w_dtab)2这个是驱动器的主循环,接收来自文件系统进程的消息,调用相应的函数处理。函数的具体过程如图2所示。dr_openDriver_taskinit_buffer;猎取一个DMA缓存receive(ANY,&mess);消息来自文件系统进程?dr_closedr_ioctldo_rdwt do_vrdwtSend(caller,&mess)执行完操作之后给文件系统进程回复消息图2Drive_task过程w_do_open(dp,m_ptr)w_do_open调用w_prepare来确定恳求的设备是否合法,然后调用w_identify来确定设备的类型,并初始化在数组wini中的其他一些参数。最终,使用在数组wini中的计数器检测从MINIX启动以来是否第一次打开设备。检测完毕后,计数器加1。假设是第一次DEV_OPEN操作,就调用partition函数。intw_schedule(proc_nr,iop)在SCATTERED_IO恳求中指示的可选数据传输位在向掌握器传输的操作中复位,但是留意该位还被保存在iorequest_s构造的io_request域中。对于硬盘,驱动程序将试图满足全部的恳求,但是就象我们看到的那样,假设出错的话,驱动程序可能会打算2不这样做。假设有等待的恳求〔通过测试w_count大于零来检测〕而且假设下一个要读的扇区和上一个恳求的扇区是不连续的,则调用w_finish函数来完毕前一个操作。否则,更w_nextblock变量,在这个变量中存放的是下一个扇区号。w_finish〔〕这个函数执行前一次恳求,完毕前一次操作。在进入主循环以前,通过预先设置变量r为出错来实施强制重复位掌握器。mand构造中的命令,就初始化cdm来执行数据传输。com_out(cmd)假设掌握器没有预备好或者在预先设置的时间范围内没有预备好,_out可能会失败。在这种状况下,出错计数加1。假设出错计数到达了MAX_ERRORS,则放弃初始化工作,否则continue语句使循环重执行。w_do_close〔〕对常规的硬盘几乎不作任何工作。当支持的设备为CD_ROM或其他可移动的设备时,这个例程需要扩展为产生一个命令以翻开驱动器或弹出CD,具体如何执行取决于硬件支持。总结本文主要争论了MINIX硬盘驱动程序的根本原理,分析了MINIX硬盘驱动程序所用的主要数据构造及主要函数的实现。硬盘作为计算机的一个主要块设备,操作系统需要通过调用相应的硬盘驱动程序才能与硬盘交互。MINIX3支持4种类型的硬盘驱动,默认启动的是AT盘,假设要启动其它类型的硬盘驱动程序可以在启动的时候通过参数指定,这种设计模式既简化了系统的启动又保证了系统支持的硬盘类型多样性。2致谢参考文献[1].,,ThirdEdition,PearsonEducation,.[2]..[3].Bovet,’Reilly&Associates,.[4].

分析mini磁盘驱动程序 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人夜紫儿
  • 文件大小47 KB
  • 时间2025-01-19