嵌入式面试高频(异常和中断)

异常和中断

1 异常和中断有何区别⭐⭐⭐⭐⭐

异常和中断都是计算机中处理异常情况的机制,但它们处理的异常情况和处理方式有所不同。

中断是一种硬件中断,通常由外部设备(比如键盘、鼠标、网卡等)或者处理器内部的计时器或者错误检测电路产生。当中断发生时,处理器会停止当前任务并转去执行中断服务程序,中断服务程序会对中断进行响应并进行相应的处理,处理完成后再回到原来的任务继续执行。中断是一种异步事件,因为它的发生是随机的

异常是一种内部事件,通常由程序执行错误、内存访问错误、除数为0等情况下发生。异常会让程序进入一种失控状态,处理器不会像中断处理那样立即停止当前任务,而是会尝试处理异常并尝试恢复程序的执行,如果处理失败则会进入系统的崩溃或重启状态。异常是一种同步的事件,因为它的发生是在程序执行时发生的

总的来说,中断是由外部事件触发,处理完中断后可以继续运行原来的程序;而异常是由程序内部错误触发,处理异常后可能需要中止程序并进行相应的修复。

2 DMA⭐⭐⭐⭐⭐

DMA全称是Direct Memory Access,即直接内存访问,是指不通过CPU而是通过DMA控制器,将外设的数据直接传输到内存,或者将内存中的数据直接传输到外设。相比于由CPU完成数据传输,使用DMA可以显著提高数据传输的速度和效率

DMA的工作原理是:当外设需要将数据传输到内存或内存需要将数据传输到外设时,DMA控制器接管数据传输的操作,使用DMA寄存器中的地址指针和计数器等信息,与内存进行数据交换。CPU只需要设置好DMA的参数和启动DMA控制器即可,然后就可以把CPU的工作交给DMA控制器完成,从而解放CPU,使CPU可以去执行其他任务

DMA有以下几个优点:

  1. 减少了CPU的工作量: DMA可以在不与CPU进行干涉的情况下,直接从外设读取数据并传输到内存中,或者从内存中读取数据并将其直接传输到外设中。这相当于把CPU解放出来,减轻了CPU的工作负担,从而提高了系统的效率。
  2. 提高了数据传输速度:由于减少了CPU的干涉,将数据传输的任务交由DMA完成,使用DMA进行数据传输的速度比使用CPU快很多。
  3. 提高了系统可靠性: DMA可以保证数据传输的准确性,因为DMA在数据传输过程中不会出现因CPU占用率引起的传输数据的丢失、错位等情况。
  4. 提高了系统的可扩展性:DMA可以扩展CPU的数据总线,因此能够实现多个设备同时访问内存,从而提高了系统的可扩展性。

3 DMA和中断有何区别⭐⭐⭐⭐

DMA(直接内存访问)和中断是两种用于通过计算机系统提高性能和效率的技术。它们之间的主要区别是它们用于控制和管理计算机系统中不同的资源。

DMA是一种机制,它允许设备通过直接访问主存储器来传输数据,而不需要CPU的干预。这可以帮助释放CPU的资源,使其可以执行其他任务,同时提高数据传输速度。DMA通常用于高性能存储设备、网络接口卡等硬件设备的数据传输。

中断则是一种机制,它允许设备在低于CPU优先级的状态下通知CPU发生某个事件,例如数据准备好了、设备出现错误等。当这些事件发生时,中断控制。中断通常用于响应和处理用户的输入、外部设备发生的事件(如硬件错误等)等。

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

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

该专栏面向嵌入式开发工程师、C++开发工程师,包括C语言、C++,操作系统,ARM架构、RTOS、Linux基础、Linux驱动、Linux系统移植、计算机网络、数据结构与算法、数电基础、模电基础、5篇面试题目、HR面试常见问题汇总和嵌入式面试简历模板等文章。超全的嵌入式软件工程师面试题目和高频知识点总结! 另外,专栏分为两个部分,大家可以各取所好,为了有更好的阅读体验,后面会持续更新!!!

全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务