嵌入式面试高频(Linux)
Linux
1 Linux介绍⭐⭐⭐⭐
Linux是一款自由、开放源代码的操作系统内核。它能够运行在各种计算机硬件上,例如个人电脑、移动设备、数据中心的服务器、超级计算机等。Linux常常与GNU工具套件结合使用,从而形成了GNU/Linux操作系统。以下是Linux包括的部分内容:
- 操作系统内核:Linux系统的核心部分,是操作系统的核心控制程序,负责系统的调度、管理、内存管理、文件系统和驱动程序等。
- 命令行界面:Linux提供了基于命令行界面(CLI)的操作环境,用户可以通过命令行执行各种指令,操作系统。
- 应用程序:Linux包含了很多应用程序,例如OpenOffice、火狐浏览器、VLC媒体播放器、GIMP图像处理软件等,满足用户的基本使用需求。
- Shell:在Linux中,Shell是与操作系统内核进行交互的一种程序,用户可以通过Shell执行操作系统提供的各种功能,比如文件管理、程序运行等。
- 文件系统:Linux支持各种文件系统格式,可以访问、读取和管理不同的文件系统,例如:ext4、NTFS、FAT32等。
- 网络支持:Linux可以连接到各种网络设备,通过互联网访问远程机器、文件共享、远程登录等功能。
- 开发工具:Linux还提供了开发工具,可以编写和编译各种编程语言的应用程序,例如:C语言、C++、Python、Java、Go等。
2 BootLoader介绍及启动流程⭐⭐⭐⭐⭐
BootLoader是计算机系统中用于加载操作系统的程序,也称为引导程序或启动管理器。当计算机启动时,主板上的BIOS或UEFI(统一的固件接口)程序会加载BootLoader,然后由BootLoader负责加载操作系统,并把控制权交给操作系统。
BootLoader的启动流程如下:
- 当计算机启动时,BIOS或UEFI程序首先会检测内存和所有的外部设备,确保它们都正常工作。
- 接下来BIOS或UEFI会查找可引导的设备,如硬盘、U盘、光盘等,并从它们中找到一个可引导的设备。
- 然后BIOS或UEFI会加载BootLoader到内存中,并跳转到BootLoader程序的入口点位置,让BootLoader接管计算机的控制权。
- BootLoader会在内存中初始化硬件设备,并加载操作系统的内核到内存中。在加载内核之前,BootLoader会检查系统的各种设置、配置、分区信息等,以确保操作系统可以被正确地加载。
- 当BootLoader加载操作系统内核到内存中,它将把控制权交给操作系统内核的入口点。此时,操作系统就可以开始运行了,并且BootLoader的任务也就完成了。
bootloader作用 |
说明 |
硬件初始化 |
检测和初始化计算机或嵌入式系统的硬件设备,如处理器、内存、外部设备等。 |
加载操作系统 |
从存储设备中读取操作系统的引导程序,并将其加载到内存中。 |
启动操作系统 |
将控制权转移到操作系统的引导程序,以启动操作系统的执行。 |
提供启动选项 |
提供用户选择不同操作系统或不同启动模式的选项,支持多系统启动等。 |
提供固件升级 |
支持固件的更新和升级,以提供新功能、修复漏洞或提高系统性能。 |
处理错误检测 |
在启动过程中检测和处理硬件或软件错误,提供错误消息和故障排除功能。 |
支持设备引导 |
支持从不同的存储设备(如硬盘、闪存、网络等)引导操作系统。 |
自定义配置 |
允许用户自定义启动配置、参数和引导顺序,以满足特定需求。 |
3 BootLoader的两种模式⭐⭐⭐⭐
1 启动加载模式
启动加载模式又叫自主模式,指Bootloader从目标及某个固件存储设备上将操作系统加载到RAM运行,整个过程没有用户介入,是Bootloader的正常工作模式
2 下载模式
目标机上的Bootloader将通过串口或网络或USB等其它通信手段从主机下载文件,如内核镜像,根文件系统镜像等,从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后被Bootloader写到目标机的Flash内的固态存储设备中。这种模式通常在第一 次安装内核和根文件系统时使用。系统更新也会使用这种工作模式。
4 BootLoader启动的两个阶段⭐⭐⭐⭐⭐
BootLoader的stage1通常包括以下步骤:
硬件设备初始化
为加载BootLoader的stage2准备RAM空间。
复制BootLoader的stage2到R
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
该专栏面向嵌入式开发工程师、C++开发工程师,包括C语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!