摘自:https://blog.51cto.com/noican/1361087

硬中断:

1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。

2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU(也有一种特殊的情况,就是在大型主机上是有硬件通道的,它可以在没有主CPU的支持下,可以同时处理多个中断。)。

3. 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身也可以被其他的硬中断中断。

4. 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程来运行。它的存在是为了让调度代码(或称为调度器)可以调度多任务。

软中断:

1. 软中断的处理非常像硬中断。然而,它们仅仅是由当前正在运行的进程所产生的。

2. 通常,软中断是一些对I/O的请求。这些请求会调用内核中可以调度I/O发生的程序。对于某些设备,I/O请求需要被立即处理,而磁盘I/O请求通常可以排队并且可以稍后处理。根据I/O模型的不同,进程或许会被挂起直到I/O完成,此时内核调度器就会选择另一个进程去运行。I/O可以在进程之间产生并且调度过程通常和磁盘I/O的方式是相同。

3. 软中断仅与内核相联系。而内核主要负责对需要运行的任何其他的进程进行调度。一些内核允许设备驱动的一些部分存在于用户空间,并且当需要的时候内核也会调度这个进程去运行。

4. 软中断并不会直接中断CPU。也只有当前正在运行的代码(或进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情(通常为I/O)的请求。有一个特殊的软中断是Yield调用,它的作用是请求内核调度器去查看是否有一些其他的进程可以运行。

问题解答:

1. 问:对于软中断,I/O操作是否是由内核中的I/O设备驱动程序完成?

答:对于I/O请求,内核会将这项工作分派给合适的内核驱动程序,这个程序会对I/O进行队列化,以可以稍后处理(通常是磁盘I/O),或如果可能可以立即执行它。通常,当对硬中断进行回应的时候,这个队列会被驱动所处理。当一个I/O请求完成的时候,下一个在队列中的I/O请求就会发送到这个设备上。

2. 问:软中断所经过的操作流程是比硬中断的少吗?换句话说,对于软中断就是:进程 ->内核中的设备驱动程序;对于硬中断:硬件->CPU->内核中的设备驱动程序?

答:是的,软中断比硬中断少了一个硬件发送信号的步骤。产生软中断的进程一定是当前正在运行的进程,因此它们不会中断CPU。但是它们会中断调用代码的流程。

如果硬件需要CPU去做一些事情,那么这个硬件会使CPU中断当前正在运行的代码。而后CPU会将当前正在运行进程的当前状态放到堆栈(stack)中,以至于之后可以返回继续运行。这种中断可以停止一个正在运行的进程;可以停止正处理另一个中断的内核代码;或者可以停止空闲进程。

硬中断与软中断的区别相关推荐

  1. 硬中断与软中断的区别!

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  2. 硬中断与软中断的区别!!!

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  3. 硬中断、软中断和信号

    硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等.每个设备或设备集都有它自己的IRQ(中断请求).基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核 ...

  4. Linux 硬中断和软中断

    微信公众号:嵌入式Linux中文站 Table of Contents 概述 (1) 硬中断 (2) 软中断 (3) 中断嵌套 (4) 软中断指令 (5)硬中断和软中断的区别 开关 (1) 硬中断的开 ...

  5. 硬中断、软中断、中断上半部、中断下半部

    中断从外设到内核的DataPath 概念 从物理学的角度看,中断是一种电信号,由硬件设备生成,并直接送入中断控制器的输入引脚上. 然后再由中断控制器向处理器发送相应的信号.处理器一经检测到此信号,便中 ...

  6. 硬件中断和软中断的区别

    中断 中断指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程.即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情 ...

  7. *33.硬中断和软中断是什么?区别?

    1.硬中断-硬件中断.像磁盘,网卡,键盘,时钟等 2.软中断-软件中断.进程产生. 区别:(产生机制.处理顺序.可否屏蔽.中断信号由来) 1.软中断的发生的时间是由程序控制的,硬中断的发生的时间是随机 ...

  8. linux内核网络收包过程—硬中断与软中断

    目录 硬中断处理 软中断处理 数据通过网络发送过来 硬中断处理 数据帧首先到达网卡的接收队列,分配RingBuffer DMA把数据搬运到网卡关联的内存 网卡向CPU发起硬中断,通知CPU有数据 调用 ...

  9. [Linux内核]软中断与硬中断

    转自:http://blog.csdn.net/zhangskd/article/details/21992933 本文主要内容:硬中断 / 软中断的原理和实现 内核版本:2.6.37 Author: ...

最新文章

  1. 卧槽!成就了Java,开发框架排第一,你还是不够了解它!
  2. 为安卓应用添加手势密码功能,遇到的一些问题以及解决方法
  3. java localhosty_GitHub - yxxxd/sorryJava: 给动图加字幕的sorry项目的java版本
  4. vb.net限制软件使用次数_新增投屏及倍数播放,这款软件iOSAndroid全都有,影视神器,抓紧体验...
  5. 微信语音怎么转发给别人听_微信分付怎么邀请别人 微信分付如何才能被邀请开通...
  6. hibernate dialect 方言 sqlserver2000 的方言
  7. 深入了解ASP.NET运行内幕
  8. c语言编写的操作系统不会用到类,因为当时c++还没出现
  9. 程序员应具备的素质[转帖]
  10. ARM开发6.3.2 基础实训( 2 ) 单个数码 LED 的显示输出系统设计( 2 )--LPC21XX
  11. 未来人在数据分析中的角色转变
  12. c51串行通信汇编语言,51单片机双机串行通信汇编语言程序+Proteus仿真
  13. js使用百度离线地图
  14. 如何在word中找到标准偏差σ、α、β、δ等数学公式符号和物理公式符号
  15. 奥尼捷多功能证件包护照包证件夹男士卡包女士必备 A101 黑色【图片 价格 品牌 报价】-京东商城...
  16. 二、C++反作弊对抗实战 (进阶篇 —— 4.遍历进程模块(暴力扫描整个内存找出被断链的))
  17. 2019成长复盘2020成长规划
  18. 华为p8刷linux系统,普通安卓手机如何刷鸿蒙系统?
  19. 常用测试网络联通方法
  20. 基于原子势函数及人工蜂群算法进行形状匹配优化(Matlab代码实现)

热门文章

  1. sa蛋OpenCV参数说明
  2. 机器学习非监督分类之主成分分析(PCA)
  3. iOS外传——偷懒之路(1)
  4. 【外挂】API函数列表【链接】
  5. 关于我拍网的一次使用感受
  6. centos8 配置 dns_centos 8 集群Linux环境搭建 - 凭栏莫听雨落
  7. 2021-08-16Zynq linux系统下的AXI DMA驱动与应用程序简单Demo实现
  8. 超级兔子魔法设置 V7.99 正式版
  9. STM32下推式磁悬浮装置(一)原理分析与元件清单
  10. 商业模式画布、精益画布