- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2. 中断处理程序的注册 每个要使用中断的设备都要有一个相应的中断处理程序。中断处理程序是设备驱动程序的一个组成部分,因此它是随着驱动程序一起安装的。在使用设备前必须向内核注册它的中断处理程序,以便当发生了一个中断后内核知道应该由哪个函数来处理它。 注册中断处理程序的工作是由驱动程序完成。在加载设备驱动程序时(系统启动时或动态加载时)首先要进行设备的初始化,并调用request_irq()函数来注册并激活一个中断处理程序。request_irq()函数指定了中断号、中断处理程序的地址以及相关的设备等参数。注册成功后,内核就可以调用这个程序来处理相应的中断了。在卸载驱动程序时(系统关闭时或动态卸载时)需要注销相应的中断处理程序,这是通过调用free_irq()函数来完成的。 习 题 7-1 简述设备管理的基本功能。 7-2 什么是设备控制器?设备是怎样与I/O系统接口的? 7-3 I/O传输控制方式有哪几种?比较它们的优缺点。 7-4 什么是中断?为什么要引入中断?中断处理过程包括哪些步骤? 7-5 什么是DMA方式?简述DMA方式的数据传输过程。 7-6 什么是缓冲?为什么引入缓冲? 7-7 什么是缓存?缓存与缓冲有什么区别? 7-8 什么是虚拟设备?实现虚拟设备的关键技术是什么? 7-9 试说明SPOOLing系统的工作原理。 7-10 什么是设备驱动程序?它的主要功能是什么? 7-11 块设备与字符设备的驱动有哪些不同? 7-12 设备中断处理要完成哪些工作?Linux的设备中断处理有何特点? 7-13 什么是设备独立性?Linux如何实现设备独立性? 用户进程使用文件系统的标准系统调用来打开、关闭和读/写设备文件。文件系统接受用户对设备文件的请求并进行相应的判别处理,然后将文件操作映射到设备驱动的I/O操作上,由设备驱动程序驱动控制器完成具体的I/O操作。 图7?9 Linux 系统的I/O软件结构 文件系统采用与文件相同的一套操作来实现设备的命名、保护与操作,这大大简化了系统的结构。对Linux系统来说,设备管理的主要工作实际上只是设备驱动而已。只要正确地实现了设备的驱动程序,就可以把设备纳入文件系统的管理之下。为此,Linux定义了文件系统与设备驱动程序之间的接口规范,任何设备的驱动程序只要遵守这些规范就可以与文件系统接口。接口方式既可以是静态的也可以是动态的。实际上,大多数设备驱动程序都是独立的内核模块,可以动态地加载和卸载。这种设计使得Linux 系统的I/O软件结构既简洁又灵活。 7.6.3 Linux的设备文件 1. 设备的标识 在Linux系统中,每个设备对应一个设备文件,设备文件一般都位于/dev目录下。用户用设备的文件名来指定设备,而内核则使用主设备号(major number)和次设备号(minor number)来标识一个具体的设备。一般来讲,主设备号标识设备的控制器,次设备号用来区分同一控制器下的不同设备实例。主设备号与设备的驱动程序一一对应,而次设备号供驱动程序内部使用。2.6内核的Linux系统支持高达4095个主设备号,每类主设备可以有多于100万个次设备号,这足以支持高端企业系统的设备配置。 设备文件是一个特殊类型的文件,字符设备的文件类型为“c”,块设备的文件类型为“b”,设备文件的访问权限就是对该设备的访问控制。例如,下面的ls命令显示了软盘、打印机和硬盘文件的详细信息: $ ls -l /dev/fd0 /dev/lp0 /dev/hda brw-rw---- 1 root floppy 2, 0 May 12 15:13 dev/fd0 crw-rw---- 1 root lp 6, 0 May 12 15:13 /dev/lp0 brw-rw---- 1 root disk 3, 0 May 12 15:13 dev/hda $ 与普通文件的描述信息有所不同,设备文件的文件大小字段中显示的是主设备号和次设备号。在上面的输出信息中,/dev/fd0是软盘A驱动器的文件名,类型是块设备,主设备号是2,次设备号是0;/dev/lp0是第一台打印机的文件名,类型是字符设备,主设备号是6,次设备号是0;/dev/hda是第一个IDE磁盘驱动器的文件名,类型是块设备,主设备号是3,次设备号是0。 当对设备文件执行读/写操作时,实际上实现的是对设备的I/O操作。例如,命令echo “Hello!” /dev/lp0将会使打印机打印出一个字符串。 2. 设备文件的描述 同普通文件一样,每个设备文件也都有一个独立的
文档评论(0)