linux驱动开发面试题

1.linux中内核空间及用户空间的区别?

记住"22",两级分段两级权限。

例如是32位的机器,从内存空间看:顶层1G是内核的,底3G是应用的;从权限看:内核是0级特权,应用是3级特权。

2.用户空间与内核通信方式有哪些?用户获得内核信息方式有哪些?

系统调用。proc。

3.系统调用是什么?

linux提供给应用层访问内核包括设备驱动、进程管理、内核参数的接口,例如字符设备驱动,对上层是统一的接口,对底层则由具体驱动实现。其本质是"门机制",利用机器指令进入更高的特权空间(内核态)。

3.补-以read为例,描述系统调用的过程?

对一个已创建的普通文件,要先谈open过程:vfs,fs,cache,通用块,IO调度,块驱动,物理块,从而拿到fops给到文件描述符,之后read就和底层读写相关起来了。

4.字符设备和块设备的区别,请分别列举一些?

1.数据流2.系统接口(块有两套接口)

字符设备:串口、键鼠、摄像头

块设备:sd卡,u盘

5.uboot启动流程?

CTUFRC

CPU---->>TIM---->>UART/FLASH/DRAM---->>relocate_code---->>command

6.linux内核启动流程?

UMMISMB

uboot通过theKernel启动---->>Machine---->>MMU---->>Init---->>Setup---->>Mount---->>Busybox

7.linux调度原理?

完全公平/多级反馈队列/基于优先级

优先级:很好理解。缺点:调度是遍历的,饥饿现象

多级反馈队列:超过一定时间下放到低优先级队列。特点:bitmap

完全公平:红黑树动态调整优先级(计算虚拟时间)

8.注册一个字符设备流程,代码层面?

cdev_init(cdev,fops)---->>register_chrdev(设备号,设备节点,fops)

9.创建设备节点?

mknod/启动脚本+mdev -s

10.释放资源要注意的?

内存,ioremap,中断,定时器,工作队列等等要释放

11.内核函数mmap的实现原理,机制?

将文件fd内容映射到进程虚拟内存进行读写,不必经过read/write

void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t offset )

12.遇到Oops?怎么处理的?

当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。

(未完待续)

相关推荐
AlfredZhao2 小时前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐1 天前
Linux内存扩容指南
linux
zylyehuo2 天前
Linux 彻底且安全地删除文件
linux
用户805533698032 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297912 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者4 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo4 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10155 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao6 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3107 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql