字符设备和块设备映射到操作系统中的文件系统,由文件系统向上提供给应用程序统一的接口用以访问设备。
Linux把设备视为文件,称为设备文件,通过对设备文件的读写操作实现对真实外设的操作。
从驱动程序的角度来从下到上看层次结构,包含了硬件设备,设备驱动程序(中断处理程序,设备服务程序),文件系统和用户进程四个层次:
需要知道的两个概念:
设备号:
- 主设备号:标识同一类设备,对应一个驱动程序
- 从设备号:标识一个设备实例,从设备号使得不同的物理设备使用同一个驱动程序。
设备文件:存在硬盘上的实际存在的文件,包括设备的名字,类型,设备号
需要知道的三个关于驱动操作的数据结构:
- file_operations:文件操作,每个进程对设备的访问都会转换为对file_operations的访问,调用里面的操作函数指针;
- file:打开的文件
- inode:由内核在文件系统中表示文件
设备注册完成后,可以打开一个设备,这时候调用系统调用open()函数,经过一系列的调用,最后会调用chrdev_open()函数进行实际的打开操作,其主要流程为:
设备注册打开完成后,需要对其进行各种操作,外部设备的操作有一个特点就是操作时间较长,且操作时间不确定。
处理外部设备运作时,主要有两种方式:轮询和中断。
下面主要用介绍用中断的模式等待外设完成操作,其主要流程为:
这里简单总结了一下Linux处理外部设备的主要流程,主要包括了外部设备的注册,打开和通常的操作。
需要注意的知识点就是驱动设备模型的概念,在字符设备中位cdev。所有对设备的操作,都是在cdev的ops字段寻找处理程序,之前将cdev映射道inode的i_cedv中,cdev的ops字段映射到设备文件file的f_op字段,这样对设备文件的操作就等同于对设备的操作,这正是本文开头所说明的设备文件映射到文件系统的实质。
在外部设备的操作流程中,涉及到中断处理流程,主要指的是软中断,会在中断一章详细讨论。
参考:
Linux操作系统分析PPT:驱动程序编写基础
今天在virtual box新装了一个CentOS6.4系统。但是在安装增强功能的时候。总是提示失败。
在安装脚本执行到“building the main Guest Additions module FAILED”,以前没有遇见过这个问题,
想想发现今天安装的是最小桌面的,可能是因为这个问题,用“rpm –qa|grep gcc” 一下发现gcc没有安装,这样怎么可以呀。
然后我就一次执行如下命令
yum install kernel
yum install kernel-devel
yum install gcc
yum install make
最后安装成功。
blog:http://blog.csdn.net/rentiansheng/article/details/9115873
由有需要在本人机子搭建一个Linuxr网络环境,准备三个虚拟机,一个master,一个slave,所以就准备用VM搞三个Linux虚拟机,Linux采用CentOS 6.3系统,利用这三个虚拟机组建一个小型的虚拟局域网,安装完虚拟机之后,在网络连接里面会多出两张网卡(如下图1)
图 1
一个是VMNet1(桥接),VMNet8(NAT),具体详情可查阅相关资料,我组建的小型局域网是采用NAT的方式连接。
二、配置VMNet8及宿主机的网络我是用本子办公,所以使用无线网上网,如图1中的最后一个,无线网络连接3,在其上在右键——属性(如图2)
图 2
选择“共享”的选项卡,打开网络共享,“允许其它网络用户通过…“,在“家庭网络连接”中选择“VMNet8(VMware NetWork Adpter…)”,然后确定,如图3
图 3
宿主机的网络配置结束。
三、配置VM的网络在图1中的VMware Network Adapter VMNet 8上右键,属性,如图4
图 4
双击(TCP/IPv4),如图5
图 5
此处要手动配置,非自动获取。
打开VM工作,编辑——虚拟网络编辑器,如图6
图 6
点击“NAT设置”,如图7
图 7
记住网关IP,此网关就是虚拟机里的网关
四、配置虚拟机的网络在第二步中,我们已经配置了VMNet的网络及网关,现在我们配置虚拟机里面的网络,虚拟机的网络要与VMNet8在一个网段。
我选用NAT的网络适配器,如图8
图 8
进入虚拟机,打开终端,输入命令:setup,选择网络配置,选择设备,我的是eth0,进入设备,输入IP、网关等,如图9
图9
网关及DNS都是图7中红色区域的配置,点确定,返回再配置一个DNS,根据网上查阅的资料,到这一步,理应该是可以上网的,但是我的不可以,所以我还需要对防火墙做一下配置,同样是输入命令:setup,进入防火墙配置,关闭防火墙即可。如图10
图 10
五、小结至此,我可以上网了,因为我采用的是桌面的,可以用火狐浏览器上百度了
附录1、如果更改了网络配置,一定要重启网络服务,命令是:service network restart
2、如果无图开界面,可利用命令进入目录/etc/sysconfig/network-scripts,使用命令打开编辑ifcfg-eth0这个文件,输入以下的内容