Linux面试高频(Linux系统移植)

Linux系统移植

1 Linux内核启动流程⭐⭐⭐⭐⭐

引导加载阶段

  • 计算机通电后,首先由 BIOS 或 UEFI 进行初始化,完成硬件自检等操作。
  • 找到可启动设备,读取其第一个扇区的 MBR,MBR 中的引导加载程序(如 GRUB)被加载到内存并运行。

内核初始化阶段

  • 引导加载程序将内核映像加载到内存后,内核开始初始化,首先进行体系结构相关的初始化,如设置 CPU 寄存器、内存映射等。
  • 接着进行内核的基本初始化,包括内存管理、进程调度、中断处理等子系统的初始化。

系统服务启动阶段

  • 内核初始化完成后,启动系统的第一个进程 init,init 进程会根据配置文件来启动其它系统服务和进程,如网络服务、文件系统服务等。
  • 系统进入运行状态,等待用户操作。

2 什么是bootloader?在嵌入式系统当中bootloader的作用是什么?⭐⭐⭐⭐

Bootloader 是一段在操作系统内核运行之前执行的小程序。在嵌入式系统中,它具有至关重要的作用:

  • 系统初始化:Bootloader 会对嵌入式系统中的硬件进行初始化,包括 CPU、内存、时钟、串口等设备,为后续内核的运行搭建好基础环境,确保硬件处于合适的工作状态。
  • 加载内核:从存储设备(如 Flash、SD 卡)中读取操作系统内核映像到内存指定位置,并将系统控制权交给内核,使内核能够开始执行,完成系统的启动。
  • 参数传递:在加载内核的过程中,Bootloader 可以向内核传递一些必要的参数,如硬件配置信息、内存布局等,帮助内核更好地适应硬件环境。
  • 系统调试与维护:提供交互界面,允许开发人员通过串口或网络等方式与系统进行交互,实现对系统的调试、更新内核和文件系统等操作。

3 为什么汇编语言对硬件平台有依赖性而C语言却可以不依赖硬件平台?⭐⭐⭐⭐

汇编语言对硬件平台有依赖性而 C 语言相对不依赖硬件平台,主要原因如下:

  • 指令集相关性:汇编语言是直接面向硬件的编程语言,它的每条指令都与特定硬件平台的指令集紧密相关,不同硬件平台的指令集和寄存器结构差异很大,所以汇编语言程序通常只能在特定的硬件平台上运行。而 C 语言是高级编程语言,它通过编译器将代码转换为目标硬件平台的机器码,编译器会根据不同平台的特点进行适配,开发者无需直接针对特定平台的指令集编程。
  • 内存管理差异:汇编语言需要程序员直接操作内存地址和寄存器来进行数据存储和读取,要清楚了解硬件的内存布局等细节。C 语言有相对统一的内存管理机制,通过指针等概念操作内存,编译器会负责将这些操作映射到具体硬件平台的内存管理方式上,降低了对硬件平台内存细节的依赖。

4 什么叫做交叉编译?⭐⭐⭐

交叉编译是指在一个平台上生成能在另一个不同平台上运行的目标代码的编译过程。比如,在 PC 机(x86 架构)上安装交叉编译工具链,然后用它来编译适用于 ARM 架构嵌入式设备的程序。

在嵌入式开发等场景中,交叉编译非常重要。由于目标设备(如嵌入式芯片)的资源有限,往往无法直接在上面进行编译工作,所以需要在性能较强的主机上进行编译。通过交叉编译,开发者可以利用主机的计算资源,针对不同架构和操作系统的目标设备生成可执行代码,方便将软件部署到各种目标平台上,而无需在每个目标设备上都搭建完整的开发环境。

5 Linux平台下的可执行文件是什么格式?⭐⭐⭐

Linux 平台下常见的可执行文件格式主要是 ELF 格式,以下是具体介绍:

ELF(Executable and Linking Format):是 Linux 系统中最常用的可执行文件格式,可用于可执行程序、共享库和目标文件等。它具有良好的可移植性和扩展性,支持多种硬件平台和操作系统。ELF 文件包含了多个段,如代码段、数据段、符号表等,这些段记录了程序的指令、数据以及与链接和运行相关的信息,系统的加载器能够根据 ELF 文件的结构和信息,将程序正确地加载到内存中并运行。

此外,在 Linux 早期还存在 a.out 格式,但因其局限性已逐渐被 ELF 格式取代。

6 什么叫做反汇编?⭐⭐⭐⭐

反汇编是将机器语言程序转换为汇编语言程序的过程,与汇编过程相反。具体来说,就是把计算机可执行的二进制机器码,按照一定的规则和算法,转换为人类可读的汇编语言指令形式。

在软件逆向工程、程序调试、漏洞分析等场景中,反汇编技术应用广泛。通过反汇编,分析人员可以查看程序的汇编代码,了解程序的执行逻辑、算法实现,检查是否存在安全漏洞或恶意代码等。例如,在调试程序时,反汇编可以帮助开发人员查看机器码对应的汇编指令,更深入地理解程序的运行情况,找出程序出现问题的原因。

7 简述nfs服务的概念与作用?⭐⭐⭐

