- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课件-chap6设备管理
(3) 中断处理。Linux中断处理子系统的一个基本任务是将中断正确定位到中断处理代码中的正确位置。中断发生时,Linux首先读取系统可编程中断控制器中的中断状态寄存器,以判断出中断源,将其转换成irq_action数组中的偏移值。如果此中断没有对应的中断处理程序,则Linux内核将记录这个错误,否则它将调用对应此中断源的所有irqaction数据结构中所指向的中断处理程序。 图6.13给出了一个指向一组irqaction数据结构的irq_action指针。 图6.13 Linux中断处理数据结构 此外,为了处理硬中断服务程序,往往先关中断,以避免再次中断。但关中断的时间不能太长,太长了会丢失外部中断信号。为了处理“长”中断服务程序,Linux将它们一分为二,各称作tophalf和bottomhalf。前者是中断服务程序的入口部分,必须关中断运行;后者是由tophalf调度的中断服务程序的剩余部分,可以开中断运行。 2. 设备文件 在与设备驱动程序通讯时,内核常常使用设备类型、主设备号和次设备号来标识一个具体的设备。但对用户来说,是不使用这种方法的。因为用户不会记住每台设备的主、次设备号,同时使用不同的设备时,用户也不希望使用不同的操作。于是,Linux采用设备文件的概念,为文件和设备提供了一致的用户接口。用户可以用普通文件的读写方法操作设备文件。 Linux将设备文件放在目录/dev或其子目录下。设备文件通常由两部分组成。第一部分由2个或3个字母组成,用来表示设备类型。如IDE接口的普通硬盘为hd,SCSI硬盘为sd,软盘为fd,并口为lp。第二部分为数值或字母,用来区别设备实例。如:/dev/hda、/dev/hdb、/dev/hdc分别表示第一、第二、第三块硬盘,而/dev/hdal、/dev/hda2、/dev/hda3则分别表示第一个硬盘的第一、第二、第三分区。 3. 设备驱动程序概述 1) 设备驱动程序 在Linux中,管理硬件设备控制器的代码并没有放置在每个应用程序中,而是由内核统一管理。这些处理和管理硬件控制器的软件就是设备驱动程序,Linux内核设备驱动程序是一组运行在特权级上的、常驻内存的低级硬件处理程序的共享库,由它负责管理各个设备。 2) 设备驱动程序的特点 Linux内核中存在许多不同的设备驱动程序,它们具有如下一些共性; (1) 内核代码。设备驱动程序是内核的一部分,像内核中其他代码一样,出错将导致系统的严重损伤。 (2) 内核接口。设备驱动程序必须为Linux内核或者其从属子系统提供一个标准接口。 (3) 内核机制与服务。设备驱动程序可以使用标准的内核服务,如内存分配、中断发送和等待队列等。 (4) 动态加载。多数Linux设备驱动程序可以在内核模块发出加载请求时加载,而在不使用时卸载,这样,内核能有效地利用系统资源。 (6) 可配置。Linux设备驱动程序可以连接到内核中。 3) 设备驱动程序与内核的接口 Linux内核与设备驱动程序之间必须有一个以标准方式进行互操作的接口。每一类设备驱动程序(字符设备、块设备及网络设备)都提供了通用接口,以便在需要时为内核提供服务。这种通用接口可以使得内核以相同的方式来对待不同的设备及设备驱动程序。如SCSI和IDE硬盘的区别虽很大,但Linux对它们却使用相同的接口。 Linux I/O子系统向内核其他部分提供了一个统一的标准的设备接口,它是通过数据结构file_operations(见include/linux/fs.h)来完成的。常用的访问接口有: lseek() 重新定位读写位置 read() 从字符设备中读数据 write() 向字符设备写数据 readdir() 只用于文件系统,不用于设备文件 select() 实现多路设备的复用 ioctl() 控制字符设备 mmap() 将设备内存映射到进程地址空间 open() 打开设备,并初始化设备 release() 关闭设备,并释放资源 fsync() 实现内存与设备(如鼠标)之间的异步通讯 check_medi
您可能关注的文档
最近下载
- 设计制作一个产生正弦波-方波-三角波函数转换器.doc VIP
- 选煤厂安全规程课件.ppt VIP
- The Institute of Internal Auditors 国际内部审计师协会 内部审计执行指南 2017 执行指南.pdf
- 借款合同借款合同.docx VIP
- 2018职业暴露应急演练记录..doc VIP
- 信息化项目安全保障措施.docx VIP
- 第十章 珍爱生命-心理危机干预与幸福人生 课件《大学生心理健康教育(第二版)》(高教版).pptx VIP
- 高等数学(一)(国防科技大学)中国大学MOOC慕课 期末考试客观题答案.pdf VIP
- 建伍TH-F6 F7中文说明书手册.doc VIP
- 残疾人社会工作教学课件 余艳萍 秦琴-第9章 残疾人个案工作模式及运用.pptx VIP
原创力文档


文档评论(0)