资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,哈尔滨工业大学,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,哈尔滨工业大学,*,AIX/LINUX,操作系统,教师:刘远超 哈尔滨工业大学 计算机科学与技术学院,第三章,设备管理与驱动,第三章 设备管理,主要内容,:,设备分类:字符设备、块设备、特殊设备,Linux,下的设备驱动,字符设备:,是指每次与系统传输,1,个字符的设备。,字符设备通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务。,字符设备在实现时,大多不使用缓存器。,系统直接从设备读取写入每一个字符。,例如,键盘这种设备提供的就是一个数据流,当你敲入“,abcdefg,这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回,a,,最后是,g,。,设备分类,字符设备,块设备:,是指与系统间用块的方式移动数据的设备。如硬盘、,CD-ROM,和内存区域。,块设备通常支持随机存取和寻址,并使用缓存器。,操作系统为输入输出分配了缓存以存储一块数据。当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。,当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。,它与字符设备不同之处就是其一般支持随机存储,,而,字符型是流形式,逐一存储。,设备分类,块设备,特殊设备:,在类,Unix,操作系统中,设备节点并不一定要对应物理设备。,没有这种对应关系的设备是特殊设备(或伪设备)。操作系统运用了它们提供的多种功能。,部份经常使用到的特殊设备(或伪设备)包括:,null,zero,full,loop,设备分类,特殊设备(或伪设备),特殊设备及使用(,1,),/dev/stdin,:,指的就是键盘设备,实验,1,:,#cat file1 file1,Test,Ctrl+D,#,不指定输入,默认的输入设备就是,/dev/stdin,特殊设备及使用(,2,),/dev/null,设备:,是个黑洞设备,它丢弃一切写入其中数据,空设备通常被用于丢弃不需要的输出流。,任何写入该设备数据都会被丢弃掉。从这个里面读取数据返回是空。将一些不用内容经常发送给这个设备,丢弃不需要的数据。,特殊设备及使用(,3,),/dev/zero,设备:,/dev/zero,会提供无限的空字符,(NULL,ASCII NUL,0 x00),。其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件。例如:,$dd if=/dev/zero of=testzero count=1024 bs=1024,1024+0 records in,1024+0 records out,1048576 bytes(1.0 MB)copied,0.0107194 seconds,97.8 MB/s,#,创建一个大小为,1M,文件,该文件一个块是,1024,字节,一共是,1024,块(刚好,1M),,用,/dev/zero,文件内容填充它。输出创建到:,testzero,文件,特殊设备及使用(,4,),/dev/zero,设备:,$dd if=/dev/zero of=/dev/,磁盘分区,#,这个命令一定不要随便用,有点象,windows,里面的粉碎文件工具。不过它是用,0 x00,填充整个分区。这样做数据是不可以恢复的了。,注意:在,linux,操作系统中,如果没有资源配额限制,一个普通用户就可以通过上面方法在短时间内,将,整个磁盘空间占用。也可以通过,while(true)fork,类程序,启动无限线程,耗尽整个系统内存。,特殊设备及使用(,5,),/dev/full,设备:,类,Unix,系统中,,/dev/full,(常满设备)是一个特殊设备文件,总是在向其写入时返回设备无剩余空间。,这个设备通常被用来测试程序在遇到磁盘无剩余空间错误时的行为。,dd,命令的用途把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。,一般用于数据备份与恢复例,1,:将本地的,/dev/hdx,整盘备份到,/dev/hdy,:,#dd if=/dev/hdx of=/dev/hdy,例,2,:,将,/dev/sda1,全盘数据备份到指定路径的,image,文件:,#dd if=/dev/sda1 of=/home/apple/test,例,3,:将备份文件恢复到指定盘:,#dd if=/home/apple/test of=/dev/hdx,补充知识:,Linux,下的,dd,命令,Linux,下的设备驱动,什么是设备驱动程序,每个物理设备都拥有自己的控制器。且硬件控制器一般有各自的控制状态寄存器(,CSR,)。这些寄存器用来启动、停止、初始化设备以及对设备进行诊断。,Linux,中的设备由内核统一管理,,这些处理和管理硬件控制器的软件就是设备驱动程序。,这些设备驱动程序运行在特权优先级上,驻留在内存,负责对底层硬件进行处理。,设备驱动程序,-,用户进程请求设备进行输入输出的简单流程,首先当用户进程发出输入输出时,系统把请求处理的权限放在文件系统,;,文件系统,通过驱动程序提供的接口将任务下放到驱动程序,;,驱动程序,根据需要对设备控制器进行操作,设备控制器再去控制设备本身。,这样通过层层隔离,对用户进程基本上屏蔽了设备的各种特性。,因为实际上在驱动程序向文件系统提供的接口已经屏蔽掉了设备的电器特性。,Linux,设备驱动程序的主要功能,Linux,设备驱动程序的主要功能有,:,使设备投入运行和退出服务,;,从设备接收数据并将它们送回内核,;,将数据从内核送到设备,;,检测和处理设备出现的错误。,设备驱动程序的特性(,1,),Linux,内核中虽存在许多不同的设备驱动程序但它们具有一些共同的特性:,1.,驱动程序属于内核代码,设备驱动程序是内核的一部分,它象内核中其它代码一样运行在内核模式,驱动程序如果出错将会使操作系统受到严重破坏,甚至能使系统崩溃并导致文件系统的破坏和数据丢失。,2.,为内核提供统一的接口,设备驱动程序必须为,Linux,内核或其它子系统提供一个标准的接口。例如终端驱动程序为,Linux,内核提供了一个文件,I/O,接口。,设备驱动程序的特性(,2,),3,.,驱动程序的执行是属于内核机制并且使用内核服务,设备驱动可以使用标准的内核服务如内存分配、中断发送和等待队列等等。,4.,动态可加载,多数,Linux,设备驱动程序可以在内核模块发出加载请求时加载,而不再使用时将其卸载。这样内核能有效地利用系统资源。,5.,可配置,Linux,设备驱动程序可以连接到内核中。当内核被编译时,被连入内核的设备驱动程序是可配置的,内核和模块,Linux,下硬件的驱动可以有两种方式:,直接加载到内核代码中,启动内核时就会驱动此硬件设备。,另一种就是以模块方式,编译生成一个,.o,文件。当应用程序需要时再加载进内核空间运行。所以我们所说的,一个硬件的驱动程序,通常指的就是一个驱动模块。,模块(,module,),是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。模块最主要的用处就是用来实现设备驱动程序。,设备文件(,1,),设备管理的一个基本特征是设备处理的,抽象性,,即所有硬件设备都被看成普通文件,;,可以通过用操纵普通文件,相同的系统调用,来打开、关闭、读取和写入设备。,设备文件(,2,),对于一个物理设备,它可以在,/dev,下面存在一个或者多个对应的逻辑设备节点,这个节点以文件的形式存在,但它不是普通意义上的文件,它是设备文件,更确切的说,它是设备节点。,例如系统中第一个,IDE,硬盘被表示成,/dev/hda,。,设备文件(,3,),设备一般有主设备号和次设备号。,主设备号表明了某一类设备,一般对应着确定的驱动程序,;主设备号是从,/proc/devices,文件中获得的。,主设备号的主要作用:就是声明设备所使用的驱动程序。驱动程序和设备号是一一对应的,当,你打开一个设备文件时,操作系统就已经知道这个设备所对应的驱动程序,。,次设备号一般是区分不同属性,例如不同的使用方法,不同的位置,不同的操作。,设备驱动举例:网卡驱动的升级(,1,),网卡驱动需要编译,因而需要安装,kernel-,devel,,,以提供相应支持:,1,)用,#rpm,qa|grep,kernel-,devel,查看是否安装了这个包;,如果返回结果中有,kernel-,devel,-xxx(,其中,xxx,为当前,redhat,的内核版本,如,rhel3,为,2.4.21-4EL),即已经安装。,2,)如果安装了用,#rpm-V kernel-,devel,校验是否有文件丢失,如果没有输出,表示文件完整;,3,)如果有丢失用,#rpm-,ivh,-force kernel-,devel,-,xxxx,.,把包重新覆盖安装一下。,如果某个程序需要内核提供的一些功能,它就需要内核的,C header,来编译程序,这个时候需要,kernel-,devel,,文件才能顺利编译。当然,,kernel-,devel,不光是,C Header,文件,它还有内核的配置文件等。,设备驱动举例:网卡驱动的升级(,2,),1,在编译网卡之前,先检查网卡使用的网卡驱动模块名:,#cat/etc/modprobe.conf,alias eth0 bnx2,表明网卡驱动模块名为,bnx2,2,检查当前是否有已加载网卡驱动模块,bnx2,:,#lsmod|grep bnx2,bnx2 179021 0,表明系统已有加载完网卡驱动模块,3,查看当前驱动模块信息,从而得到驱动模块的版本,以便验证稍后网卡驱动模块升级,#modinfo bnx2,filename:/lib/modules/2.6.18-194.el5/kernel/drivers/net/bnx2.,ko,网卡驱动存放的路径,升级后网卡存放路径与此路径不同,version:,2.0.2,表明网卡模块版本为,2.0.2,,是系统默认网卡驱动版本,设备驱动举例:网卡驱动的升级,(3),4,从,DELL,网站下载,Broadcom,网卡驱动包,Bcom_LAN_16.2.0_Linux_Source_A01.tar.gz,。解压开始安装,#tar-vzxf Bcom_LAN_16.2.0_Linux_Source_A01.tar.gz,#,cd Bcom_LAN_16.2.0_Linux_Source_A01,-,进入解压出来的目录,rootlocalhost,Bcom_LAN_16.2.0_Linux_Source_A01,#,ls,显示文件夹内容,Linux_Readme,NetXtreme,NetXtremeII,rootlocalhost,Bcom_LAN_16.2.0_Linux_Source_A01,#cd,NetXtremeII,/,进入到网卡驱动资源目录,rootlocalhost,NetXtremeII,#,ls,显示此目录的内容,brcm_iscsi_uio-0.6.2.13.tar.gz README,netxtreme2-6.2.23-1.src.rpm,RELEASE.bnx2i.TXT,netxtreme2-6.2.23.tar.gz RELEASE.bnx2.TXT,netxtreme2_sup-6.2.23-1.ISO.tar.gz RELEASE.bnx2x.TXT,rootlocalhost NetXtremeII#,rpm-ivh netxtreme2-6.2.23-1.src.rpm,安装编译网卡所需要的资源,1:netxtreme2#100%,可以按如下方式查看该,rpm,所包含的内容,及存放的目录,:,r
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号