欢迎来到天天文库
浏览记录
ID:19716841
大小:92.00 KB
页数:9页
时间:2018-10-05
《分析minix磁盘驱动程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、目录摘要11引言11.1研究背景11.2研究目的和意义21.3主要研究工作22MINIX硬盘驱动程序22.1MINIX硬盘驱动程序原理22.2MINIX硬盘驱动程序实现42.2.1主要数据结构分析42.2.2主要操作实现53总结7致谢8参考文献88MINIX磁盘驱动程序研究摘要本文对I/O设备及驱动程序进行了分析,主要研究了MINIX硬盘驱动程序的基本原理,通过阅读代码,分析了MINIX硬盘驱动程序所用的主要数据结构及主要函数的实现。关键词:MINIX,I/O设备,磁盘驱动程序1引言1.1研究背景I/O设备作为计算机的一个重要组成部
2、分占据整个操作系统的相当部分,对计算机的整体性能有很大影响。操作系统的主要功能之一是控制所有输入输出设备,它必须向设备发出命令,捕获中断并进行错误处理,还必须提供一个设备与系统其余部分之间的简单易用的接口。设备管理的一个基本特征是设备处理的抽象性,即所有硬件设备都被看成普通文件,可以通过与操纵普通文件相同的系统调用来打开、关闭、读取和写入设备。图1表示了设备访问的层次关系。图1设备访问层次图I/O设备大致可以分为两类:块设备和字符设备。块设备将信息8存储在固定大小的块中,每个块都有自己的地址。块设备的基本特征是每个块都能够独立于其他
3、块而读写。磁盘是最常见的块设备。块设备和字符设备的模型具有足够的一般性,可以作为使处理不同I/O设备的操作系统软件具有设备无关性的基础。例如,文件系统仅仅控制抽象的块设备,而把与设备有关的部分留给较低层软件,即设备驱动程序去处理。设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作,设备驱动程序是内核的一部分,它完成以下的功能:对设备初始化和释放;数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设
4、备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。1.2研究目的和意义计算机CPU的处理速度越来越快,内存和硬盘的容量也越来越大,但是相对于CPU处理速度的增长,硬盘的读写速度增长缓慢,计算机的I/O速度成了计算机系统性能提高的瓶颈。本文主要研究MINIX操作系统的硬盘驱动程序,通过分析MINIX的驱动程序,了解MINIX硬盘驱动的基本原理和设计模式,掌握MINIX的硬盘驱动的实现,加深了对操作系统的理解。1.3主要研究工作本文主要研究了MINIX硬盘驱动程序的基本原理,并对MINIX硬盘驱动程序的实现进行了分析。2M
5、INIX硬盘驱动程序2.1MINIX硬盘驱动程序原理不同计8算机家族成员使用的处理器不同,而且基本硬件也有很大区别。比较老的奔腾系列使用16位的AT总线,而最新的设计仅仅提供PCI总线。对每一类总线,都有一个与之对应的I/O适配器系列,为了达到这样的可伸缩性,操作系统不应限制只能够使用一种适配器。与总线设计同时配套的还有BIOS中的固件。为了更好地利用以前的硬件,同时使MINIX能够运行在以前老版本的硬件环境下,则存在至少四种基本类型的硬盘控制器最初的8位XT类型控制器、16位AT类型控制器,以及IBMPS/2系列计算机中两种不同类
6、型的控制器。MINIX主要采用这一方法:在内核中编译几个不同的硬盘驱动程序,提供一种方法使用户决定使用哪一个。这样MINIX引导监控程序允许在启动时读各种引导参数,可以手工输入这些参数,也可以将其永久存放于磁盘上。在启动时如果发现引导参数格式为label=AT则在MINIX启动时强制使用IDE硬盘驱动程序(at_wini)。这依赖于at_wini驱动程序分配了这个标号。标号在引导映像编译阶段被分配。为了减少支持多个硬盘驱动程序所导致的问题,MINIX还做了其他两件事。第一是提供了一个支持在MINIX和ROMBIOS硬盘之间接口的驱动
7、程序,这个驱动程序几乎可以保证在所有的系统下都可以工作,通过使用引导参数label=BIOS来选择,不过一般这是可求助的最后一种办法。MINIX处理驱动程序的另一策略是尽可能推迟初始化工作。这样,如果在某些硬件配置中没有硬盘驱动程序可用,则仍然可以从软盘启动,以完成一些有用的工作,只要不访问硬盘,MINIX就不会有任何问题。硬盘任务的主循环可以执行9种标准请求。因为在硬盘上总有分区和子分区,所以DEV_OPEN请求需要执行大量的工作。当打开设备时,必须首先读入这些代码。每一个DEV_READ请求、DEV_WRITE请求、DEV_GA
8、THER请求和DEV_SCATTER请求都分成两个阶段来处理:准备和传输。对于硬盘,DEV_CANCEL请求和DEV_SELECT请求被忽略。8硬盘驱动程序自己不进行调度算法,该项工作是由文件系统完成的,它将集中/分散I/O请求组合起
此文档下载收益归作者所有