Linux驱动面试高频考点

简介: Linux驱动面试高频考点

1、驱动程序分为几类?

  • 字符设备驱动
  • 块设备驱动
  • 网络设备驱动

2、字符设备驱动需要实现的接口通常有哪些

  • open、close、read、write、ioctl等接口。

3、主设备号与次设备号的作用

  • 主设备号和次设备号是用来标识系统中的设备的,主设备号用来标识设备的类型,次设备号用来标识具体的设备,以便系统能够识别出具体的设备。

4、交叉编译器的作用

  • 在一个平台上生成另一个平台的可执行程序。例如,x86平台上生成arm平台的可执行程序。通常嵌入式系统是基于arm平台,由于arm平台的算力相对不高,编译大型程序慢,所以使用交叉编译器在x86平台进行编译,大大减少了编译时间。

5、硬链接和软链接的区别

  • 软链接相当与window系统的快捷方式,软链接文件存放的内容是源文件的绝对路径。删除源文件会使软链接失效。
  • 硬链接是指向文件或目录的另一个名称,它们与源文件或目录共享相同的inode,但具有不同的名称。删除源文件不会影响到硬链接文件。

6、Linux内核的组成部分?

  • 进程调度(SCHED)、进程间通信(IPC)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)

7、Linux内核有哪些同步方式?

  • 原子操作、信号量、自旋锁、读写锁、顺序锁等。

8、用户空间和内核空间的通信方式有哪些?

  • 系统调用、信号、procfs、mmap、netlink等

9、BootLoader、Linux内核、根文件系统的关系?

  • 系统一上电,就执行BootLoader来初始化处理器及外设,将系统的软硬件环境带到一个合适的状态。
  • 然后将Linux内核、根文件系统从非易失性存储器读取到内存中并执行Linux内核。
  • Linux内核完成初始化之后就挂载某个文件系统作为根文件系统。

10、linux内核中EXPORT_SYMBOL宏和EXPORT_SYMBOL_GPL宏的作用

  • EXPORT_SYMBOL宏用于导出内核模块中的全局变量和函数,使其可以被其他模块调用。
  • EXPORT_SYMBOL_GPL宏用于导出内核模块中的全局变量和函数,但只能被GPL授权的模块调用。

11、container_of(ptr, type, member)的作用

  • 已知结构体type的成员member的地址ptr,求解结构体type的起始地址

12、kmalloc与vmalloc区别

  • 都是用于内核空间申请内存
  • kmalloc能申请较小的内存;vmalloc能申请较大的内存
  • kmalloc保证申请的内存在物理上是连续的;vmalloc保证申请的内存在虚拟地址空间上的连续,在物理上可能不连续

13、内存管理单元MMU的作用?

  • 地址映射。
  • 内存分配和回收。
  • 内存保护。
  • 内存扩充。

14、简述MMU将VA转为PA的过程

  • 以三级页表为例,MMU通过访问页表基址寄存器,得到一级页表PGD的基地址,再结合虚拟地址中的PGD index找到了下一级页表PTE的基地址;得到了PTE的基址,再结合虚拟地址中的PTE index找到PFN,然后再和VA相加得到物理地址。

15、操作系统的内存分配一般有哪几种方式,各有什么优缺点?

  • 分页存储管理:优点是不需要连续的内存空间,且内存利用率高(只有很小的页内碎片);缺点是不易于实现内存共享与保护。
  • 分段存储管理:优点是易于实现段内存共享和保护;缺点是每段都需要连续的内存空间,且内存利用率较低(会产生外部碎片)。
  • 段页式存储管理:优点是不需要连续的内存空间,内存利用率高(只有很小的页内碎片),且易于实现段内存共享和保护;缺点是管理软件复杂性较高,需要的硬件以及占用的内存也有所增加,使得执行速度下降。

end

关注我,回复【加群】,进入嵌入式技术交流群,一起交流学习~

猜你喜欢

机遇:我是如何走向Linux驱动的...

入职Linux驱动工程师后,我才知道的真相......

一个Linux驱动工程师必知的内核模块知识

Linux内核中常用的数据结构和算法

Linux内核中常用的C语言技巧

Linux内核基础篇——常用调试技巧汇总

Linux内核基础篇——动态输出调试

Linux内核基础篇——printk调试

Linux内核基础篇——initcall

相关文章
|
5天前
|
存储 缓存 Linux
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
【Shell 命令集合 磁盘维护 】Linux 设置和查看硬盘驱动器参数 hdparm命令使用教程
45 0
|
3天前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
2天前
|
运维 Linux Docker
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
ChatGLM3在Docker环境部署(1),Linux运维电话面试技巧
|
5天前
|
Linux 芯片 Ubuntu
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
Linux驱动入门 —— 利用引脚号操作GPIO进行LED点灯
|
5天前
|
Ubuntu Linux
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-2
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-2
|
5天前
|
Linux 芯片
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-1
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯
Linux驱动入门 —— 利用寄存器操作GPIO进行LED点灯-1
|
5天前
|
Linux C语言 Ubuntu
Linux驱动入门——编写第一个驱动
Linux驱动入门——编写第一个驱动
Linux驱动入门——编写第一个驱动
|
5天前
|
存储 缓存 安全
Linux系统内核面试题
Linux系统内核面试题
28 3
|
5天前
|
Linux
linux驱动层输出dev_dbg打印信息
linux驱动层输出dev_dbg打印信息
24 0
|
5天前
|
存储 监控 Linux
【专栏】在 Linux 中,了解已安装驱动器是系统管理的关键
【4月更文挑战第28天】在 Linux 中,了解已安装驱动器是系统管理的关键。本文介绍了三种方法:1) 使用 `lsblk` 命令显示设备名、大小和类型;2) `fdisk -l` 命令提供详细分区信息;3) `gnome-disks` 等系统管理工具展示驱动器信息。此外,还讨论了驱动器类型识别、挂载点概念及其应用。通过这些方法,用户能有效地监控和管理 Linux 系统中的驱动器。

热门文章

最新文章