嵌入式软件工程师面试题(二)

✅作者简介:大家好我是:嵌入式基地,是一名嵌入式工程师,希望一起努力,一起进步!
📃个人主页:嵌入式基地
🔥系列专栏:嵌入式习题专栏

1、自旋锁和信号量在互斥使用时需要注意什么?在中断服务程序里面的互斥是使用自旋锁还是信号量?

自旋锁会一直自旋等待,不会休眠;而信号量是等待信号来唤醒进程,进程会睡眠。
使用时注意希望长等待不吃系统资源时使用信号量,反过来短期的等待使用自旋锁,但会增加系统开销。
中断中不可以使用信号量,因为中断不能睡眠。

2、异步IO和同步IO的区别

同步和异步来自于Linux内核态和用户态的切换,通常IO包括网络IO和来自设备/文件的IO,完成IO操作分两步,发起请求和执行。 当请求被阻塞时,为同步IO,否则为异步IO。
同步IO进程需要等待IO执行完毕。而异步IO在IO执行时,进程可以继续执行,不陷入阻塞。

3、请你讲一讲Linux中断的原理和开发方法?

Linux中断处理过程分为两部分:
上半部:上半部就是中断处理函数,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。
下半部:如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部去执行,这样中断处理函数就会快进快出。
那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。剩下的所有工作都可以放到下半部去执行,比如在上半部将数据拷贝到内存中,关于数据的具体处理就可以放到下半部去执行。
一般来说,不希望被其他中断打断、对时间敏感、和硬件有关的任务建议放在中断上半部。

4、说一说进程的几个状态及转换条件?

进程状态包括就绪态,运行态,阻塞态,除此以外还包括新建态和退出态。
进程首次创建并未参与调度为新建态 从新建态做好准备(初始化成功)等待调度为就绪态 内核调度此进程时,此进程从就绪态转换为运行态 进程执行完内核分配的时间片后,从运行态再次回到就绪态 进程执行时如果等待其他条件满足后才能执行,则进程从运行态转换为阻塞态 阻塞的进程等待的条件满足后,进程重新进入就绪态 进程终止或者异常,进程将进入退出态

5、static修饰局部变量和全局变量会有什么效果

静态全局变量:具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被 static 关键字修饰过的变量具有文件作用域。
静态局部变量:具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。

6、堆和栈的区别

栈由系统分配,堆由程序员控制,例如C/C++的malloc函数 栈的大小较小,有默认上限,堆理论上可以申请整个虚拟内存的大小 栈向下增长,地址由高到低,堆向上增长,地址从低到高 栈的分配效率较高,保证函数执行跳转的效率,堆的分配更为复杂,容易产生碎片,需要回收 栈存放的内容,函数返回地址、相关参数、局部变量和寄存器内容等;
堆,一般情况堆顶使用一个字节的空间来存放堆的大小,而堆中具体存放内容是由程序员来填充的。

7、简述gcc编译过程

预处理、编译、汇编和链接,一个hello.c的c语言程序如下。

  • 预处理阶段:hello.c–>hello.i
  • 编译阶段:hello.i–>hello.s
  • 汇编阶段:hello.s–>hello.o
  • 链接阶段:hello.o–>hello

8、线程与进程的区别

进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;
线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发
线程是操作系统可识别的最小执行和调度单位。
一个线程只能属于一个进程,而一个进程可以有多个线程 进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存
进程是资源分配的最小单位,线程是CPU调度的最小单位
进程切换的开销也远大于线程切换的开销。
进程编程调试简单可靠性高,但是创建销毁开销大;线程正相反,开销小,切换速度快,但是编程调试相对复杂。

9、野指针出现情况、怎么解决?

1.指针变量声明时没有被初始化,可以在指针声明时初始化,可以是具体的地址值,也可让它指向NULL。
2.指针 p 被 free 或者 delete 之后,没有置为 NULL。指针指向的内存空间被释放后指针应该指向NULL。
3.指针操作超越了变量的作用范围,在变量的作用域结束前释放掉变量的地址空间并且让指针指向NULL。

10、dma有什么用

直接存储器存取(Direct Memory Access,DMA)可以让某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道 CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。它允许不同速度的硬件装置来沟通,而不需要依于 CPU的大量中断请求。大大提高了访问效率,减少访问时间,降低CPU资源的消耗。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值