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 信息。

(未完待续)

相关推荐
mounter6255 分钟前
突破单点限制:BPF 多跟踪点高效附加机制与新 ftrace 架构解析
linux·ebpf·linux kernel·kernel·ftrace
刘某的Cloud9 分钟前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
小此方13 分钟前
Re:Linux系统篇(五十四)线程篇 · 七:互斥锁的底层实现原理:从硬件上下文、原子交换指令(Swap)到并发封装实战
linux·运维·驱动开发
郭涤生38 分钟前
rootfs 详解与裁剪优化记录
linux·c++·bsp
二宝哥2 小时前
CentOS 7.9 离线安装 Nginx 并配置openssl1.1.1
linux·nginx·centos
程序员老陆2 小时前
说一说FFmpeg6在Linux平台的编译
linux·运维·服务器·ffmpeg
IT摆渡者3 小时前
VM EXSI7.0存储硬盘故障处理
大数据·linux·github
赵民勇3 小时前
systemd-cgtop命令详解
linux·运维
hhwyqwqhhwy3 小时前
Ubuntu22.04 安装vitis
linux
刚入门的大一新生4 小时前
Linux-Linux第一个系统程序-进度条
linux·运维·服务器