linux驱动高频考点
1、交叉编译器的作用
在一个平台上生成另一个平台的可执行程序。例如,x86平台上生成arm平台的可执行程序。通常嵌入式系统是基于arm平台,由于arm平台的算力相对不高,编译大型程序慢,所以使用交叉编译器在x86平台进行编译,大大减少了编译时间。
2、主设备号与次设备号的作用
主设备号和次设备号是用来标识系统中的设备的,主设备号用来标识设备的类型,次设备号用来标识具体的设备,以便系统能够识别出具体的设备。
3、驱动程序分为几类
- 字符设备驱动
- 块设备驱动
- 网络设备驱动
4、字符设备驱动需要实现的接口通常有哪些
open、close、read、write、ioctl等接口。
5、linux内核中EXPORT_SYMBOL宏和EXPORT_SYMBOL_GPL宏的作用
- EXPORT_SYMBOL宏用于导出内核模块中的全局变量和函数,使其可以被其他模块调用。
- EXPORT_SYMBOL_GPL宏用于导出内核模块中的全局变量和函数,但只能被GPL授权的模块调用。
6、kmalloc与vmalloc区别
- 都是用于内核空间申请内存
- kmalloc能申请较小的内存;vmalloc能申请较大的内存
- kmalloc保证申请的内存在物理上是连续的;vmalloc保证申请的内存在虚拟地址空间上的连续,在物理上可能不连续
7、container_of(ptr, type, member)的作用
已知结构体type的成员member的地址ptr,求解结构体type的起始地址。
8、进程中的PID、PPID、PGID、SID各是什么
- PID是进程ID
- PPID是父进程ID
- PGID是进程组ID
- SID是会话ID
9、/etc/inittab,/etc/fstab,/etc/init.d/rcS 的作用
- 这三个文件都是Linux系统的配置文件
- /etc/inittab它定义了在不同的运行级别启动相应的进程或执行相应的操作。在init进程中被解析
- /etc/fstab它记录磁盘挂载的信息,系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘
- /etc/init.d/rcS它是一个启动脚本文件,在inittab文件中调用,在系统启动后执行脚本中的命令
10、fork()和vfork()的作用以及区别
- fork()和vfork()都是创建一个进程
- fork()子进程拷贝父进程的数据段、代码段;vfork()出来的子进程会共享父进程的代码段和数据段,但是子进程会拥有自己的堆栈,而父进程会暂时被挂起,直到子进程调用exec()或者exit()函数才会恢复
- fork()父子进程的执行次序不确定;vfork()保证子进程先运行,在调用exec
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式软件面试笔记 文章被收录于专栏
该笔记涵盖嵌入式软件工程师技术面试中的知识点,归纳总结为:C/C++、操作系统、计算机网络、数据结构与算法、linux常用命令等章节。