一. 基础题:
1. linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些?
https://blog.csdn.net/bingqingsuimeng/article/details/7924756
2. 字符设备和块设备的区别,请分别列举一些实际的设备说出它们是属于哪一类设备
字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字
符设备驱动程序通常至少实现open,close,read和write系统调用。字符终端、串口、鼠标、键盘、摄像头、声卡和显卡
等就是典型的字符设备。
块设备:和字符设备类似,块设备也是通过/dev目录下的文件系统节点来访问。块设备上能够容纳文件系统,如:u
盘,SD卡,磁盘等。
字符设备和块设备的区别仅仅在于内核内部管理数据的方式,也就是内核及驱动程序之间的软件接口,而这些不同
对用户来讲是透明的。在内核中,和字符驱动程序相比,块驱动程序具有完全不同的接口。
3. linux内核的启动过程(源代码级)?
https://www.cnblogs.com/CrazyCatJack/p/6135435.html
4. linux中系统调用过程?如:应用程序中read()在linux中执行过程即从用户空间到内核空间?
https://blog.csdn.net/kai_zone/article/details/80459334
https://my.oschina.net/haomcu/blog/468656
5. linux调度原理?
https://blog.csdn.net/janneoevans/article/details/8125106
6. 查看驱动模块中打印信息应该使用什么命令?如何查看内核中已有的字符设备的信息?如何查看正在使用的有哪些中
断号?
1) 查看驱动模块中打印信息的命令:dmesg
2) 查看字符设备信息可以用lsmod 和modprobe,lsmod可以查看模块的依赖关系,modprobe在加载模块时会加载其他
依赖的 模块。
3) 显示当前使用的中断号cat /proc/interrupt
7. copy_to_user()和copy_from_user()主要用于实现什么功能?一般用于file_operations结构的哪些函数里面?
由于内核空间和用户空间是不能互相访问的,如果需要访问就必须借助内核函数进行数据读写。
copy_to_user():完成内核空间到用户空间的复制,copy_from_user():是完成用户空间到内核空间的复制。一般用于
file_operations结构里的read,write,ioctl等内存数据交换作用的函数。当然,如果ioctl没有用到内存数据复制,那