NFS(Network File System)即网络文件系统,是一种基于网络的文件共享服务,允许网络中的计算机之间通过网络协议共享和访问彼此的文件系统资源。

NFS 的作用主要体现在以下几个方面:

  • 资源共享:可使多台计算机共享同一组文件和数据,不同主机上的用户能像访问本地文件一样访问远程 NFS 服务器上的文件,提高了数据的共享性和利用率。
  • 便于管理:系统管理员能在 NFS 服务器上集中管理和维护共享文件,如进行文件的更新、备份等操作,而无需在每台客户端机器上分别进行,降低了管理成本和复杂度。
  • 增强灵活性:客户端可根据自身需求随时挂载或卸载 NFS 共享目录,方便灵活地使用服务器端的文件资源,有利于构建灵活的分布式计算环境。

8 简述一个装有linux内核的开发板的启动过程?⭐⭐⭐⭐⭐

装有 Linux 内核的开发板的启动过程一般可分为以下几个阶段:

上电复位阶

  • 开发板上电后,硬件电路会产生复位信号,使 CPU 进入复位状态,从预设的地址开始执行代码,通常这个地址对应的是启动 ROM 中的代码。

Bootloader 阶段

  • 启动 ROM 中的代码会首先加载 Bootloader 到内存中。Bootloader 是在操作系统内核运行之前运行的一段小程序,它的主要作用是初始化硬件设备、建立内存空间映射图,为加载内核做好准备

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式/C++面试八股文 文章被收录于专栏

#承诺提供免费技术答疑# 本专栏主要是介绍嵌入式开发岗位相关知识和学习攻略。“C/C++软件开发岗位”也可以参考。 该专栏覆盖了嵌入式求职过程中99%常见面试题,详细讲解了嵌入式软件开发岗位、学习攻略、项目经验分享、面试心得,从技术面,HR面,主管面,谈薪一站式服务。订阅即赠送简历模板、内推机会,需要的同学点击我头像私信即可!

全部评论

相关推荐

09-15 18:01
已编辑
大连理工大学 后端工程师
回望过去一年,焦虑与痛苦常伴,感谢努力的自己,也算达成了阶段性的目标吧!腾讯-游戏安全-一面 8.22方向:后台开发整体印象:侧重面试经历与面试中技术亮点时长:50min状态:下午初试已过1. 自我介绍2. 把美团的实习经历详细介绍3. 高并发C端图片数据一般怎么存储?直接存到数据库吗?4. 你在实习中的难点,你在实习觉得很有技术点的?你觉得牛逼的5. 实习经历技术、业务拷打6. cookie、session的作用?7. cookie、session、token的区别8. 当前服务器CPU负载较高,通过什么命令查看进程的执行状态?哪一个进程占用的资源多?9. MySQL为什么查询速度慢?10. 慢SQL怎么排查,从哪些方面进行优化?11. 你用过其他语言吗?golang或python12. 你平时对于Linux命令熟悉吗?13. 你最近有在看源码?14. 这个开源库主要解决了什么问题了?算法题:斗地主给三个人发牌,每个人必须17张牌,剩下三张,如何保证每个人获得的牌是随机的,不能用api,要不就失去意义了反问:1. 组内业务两个业务第一个做游戏安全产品,杜绝制裁例如骂人,审查,开挂等行为,卖给其他游戏公司。第二个是做k8s游戏产品部署2. Base:深圳腾讯-游戏安全-二面 8.25没录上音,顺序不固定方向:后台开发整体印象:侧重场景题时长:1h状态:无动静非技术问题:1. 聊天,个人情况、组内情况2. 学校、个人规划什么的3. 问了一下腾讯分日常或暑期吗开始面试:1. 自我介绍2. 讲一下实习经历、实习的重点、难点3. 延伸实习经历、问一些问题等有点忘记了4. final关键字5. Redis的AOF、RDB6. ZSet 底层数据结构7. 高并发、高性能、高可用相关系统架构8. IO 多路复用是如何实现的9. 讲一下如何构建一个高性能的后端架构10. 实现限流的方式有哪些11.  concurrenthashmap 的底层如何实现的?如何保证并发安全?12. 我现在有一个目录,那目录下面有一些子目录和嵌套子目录文件之类的,然后我想找到这个目录下面所有的.Java 文件,然后删除这些.java。这个用 linux 命令怎么做呢?13. MySQL的存储引擎相关14. SQL执行慢怎么分析15. 我希望你去开发应用,实现一个目录传输的功能,传输目录及其对应的文件,就比如说把这个目录的整体的结构和内容包括文件,然后整体传输到服务器上。你怎么去设计这个目录传输的功能来保证这个传输的正确性和传输的效率?16. RPC相关八股,有些忘记了17. Kafka分区等八股18. 给不熟悉计算机的人讲解下计算机网络中的拥塞控制、流量控制19. 有项目部署的经验吗?20. 有一些没有记住,根据实习问的问题也挺多算法题:无反问:1. 组内业务两个业务第一个做游戏安全产品,杜绝制裁例如骂人,审查,开挂等行为,卖给其他游戏公司。第二个是做k8s游戏产品部署
JamesGosli...:太强了
点赞 评论 收藏
分享
评论
3
23
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务