首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
一勺西瓜
重庆邮电大学 嵌入式软件开发
发布于重庆
关注
已关注
取消关注
@Aosper:
嵌入式软件常用面试题汇总之Linux系统相关(3)
Linux系统之内核驱动基础相关的面试题汇总对于应届生校招类,面试时候基本上只要关键词有达到就可以了。1.你了解交叉编译吗?讲一下交叉编译的作用?为什么需要交叉编译器?交叉编译器的版本?如何获取交叉编译器?作用: 交叉编译的作用是在一种平台(x86)上生成可以在另一种不同平台(arm)上执行的代码。原因:不同体系结构的目标平台:目标平台和开发平台可能采用不同的指令集架构(比如ARM和x86),因此需要将代码从一个平台编译成另一个平台可执行的代码。资源限制:在一些嵌入式系统或者低端设备上,可能没有足够的资源来运行一个完整的编译环境,因此需要在更强大的开发机器上进行编译。开发效率:有时为了节省时间,可以在一台性能更好的机器上进行编译,然后将生成的可执行文件移植到目标平台上,而不是在目标平台上直接编译。版本:交叉编译器的版本取决于目标平台和开发环境。常见的交叉编译器包括GCC(GNU Compiler Collection)和Clang/LLVM。获取交叉编译器通常可以通过以下方式:源码编译:从交叉编译器项目的官方网站或版本控制库获取源代码,然后在开发机器上编译安装。这通常需要具备一定的编译环境和相关依赖项。预编译包:有些操作系统或软件发行版可能提供了预编译好的交叉编译器,可以直接通过软件包管理器安装。交叉编译工具链:有些嵌入式开发平台提供了针对特定硬件和软件组合的交叉编译工具链,可以从它们的官方渠道获取。2.linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些?对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分,一部分为内核空间,另一部分为用户空间。针对 Linux 操作系统而言,最高的 1G 字节(从虚拟地址 0xC0000000 到 0xFFFFFFFF)由内核使用,称为内核空间。而较低的 3G 字节(从虚拟地址 0x00000000 到 0xBFFFFFFF)由各个进程使用,称为用户空间。用户空间与内核通信方式主要有: 系统调用(System call):用户空间的进程通过系统调用向内核发出请求,请求内核代表其执行特权操作,如文件操作、进程管理等。系统调用提供了一种安全的用户空间与内核空间通信的方式。 文件系统:很多内核程序细节,如中断等,都在proc/目录下有所体现,虚拟文件系统提供了一种便捷的用户空间和内核空间的交互方式。用户空间的进程可以通过文件系统接口直接读写文件,而文件系统底层由内核来管理。 内存映射:mmap共享内存。Linux通过mmap的把内核中特定部分的内存空间映射到用户级程序的内存空间去,从而提供了用户程序对内存直接访问的能力。该方式尤其适合在那些内核和用户空间需要快速大量交互数据的情况下。 内核程序使用信号通知应用程序:信号在内核里的用途主要集中在通知用户程序出现重大错误,强行杀死当前进程,这是内核通过发送SIGKILL信号通知进程终止。 管道(Pipes): 管道是一种特殊的文件,可以在进程间进行通信。它可以用于用户空间进程之间的通信,而管道的底层实现是通过内核来管理的。3.为什么区分内核空间跟用户空间在 CPU 的所有指令中,有些指令是非常危险的,如果错用,将导致系统崩溃,比如清内存、设置时钟等。如果允许所有的程序都可以使用这些指令,那么系统崩溃的概率将大大增加。所以,CPU 将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通应用程序只能使用那些不会造成灾难的指令。比如 Intel 的 CPU 将特权等级分为 4 个级别:Ring0~Ring3。其实 Linux 系统只使用了 Ring0 和 Ring3 两个运行级别(Windows 系统也是一样的)。当进程运行在 Ring3 级别时被称为运行在用户态,而运行在 Ring0 级别时被称为运行在内核态。通过区分内核空间和用户空间的设计,隔离了操作系统代码(操作系统的代码要比应用程序的代码健壮很多)与应用程序代码。即便是单个应用程序出现错误也不会影响到操作系统的稳定性,这样其它的程序还可以正常的运行。5.什么是内核态和用户态?当进程运行在内核空间时就处于内核态,而进程运行在用户空间时则处于用户态。在内核态下,进程运行在内核地址空间中,此时 CPU 可以执行任何指令。运行的代码也不受任何的限制,可以自由地访问任何有效地址,也可以直接进行端口的访问。在用户态下,进程运行在用户地址空间中,被执行的代码要受到 CPU 的诸多检查,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中 I/O 许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问。6.静态库与动态库的区别?叫静态库是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中,所以占用内存会比较大。而动态库是在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入,占用内存少。链接方式:静态库: 在编译链接阶段,静态库的代码会被复制到最终的可执行文件中。因此,可执行文件在运行时不再需要依赖于静态库。动态库: 在编译链接阶段,只有对动态库的引用会被链接到最终的可执行文件中,而实际的库文件代码不会被复制。动态库在程序运行时由操作系统动态加载到内存中,并与程序共享。文件大小和内存占用:静态库: 包含了所有的代码和数据,因此可执行文件的大小会比较大,且在每个使用该静态库的程序中都会有一份拷贝。动态库: 多个程序可以共享同一个动态库,因此节省了存储空间,并且在内存中只需要一份动态库的副本,因此通常在内存占用上更加高效。更新和维护:静态库: 如果静态库更新了,所有使用该静态库的程序都需要重新编译以包含更新后的代码。因此,更新和维护静态库可能比较繁琐。动态库: 如果动态库更新了,只需要替换系统中的动态库文件,所有使用该动态库的程序都可以自动享受到更新,无需重新编译。加载和运行效率:静态库: 在程序启动时,所有静态库的代码都被加载到内存中,可能导致程序启动较慢,但运行时的性能可能稍微好一些。动态库: 只有在需要时才会被加载到内存中,因此程序启动速度可能更快,但运行时可能稍微慢一些,因为需要动态加载和链接库。7.什么是设备树?Linux设备树(Device Tree)是一种描述硬件平台信息和设备配置的数据结构,用于在Linux内核启动时传递硬件信息给内核。它是一种独立于硬件架构的描述性文档,被设计用来描述系统的硬件组件、设备连接、资源分配以及其他相关信息。设备树通常由一个文本文件(通常是以.dts或.dtsi为扩展名的文件)来描述,这个文件描述了系统的硬件组件、连接方式以及设备的属性。然后通过设备树编译器(如dtc)将设备树编译成二进制格式(.dtb文件),内核启动时加载这个二进制设备树文件,并根据其中描述的硬件信息初始化系统。使用设备树的主要优点包括:硬件抽象: 设备树提供了一种硬件抽象的方法,使得内核不需要静态了解硬件细节就能在不同平台上运行。简化内核编译: 设备树允许内核作为一个通用映像在不同的硬件上运行,而无需为每个硬件平台编译一个特定的内核。灵活性: 设备树可以描述复杂的硬件连接和配置,允许系统构建者灵活地配置系统。可维护性: 设备树文件提供了一种可读性较高的描述硬件的方式,使得系统的硬件配置和修改更加直观和可维护。8.copy_to_user()和copy_from_user()主要用于实现什么功能?copy_to_user() 和 copy_from_user() 是 Linux 内核中用于用户空间和内核空间之间数据传输的函数。从内核空间向用户空间复制数据(copy_to_user()): 当用户程序需要获取内核中的数据时,内核通过 copy_to_user() 函数将数据从内核空间复制到用户空间。这个函数会验证用户空间指针的有效性,并确保数据传输的安全性和正确性。从用户空间向内核空间复制数据(copy_from_user()): 当用户程序需要将数据传递给内核时,内核通过 copy_from_user() 函数将数据从用户空间复制到内核空间。这个函数同样会验证用户空间指针的有效性,并确保数据传输的安全性和正确性。9.linux中主要有哪几种设备?Linux 内核中主要有三种类型的设备:字符设备(Character Device): 这种设备以字符为单位进行数据传输。它们是按顺序访问的,没有块的概念。典型的字符设备包括终端设备(如键盘和显示器)、串口设备(如串口通信设备)、声卡等。字符设备的特点是每次读取或写入都是一次性的,而且通常没有缓冲区,数据被直接传送到设备。块设备(Block Device): 这种设备以块(通常是几KB或更大)为单位进行数据传输。块设备通常具有缓冲区,并支持随机访问,可以按任意顺序读取或写入数据。典型的块设备包括硬盘驱动器、固态硬盘(SSD)、CD-ROM 等。网络设备(Network Device): 这种设备通过网络进行数据传输,通常用于网络通信。典型的网络设备包括网卡(Network Interface Card,NIC)和无线网卡(Wireless Network Interface Card,Wi-Fi)等。10.字符设备和块设备的区别?数据传输单位: 字符设备以字符为单位进行数据传输,而块设备以块为单位进行数据传输。访问方式: 字符设备通常按顺序访问,没有块的概念,而块设备支持随机访问,可以按任意顺序读取或写入数据。缓冲区: 字符设备通常没有缓冲区,数据被直接传送到设备,而块设备通常具有缓冲区,数据先被缓存,然后批量传送到设备。用途: 字符设备通常用于需要按顺序访问的设备,如终端设备和串口设备;而块设备通常用于需要随机访问和较大数据传输的设备,如硬盘驱动器和固态硬盘。11.insmod 一个驱动模块,会执行模块中的哪个函数?module_init()。这个函数的原型定义在 <linux/init.h> 头文件中12.设备驱动模型三个重要成员是?platform总线的匹配规则是?设备(Device): 代表系统中的一个硬件设备,例如磁盘、网卡、键盘等。每个设备都有一个唯一的标识符(如设备号或者设备路径),用于在系统中唯一标识这个设备。驱动程序(Driver): 是与特定硬件设备相对应的软件模块,负责控制设备的操作。驱动程序通常包含初始化函数、读取函数、写入函数等,用于与设备进行交互。总线(Bus): 是用于连接设备和驱动程序的物理或逻辑总线,例如 PCI 总线、USB 总线、SPI 总线等。总线负责管理设备和驱动程序之间的通信和交互。要匹配的设备和驱动都要注册,设备可以在设备树里注册,也可以通过代码注册设备,匹配成功会去调用驱动程序里的probe函数。
点赞 2
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
10-08 19:23
美团_java开发工程师(准入职员工)
美团内推,美团内推码
工作体验: 由于是平台性质的研发,日常的工作感觉并没有非常的卷。大家基本10点前到岗,11点半就组团吃午饭去了,下午14点开始工作,17点半晚饭,晚上20点后陆续开始下班,当然下班时间因人因时而有差异。21点半可以打车后基本人都走光了。 但是也因为是平台性质,所以不可避免有客服&&运维压力,客服来源于内部RD,一般是平台使用问题,运维是7*24小时保障系统正常运行(当然会有轮班)。 组内氛围: 不得不说组内氛围还是非常不错的,老板很赞,不会很Push进度,大家遇到问题也是互帮互助,这也是我能待这么久很大的原因之一。 福利: 美团素有“开水团”的称号,日常唯一的福利就是白开水免费...
美团公司氛围 2926人发布
点赞
评论
收藏
分享
10-09 13:01
饿了么_后端研发工程师(准入职员工)
饿了么内推,饿了么内推码
刚从饿了么面试间出来,这波题必须趁热发!3轮面完拿offer,全是新鲜热乎的原题+踩分点,背完直接复刻我的通关路~一面被追着问的基础题:- 手写防抖在点餐场景的应用(比如搜索框输入联想,面试官超爱结合业务)- CSS实现饿了么商品卡片的悬浮效果(transition+transform细节要讲清)- 浏览器的事件循环(举了外卖订单状态更新的异步场景,秒懂)二面技术深挖(这些坑别踩):- Vue的v-model双向绑定原理(从input事件到自定义组件,讲透加分)- 饿了么APP的首屏优化(我答了路由懒加载+骨架屏,面试官补了预加载)- 手写Promise并发控制(比如同时请求5家店铺数据,限制...
点赞
评论
收藏
分享
09-16 12:07
西安电子科技大学 研发工程师
实习经历太弱
去了一个国企实习,项目代码量大但不复杂,中间件就redis和rabbitmq。现在秋招面试,反问面试官说实习都没项目复杂咋办。😢😢
准备笔试的西红柿很讨...:
跟我一样啊哥,你是怎么解决的
点赞
评论
收藏
分享
09-17 16:50
西南交通大学 建模仿真工程师
第一个offer
#秋招的第一个offer,大家都拿到了吗
姜大宝131411:
恭喜ing
秋招的嫡长offer
点赞
评论
收藏
分享
10-10 14:12
已编辑
中国科学院高能物理研究所 FPGA工程师
#经纬恒润 二面
投递北京经纬恒润科技股份有限公司等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
从摆烂到OC,嵌入式人的血泪史
4525
2
...
害,找工作哪有不上当的!
4476
3
...
找到靠谱的公司,少走些弯路
3368
4
...
双非秋招大厂time line参考
3186
5
...
最近面试回答不出来的题
2922
6
...
26国考公告出炉,放宽到38岁意味着什么
2910
7
...
末9四段大厂实习|秋招收尾结束
2836
8
...
牛牛求救🆘,不敢梭哈后端第二技能点怎么搭配
2343
9
...
京东官宣发布新车,会有新的HC吗?
2217
10
...
下一站回家
2150
创作者周榜
更多
正在热议
更多
#
找工作中的小确幸
#
10262次浏览
97人参与
#
秋招踩过的“雷”,希望你别再踩
#
19522次浏览
221人参与
#
爱玛科技集团求职进展汇总
#
30100次浏览
209人参与
#
面包vs爱情,怎么选?
#
16983次浏览
187人参与
#
实习在多还是在精
#
3044次浏览
44人参与
#
发面经攒人品
#
2347605次浏览
32649人参与
#
反问环节如何提问
#
106932次浏览
2008人参与
#
实习下班不想学习,正常吗?
#
3422次浏览
48人参与
#
机械求职避坑tips
#
67303次浏览
449人参与
#
校招谈薪一定要知道的事
#
3218次浏览
53人参与
#
你觉得什么岗位会被AI替代
#
4744次浏览
83人参与
#
贝壳求职进展汇总
#
36255次浏览
202人参与
#
机械人值得去的小众企业
#
24349次浏览
54人参与
#
浪潮求职进展汇总
#
17890次浏览
137人参与
#
秋招结束之后的日子
#
88737次浏览
986人参与
#
实习最想跑路的瞬间
#
81963次浏览
524人参与
#
你做过哪些dirty work
#
19926次浏览
143人参与
#
选完offer后,你后悔学机械吗?
#
39422次浏览
243人参与
#
投格力的你,拿到offer了吗?
#
119217次浏览
686人参与
#
诺瓦星云求职进展汇总
#
219939次浏览
1715人参与
#
机械人,签完三方你在忙什么?
#
61727次浏览
235人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务