‘壹’ linux驱动与设备节点简介 & Android内核与Linux内核的区别
驱动是内核的一部分,作为直接访问物理硬件的一个软件层,用于应用程序与物理硬件设备通信。内核包含多种驱动,如WIFI、USB、Audio、蓝牙、相机、显示驱动。
(1)设备驱动程序三类:字符设备驱动程序、块设备驱动程序、网络设备驱动程序;
(2)对应Linux三类设备:字符设备、块设备、网络设备;
(3)常见字符设备:鼠标、键盘、串口、控制台等;
(4)常见块设备:各种硬盘、flash磁盘、RAM磁盘等;
(5)网络设备(网络接口):eth0、eth1,注:网络设备没有设备节点,应用程序通过Socket访问网络设备。由于网络设备面向报文,较难实现相关read、write等文件读写函数,所以驱动的实现也与字符设备和块设备不同。
Linux使用对文件一样的管理方式来管理设备,所有设备都以文件的形式存放在/dev目录下,系统中的每个字符设备或者块设备都必须为其创建一个设备文件,它包含了该设备的设备类型(块设备或字符设备)、设备号(主设备号和次设备号)以及设备访问控制属性等。设备节点通过 mknod 命令创建,也可以由Udev用户工具软件在系统启动后根据/sys目录下每个设备的实际信息创建,使用后一种方式可以为每个设备动态分配设备号。
Linux中设备节点通过“mknod”命令创建,创建时需要指定主设备号和次设备号,即指定对应的驱动程序和对应的物理设备(访问设备节点时就相当于通过其设备号访问驱动程序进而间接访问到物理设备)。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3
理解:应用程序通过访问设备节点读取主设备号和次设备号,通过主设备号找对应的驱动,通过次设备号对应到具体物理设备。注:1个驱动对应一类设备,并用唯一主设备号标识。
Linux支持的各种设备的主设备号定义在include/linux/major.h文件中,已经在官方注册的主设备号和次设备号在Documentation/devices.txt文件中。
Android系统最底层是Linux,并且在中间加上了一个Dalvik / ART的Java虚拟机,从表面层看是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik / ART虚拟机为它分配的专有实例,并支持多个虚拟机在同一设备上高效运行,虚拟机执行的是专有格式的可执行文件(.dex) - 该格式经过优化,以将内存好用降到最低。
Android内核和Linux内核的差别主要体现在如下11个方面:
‘贰’ 如何在linux复制命令行的快捷键
几种方法可以实现:
1、使用上行箭头或Ctrl+P键,能调回之前的命令。
2、直接在命令行输入!99(!和99中间没有空格),重复执行上一个命令。
例如:
[test@linux]#!99
3、按 !! 并回车执行。
4、输入 !-1 并回车执行。
在下面的例子中,如果想重复执行第 4 条命令,那么可以执行 !4:
# history | more
‘叁’ VMware linux 虚拟机 键盘输入符号 不正确!!!
很象键盘映射问题,在虚拟机里面修改键盘布局试试,国内一般是美国101键盘。
‘肆’ linux 重定向中的 &> 和 >的作用
linux重定向中&>和>&是一个意思,是“复制一个文件描述符”的意思。
一、linux重定向的设备代码
标准输入(stdin) 代码为 0 ,实际映射关系:/dev/stdin -> /proc/self/fd/0
标准输出(stdout)代码为 1 , 实际映射关系:/dev/stdout -> /proc/self/fd/1
标准错误输出(stderr)代码为 2 ,实际映射关系: /dev/stderr ->/pro/self/fd/2
举例:正常输出和错误信息都不显示,把标准输出和标准错误都重定向到/dev/null
#ls1>/dev/null2>/dev/null
二、linux重定向的符号意义
1. > 和 < 分别代表重定向的方向,是从左到右还是从右到左
2. >> 和 << 代表追加,也就是不改变重定向目标文件原有的内容,追加在后面。
#举例:将执行"ls-lag"命令的结果追加到文件lee.dat中
ls-lag>>lee.dat
3. >&n 使用系统调用 p (2) 复制文件描述符 n 并把结果用作标准输出;
4. <&n 标准输入复制自文件描述符 n;
#举例:让标准错误输出和标准输入一样都被存入到文件中
find/home-namelee*>all_lee2>&1
5. n<&- 表示将 n 号输入关闭
6. <&- 表示关闭标准输入(键盘)
7. n>&- 表示将 n 号输出关闭
8. >&- 表示将标准输出关闭
#举例:关闭1,2文件描述符
lstest.shtest1.sh1>&-2>&-