• 软中断和硬中断的区别 ?


    目录

      硬中断
      1.由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包
      的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
      2. 硬中断是外部设备对CPU的中断;
      3. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。
      4. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。
      5. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。
      6. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。

      软中断
      1.通常是硬中断服务程序对内核的中断;
      2.为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
      3. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。
      4. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。
      5. 软中断仅与内核相联系。而内核主要负责对需要运行的任何其他的进程进行调度。一些内核允许设备驱动的一些部分存在于用户空间,并且当需要的时候内核也会调度这个进程去运行。
      6. 软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。有一个特殊的软中断是Yield调用,它的作用是请求内核调度器去查看是否有一些其他的进程可以运行。

      差别
      ①硬中断是由外部事件引起的因此具有随机性和突发性;
      软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。
      ②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要);
      软中断的中断响应周期,CPU不需发中断回合信号。
      ③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);
      软中断的中断号由指令直接给出,无需使用中断控制器。
      ④硬中断是可屏蔽的(NMI硬中断不可屏蔽);
      软中断不可屏蔽。

      CopyRight @Widic 2017 Mail:widicjane@163.com
    • 相关阅读:
      Apache Kafka:下一代分布式消息系统
      深入理解Java之线程池
      JAVA中线程同步的方法(7种)汇总
      String、StringBuffer与StringBuilder之间区别
      Java中是否可以继承String类,为什么
      JAVA4种线程池的使用
      一分钟教你知道乐观锁和悲观锁的区别
      java常见面试题及答案 11-20(JVM)
      springmvc中的页面解析器ViewResolver不起作用,变量输出字符串的解决方案
      SpringMVC默认欢迎页面的问题
    • 原文地址:https://www.cnblogs.com/widic/p/7392485.html
    Copyright © 2020-2023  润新知