欢迎来到天天文库
浏览记录
ID:33088341
大小:80.00 KB
页数:7页
时间:2019-02-20
《linux的设备管理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、节蚆螂衿莅蕿蚈衿蒇莂羇袈膇薇袂袇艿莀螈袆莁薅蚄羅肁莈薀羄膃薄衿羃莅莆袅羃蒈蚂螁羂膇蒅蚇羁芀蚀薃羀莂蒃袂罿肂蚈螈肈膄蒁蚄肇芆蚇薀肇葿蒀羈肆膈莂袄肅芁薈螀肄莃莁蚆肃肃薆薂膂膅荿袁膁芇薄螇膁莀莇蚃膀聿薃虿腿芁蒆羇膈莄蚁袃膇蒆蒄蝿膆膆虿蚅螃芈蒂薁袂莀蚈袀袁肀蒀螆袀节蚆螂衿莅蕿蚈衿蒇莂羇袈膇薇袂袇艿莀螈袆莁薅蚄羅肁莈薀羄膃薄衿羃莅莆袅羃蒈蚂螁羂膇蒅蚇羁芀蚀薃羀莂蒃袂罿肂蚈螈肈膄蒁蚄肇芆蚇薀肇葿蒀羈肆膈莂袄肅芁薈螀肄莃莁蚆肃肃薆薂膂膅荿袁膁芇薄螇膁莀莇蚃膀聿薃虿腿芁蒆羇膈莄蚁袃膇蒆蒄蝿膆膆虿蚅螃芈蒂薁袂莀蚈袀袁肀蒀螆袀节蚆螂衿莅蕿蚈衿蒇莂羇袈膇薇
2、袂袇艿莀螈袆莁薅蚄羅肁莈薀羄膃薄衿羃莅莆袅羃蒈蚂螁羂膇蒅蚇羁芀蚀薃羀莂蒃袂罿肂蚈螈肈膄蒁蚄肇芆蚇薀肇葿蒀羈肆膈莂袄肅芁薈螀肄莃莁蚆肃肃薆薂膂膅荿袁膁芇薄螇膁莀莇蚃膀聿薃虿腿芁蒆羇膈莄蚁袃膇蒆蒄蝿膆膆虿蚅螃芈蒂薁袂莀蚈袀袁肀蒀螆袀节蚆螂衿莅蕿蚈衿蒇莂羇袈膇薇袂袇艿莀螈袆莁薅蚄羅肁莈薀羄膃薄衿羃莅莆袅羃蒈蚂螁羂膇蒅蚇羁芀蚀薃羀莂蒃袂罿肂蚈螈肈膄蒁蚄肇芆蚇薀肇葿第六章Linux的设备管理lLinux的设备管理的主要任务是控制设备完成输入输出操作,所以又称输入输出(I/O)子系统。l它的任务是把各种设备硬件的复杂物理特性的细节屏蔽起来,提供一
3、个对各种不同设备使用统一方式进行操作的接口。lLinux把设备看作是特殊的文件,系统通过处理文件的接口—虚拟文件系统VFS来管理和控制各种设备。§6.1设备管理概述一.Linux设备的分类l设备被分为三类,块设备、字符设备和网络设备。l字符设备是以字符为单位输入输出数据的设备,一般不需要使用缓冲区而直接对它进行读写。l块设备是以一定大小的数据块为单位输入输出数据的,一般要使用缓冲区在设备与内存之间传送数据。l网络设备是通过通信网络传输数据的设备,一般指与通信网络连接的网络适配器(网卡)等。Linux使用套接口(socket)以文件I/
4、O方式提供了对网络数据的访问。二.设备驱动程序l系统对设备的控制和操作是由设备驱动程序完成的。l设备驱动程序是由设备服务子程序和中断处理程序组成。设备服务子程序包括了对设备进行各种操作的代码,中断处理子程序处理设备中断。l设备驱动程序的主要功能是:l对设备进行初始化l启动或停止设备的运行l把设备上的数据传送到内存l把数据从内存传送到设备l检测设备状态l驱动程序是与设备相关的。l驱动程序的代码由内核统一管理,l驱动程序在具有特权级的内核态下运行。l设备驱动程序是输入输出子系统的一部分。l驱动程序是为某个进程服务的,其执行过程仍处在进程运
5、行的过程中,即处于进程上下文中。l若驱动程序需要等待设备的某种状态,它将阻塞当前进程,把进程加入到该种设备的等待队列中。。lLinux的驱动程序分为两个基本类型:字符设备驱动程序和块设备驱动程序。三.设备的识别l对设备的识别使用设备类型、主设备号、次设备号l设备类型:字符设备还是块设备。7l按照设备使用的驱动程序不同而赋予设备不同的主设备号。主设备号是与驱动程序一一对应的,l同时还使用次设备号来区分一种设备中的各个具体设备。次设备号用来区分使用同一个驱动程序的个体设备。l例如,系统中的块设备IDE硬盘的主设备号是3,而多个IDE硬盘及
6、其各个分区分别赋予次设备号1、2、3…。四.设备文件lLinux设备管理的基本特点是把物理设备看成文件,采用处理文件的接口和系统调用来管理控制设备。l从抽象的观点出发,Linux的设备又称为设备文件。l设备文件也有文件名,设备文件名一般由两部分组成l第一部分2~3个字符,表示设备的种类,如串口设备是cu,并口设备是lp,IDE普通硬盘是hd,SCIS硬盘是sd,软盘是fp等。l第二部分通常是字母或数字,用于区分同种设备中的单个设备,如hda、hdb、hdc…分别表示第一块、第二块、第三块IED硬盘。而hda1、hda2…表示第一块硬盘
7、中的第一、第二个磁盘分区。l设备文件一般置于/dev目录下,如/dev/hda2、/dev/lp0等。lLinux使用虚拟文件系统VFS做为统一的操作接口来处理文件和设备。l与普通的目录和文件一样,每个设备也使用一个VFSinode来描述,其中包含着该种设备的主、次设备号。l对设备的操作也是通过对文件操作的file_operations结构体来调用驱动程序的设备服务子程序。l例如,当进程要求从某个设备上输入数据时,由该设备的file_operations结构体得到服务子程序的操作函数入口,然后调用其中的read()函数完成数据输入操作
8、。l同样,使用file_operations中的open()、close()、write()分别完成对设备的启动、停止设备运行,向设备输出数据的操作。7§6.2Linux的I/O控制Linux的I/O控制方式有三种:查询
此文档下载收益归作者所有