持续更新版本 嵌入式工程师常见面试题(12)


6、、内核、根文件的关系
、内核和根文件系统是操作系统启动的三个重要组成部分,它们之间的关系如下:
:是操作系统启动时首先执行的程序,它的作用是加载内核并将控制权交给内核 。通过读取内核映像文件,将其加载到内存中,然后跳转到内核的入口地址,使内核开始执行 。
内核:内核是操作系统的核心部分,它负责管理系统的进程、内存、设备驱动等核心功能 。在内核启动后,它会检查文件系统并挂载根文件系统到系统中 。
根文件系统:根文件系统是操作系统的文件系统,它包含了操作系统的基本文件和目录 。在内核启动后,它会检查文件系统并挂载根文件系统到系统中,使应用程序能够访问和操作这些文件和目录 。
在操作系统的启动过程中,会加载内核并将控制权交给内核,内核会初始化系统的各个组件,然后检查和挂载根文件系统到系统中 。这样,应用程序就可以通过根文件系统访问和操作文件和目录 。因此,、内核和根文件系统之间的关系是相互依存、缺一不可的 。
7、启动过程
推荐博客地址:
8、Linux下检查内存状态的命令
在Linux下,可以使用以下命令来检查内存状态:
free命令:可以显示系统内存状态,包括物理内存、已使用的内存、空闲内存、缓存等 。
命令:可以显示虚拟内存状态,包括内存使用情况、缓存、进程状态等 。
top命令:可以实时查看系统内存使用情况,包括内存使用率、进程状态、CPU使用率等 。
htop命令:可以以更为详细的格式显示系统内存使用情况,包括每个进程的内存使用情况、CPU使用率等 。
sar命令:可以生成系统性能报告,包括内存使用情况、CPU使用率、磁盘使用情况等 。
dstat命令:可以显示系统运行状态,包括内存使用情况、CPU使用率、磁盘使用情况等 。
这些命令可以帮助用户实时查看系统内存状态,并对系统性能进行监控和分析 。
9、大小端的区别以及各自的优点,哪种时候用 。(判断大小端的三种方式)
大小端()是指计算机在存储和表示数据时,对于多字节的数据类型(如整数、长整数等),以不同的字节顺序进行存储和表示 。
大端(Big-)表示将数据的高位字节存储在低地址处,而低位字节存储在高地址处 。
小端(-)表示将数据的低位字节存储在低地址处,而高位字节存储在高地址处 。
以下是一些关于大小端的优点和适用场景:
优点:
适用场景:
判断大小端的方式有以下三种:
【持续更新版本嵌入式工程师常见面试题】编写一个多字节的数据类型(例如int、long、float或),并将其存储到内存中 。然后,读取内存中的数据,并逐字节地检查它们的值,以确定字节顺序 。使用C标准库中的函数,例如htonl(主机字节序)和ntohl(网络字节序),将一个整数从主机字节序转换为网络字节序,或将网络字节序转换为主机字节序 。通过比较转换前后的值来确定字节顺序 。读取和处理操作系统提供的系统寄存器或寄存器映射,以确定字节顺序 。不同的处理器架构可能有不同的方式来读取和处理这些寄存器 。
需要注意的是,不同的处理器架构可能具有不同的字节顺序,因此在进行跨平台通信或处理不同架构的数据时,应该特别注意字节顺序的问题 。
10、一个程序从开始运行到结束的完整过程(四个过程)
1、编译预处理:处理伪指令
1> 头文件包含
2> 宏定义
3> 条件编译 #if #endif
gcc -E xxx.c -o xxx.i
2、编译:把预处理之后的文件进行语法分析,生成汇编代码