相信大家都知道非常著名的两个名词:异常和中断,不过,你真的理解这两个名词在说什么吗?它们之间有什么区别呢?

      1.中断

      大家都知道,当我们在敲击键盘的同时就会产生中断,当硬盘读写完数据之后也会产生中断,所以,我们需要知道,中断是由硬件设备产生的,而它们从物理上说就是电信号,之后,它们通过中断控制器发送给CPU,接着CPU判断收到的中断来自于哪个硬件设备(这定义在内核中),最后,由CPU发送给内核,有内核处理中断。下面这张图显示了中断处理的流程:



      2.异常

      我们在学习《计算机组成原理》的时候会知道两个概念,CPU处理程序的时候一旦程序不在内存中,会产生缺页异常;当运行除法程序时,当除数为0时,又会产生除0异常。所以,大家也需要记住的是,异常是由CPU产生的,同时,它会发送给内核,要求内核处理这些异常,下面这张图显示了异常处理的流程:


      3.异同

      相同点:

    1> 最后都是由CPU发送给内核,由内核去处理

    2> 处理程序的流程设计上是相似的

      不同点:

    1> 产生源不相同,异常是由CPU产生的,而中断是由硬件设备产生的

    2> 内核需要根据是异常还是中断调用不同的处理程序  

    3> 中断不是时钟同步的,这意味着中断可能随时到来;异常由于是CPU产生的,所以,它是时钟同步的

    4> 当处理中断时,处于中断上下文中;处理异常时,处于进程上下文中

Linux内核--异常和中断的区别相关推荐

  1. Linux内核深入理解中断和异常(1)

    Linux内核深入理解中断和异常(1) rtoax 2021年3月 1. 中断介绍 内核中第一个子系统是中断(interrupts). 1.1. 什么是中断? 我们已经在这本书的很多地方听到过 中断( ...

  2. Linux内核深入理解中断和异常(8):串口驱动程序

    Linux内核深入理解中断和异常(8):串口驱动程序 rtoax 2021年3月 /*** start_kernel()->setup_arch()->idt_setup_early_tr ...

  3. Linux内核深入理解中断和异常(7):中断下半部:Softirq, Tasklets and Workqueues

    Linux内核深入理解中断和异常(7):中断下半部:Softirq, Tasklets and Workqueues rtoax 2021年3月 0x00-0x1f architecture-defi ...

  4. Linux内核深入理解中断和异常(6):IRQs的非早期初始化

    Linux内核深入理解中断和异常(6):IRQs的非早期初始化 rtoax 2021年3月 0x00-0x1f architecture-defined exceptions and interrup ...

  5. Linux内核深入理解中断和异常(5):外部中断

    Linux内核深入理解中断和异常(5):外部中断 rtoax 2021年3月 1. 外部中断简介 外部中断包括:键盘,鼠标,打印机等. 外部中断包括: I/O interrupts; IO中断 Tim ...

  6. Linux内核深入理解中断和异常(3):异常处理的实现(X86_TRAP_xx)

    Linux内核深入理解中断和异常(3):异常处理的实现(X86_TRAP_xx) rtoax 2021年3月 /*** start_kernel()->setup_arch()->idt_ ...

  7. Linux内核深入理解中断和异常(2):初步中断处理-中断加载

    Linux内核深入理解中断和异常(2):初步中断处理-中断加载 rtoax 2021年3月 1. 总体概览 关于idt_table结构的填充,在5.10.13中流程为: idt_setup_early ...

  8. Linux内核深入理解中断和异常(4):不可屏蔽中断NMI、浮点异常和SIMD

    Linux内核深入理解中断和异常(4):不可屏蔽中断NMI.浮点异常和SIMD rtoax 2021年3月 本文介绍一下几种trap: //* External hardware asserts (外 ...

  9. Linux内核活动之中断1

    Linux内核活动之中断1 1. 中断介绍 1.1 中断类型 1.2 中断共享 1.3 硬件IRQ 1.4 处理中断 1.4.1 进入和退出任务 1.4.2 中断处理程序 1.5 数据结构 1.5.1 ...

最新文章

  1. Java解析HTML
  2. python3中zip()函数的用法
  3. python面向对象基础语言进阶
  4. php需要什么技能,PHP初学者必备的技能
  5. Martin Odersky Scala编程公开课 第二周作业
  6. linux aio拷贝文件,Linux通过AIO进行异步读文件
  7. java中容器里的增删改查_Java工程师的第八天——简单的增删改查的应用
  8. 看上90亿的当当,海航的眼光是极好的
  9. loadrunner脚本中关于httpCode401特殊情况
  10. 【转】契约测试的必要性
  11. Listener监听器已经Listener的小案例
  12. 客户价值分析(聚类)
  13. ubuntu16启用daytime服务
  14. 《Python与硬件项目案例》— 基于Python与指纹模块AS608的指纹识别签到考勤系统(下篇)(期末大作业、课程设计、毕业设计、结课项目)
  15. Form--Form表单
  16. Java链表的书_JAVA实现双向链表的增删功能,完整代码package linked;class LinkedTable{ }public class Linke...
  17. 搭建一个点歌QQ机器人,另外还能看美女
  18. 从股票市场选择配对的股票:共同趋势模型与套利定价理论
  19. Kali Linux渗透测试——信息收集
  20. 编程基础:计算机相关知识

热门文章

  1. selenium操作浏览器cookie方法
  2. 优化SqlServer--数据压缩
  3. Linux 下 PHP 5.2.x 连接 SQL Server 数据库 FreeTDS 配置笔记
  4. Silverlight+WCF 新手实例 象棋 WCF通讯跨域(十五)
  5. Redis 系列之一
  6. apache开启 gzip 压缩
  7. Android Activity启动模式,回退栈管理!
  8. linux内核中send与recv函数详解
  9. Mac普通用户修改了/etc/sudoers文件的解决办法
  10. linux 空文件 sed 不能写入数据