linux课件--Linux 设备管理

linux课件--Linux 设备管理

ID:38567579

大小:321.81 KB

页数:12页

时间:2019-06-15

linux课件--Linux 设备管理_第1页
linux课件--Linux 设备管理_第2页
linux课件--Linux 设备管理_第3页
linux课件--Linux 设备管理_第4页
linux课件--Linux 设备管理_第5页
资源描述:

《linux课件--Linux 设备管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux设备管理模块的安装和卸载设备管理模块的安装和卸载模块:可以作为独立程序来编译的函数和数据结构的集合。它可以动态的增加内核的功能。装载:静态装载:在内核启动时动态装载:在内核运行时注:当前装载的模块可以在/proc/modeles读出。模块一旦被装入系统,就在内核地址空间中管态下执行。模块中的每个新函数都必须在模块装入内核中时进行注册。模块卸载时,函数必须注销。模块的装载insmode过程:1、新模块加入到内核空间2、查找导出的内核符号对模块中的外部符号引用进行解析,并确保该模块所引用的其它模块均已装入系统。3、为新模块分配内存空间4、装

2、载新模块,并导出该模块定义的符号。5、调用新模块中的初始化函数模块的安装和卸载模块的卸载rmmod过程:注销相应的函数和内核符号取消虚拟地址映像释放模块使用空间说明:如有其它模块引用它,则不能卸载。模块的安装和卸载设备管理系统中的所有硬件设备看起来都和一般的文件一样,它们可以使用处理文件的标准系统调用来打开、关闭和读写。系统中的每一个设备都由一个设备文件来代表,设备文件名由主设备号和从设备号组成。例如,主IDE硬盘的设备文件是/dev/hda。一个设备驱动程序控制的所有设备有一个相同的主设备号,通过不同的从设备号来区分设备和它们的控制器。例如,主

3、IDE硬盘的每一个分区都有一个不同的从设备号,这样主IDE硬盘的第二个分区的设备文件是/dev/hda2。Linux系统使用主设备号和系统中的一些表来将系统调用中使用的设备文件映射到设备驱动程序中。Linux系统支持三种类型的硬件设备字符设备:字符设备是直接读取的,不必使用缓冲区。块设备:块设备每次只能读取一定大小的块的倍数,通常一块是512或者1024字节。块设备通过缓冲区读写,并且可以随机地读写。块设备可以通过它们的设备文件存取,但通常是通过文件系统存取。只有块设备支持挂接的文件系统。网络设备:网络设备是通过BSD套接字接口存取的。设备管理L

4、inux系统支持多种设备,这些设备的驱动程序之间有一些共同的特点:内核代码:设备驱动程序是系统内核的一部分,所以如果驱动程序出现错误的话,将可能严重地破坏整个系统。内核接口:设备驱动程序必须为系统内核或者它们的子系统提供一个标准的接口。内核机制和服务:设备驱动程序利用一些标准的内核服务,例如内存分配等。可装入:大多数的Linux设备驱动程序都可以在需要时装入内核,在不需要时卸载。可设置:Linux系统设备驱动程序可以集成为系统内核的一部分,至于哪一部分需要集成到内核中,可以在系统编译时设置。动态性:当系统启动并且各个设备驱动程序初始化以后,驱动程

5、序将维护其控制的设备。如果设备驱动程序控制的设备并不存在,也并不妨碍系统的运行。设备管理设备管理Linux内核和设备驱动程序之间使用标准的交互接口。设备驱动程序在其初始化时就在系统内核中进行登记。Linux系统使用设备驱动程序的登记表作为内核和驱动程序接口的一部分。这些表中包括指向处理程序的指针和其他信息。主设备号chrdevs数组blkdevs数组VFSinode数组元素均为device_struct结构设备管理字符设备name:指向登记的设备驱动程序名fops:指向一个包括各种文件操作过程的地址的数组。此数组中包括的地址指向设备驱动程序中处理

6、文件的操作,例如,打开、读写和关闭子过程。块设备内核对块设备的操作要使用缓冲区。因此,每一个块设备驱动程序必须既向缓冲区提供接口,也提供一般的文件操作接口。每一个块设备都在blk_dev数组中有一个blk_dev_struct结构的记录。数据结构blk_dev_struct包括:request_queue:指向请求数据结构链表的指针,每一个请求数据结构都代表一个来自缓冲区的请求queue:请求过程的地址data:辅助信息,帮助找到特定设备的请求队列设备管理设备管理每当缓冲区希望和一个在系统中注册的块设备交换数据,它都会在blk_dev_struc

7、t中添加一个请求数据结构。每一个请求都有一个指针指向一个或者多个buffer_head数据结构,每一个buffer_head结构都是一个读写数据块的请求。每一个请求结构都在一个静态链表all_requests中。如果请求添加到了一个空的请求链表中,则调用设备驱动程序的请求函数来开始处理请求队列。否则,设备驱动程序只是简单地处理请求队列中的每一个请求。一旦设备驱动程序完成了一个请求,它将把buffer_head结构从request结构中移走,并把buffer_head结构标记为已更新,同时将它解锁。这样就可以唤醒等待锁定操作完成的进程。设备管理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。