牛客高级系列专栏:





简介

本人2020年本硕毕业于广东工业大学:嵌入式许乔丹,牛客高级专栏作者,牛客大学讲师,本科阶段搞了4年单片机、曾参加全国大学生恩智浦汽车竞赛,发表4个硬件专利。研究生阶段找了嵌入式linux的实习,毕业后拿到珠海格力,云从科技,CVTE,小米,美的,华为的嵌入式offer,签约CVTE嵌入式岗位。

在CVTE先后做过嵌入式Linux开发和安卓系统开发,参与过TV板卡、显示屏板卡、智能家居板卡、希沃网课学习机的开发。欢迎交流嵌入式或者安卓哈!

正文开始⬇️

第五章Linux操作系统常见面试题 (本文讲5.2.1-5.2.4)

5.1 Linux内核相关 

5.1.1 Linux内核的组成⭐⭐

5.1.2用户空间与内核通信方式有哪些?⭐⭐⭐⭐⭐

5.1.3系统调用read()/write(),内核具体做了哪些事情⭐⭐

5.1.4系统调用的作用⭐⭐⭐⭐⭐

5.1.5内核态,用户态的区别⭐⭐⭐⭐⭐

5.1.6 bootloader内核 根文件的关系⭐⭐⭐⭐

5.1.7 Bootloader多数有两个阶段的启动过程:⭐⭐⭐

5.1.8 linux的内核是由bootloader装载到内存中的?⭐⭐⭐

5.1.9为什么需要BootLoader⭐⭐⭐⭐

5.1.10 Linux内核同步方式总结⭐⭐⭐⭐

5.1.11为什么自旋锁不能睡眠 而在拥有信号量时就可以?⭐⭐⭐⭐

5.1.12 linux下检查内存状态的命令⭐⭐⭐

5.2 其他操作系统常见面试题

5.2.1大小端的区别以及各自的优点,哪种时候用⭐⭐⭐⭐⭐

5.2.2 一个程序从开始运行到结束的完整过程(四个过程)⭐⭐⭐⭐⭐

5.2.3什么是堆,栈,内存泄漏和内存溢出?⭐⭐⭐⭐

5.2.4堆和栈的区别⭐⭐⭐⭐⭐

5.2.5死锁的原因、条件 创建一个死锁,以及如何预防⭐⭐⭐⭐⭐

5.2.6硬链接与软链接的区别;⭐⭐⭐⭐⭐

5.2.7虚拟内存,虚拟地址与物理地址的转换⭐⭐⭐⭐

5.2.8计算机中,32bit与64bit有什么区别⭐⭐⭐

5.2.9中断和异常的区别⭐⭐⭐⭐⭐

5.2.10中断怎么发生,中断处理大概流程⭐⭐⭐⭐

5.2.11  Linux 操作系统挂起、休眠、关机相关命令⭐⭐

5.2.12数据库为什么要建立索引,以及索引的缺点⭐⭐

5.2.1大小端的区别以及各自的优点,哪种时候用?

解析:

大端优点:符号位在所表示的数据的内容的第一个字节中,便于快速判断数据的正负和大小

小端优点:低地址放低字节,所以在强制转换时不需要调整字节的内容。而且CPU做数值运算时从内存中依次从低到高取数据进行运算直到最后刷新最高位的符号位,这样运算方式会更高效。

以下是牛客网刷到的一个题目,觉得对理解大小端有帮助,就保存了下来,题目如下:

1)如果按照大端模式存储:从低地址到高地址:20 15 08 10 

  存放高字节放低地址,输出从低地址到高地址:20 15 08 10 so 结果就是 2015  810   

2)如果按照小端模式存储:从低地址到高地址:10 08 15 20  

   存放高字节放高地址,输出从高地址到低地址:08 10 20 15  so 结果就是 810 2015 

 Ps:

1)Interl x86系列芯片使用小端存储模式,ARM的芯片默认小端,但可以切换到大端;

2)网络上普遍采用大端模式,使用大端的CPU: power pc 、DSP … …

3)大小端是由CPU架构决定的, 不是软件决定!!!

5.2.2 一个程序从开始运行到结束的完整过程(四个过程)⭐⭐⭐⭐⭐

一个C语言程序到执行完文件的全过程,在linux里面用gcc编译的程序时,编译的过程可以细分为四个阶段:

1)预处理(Pre-Processing)

2)编译(Compiling)

3)汇编(Assembling)

4)链接(Linking)

源程序到可执行程序的过程。在这个过程中,会发生如下的变化:

.c文件生成.obj文件的过程,称为编译,.