文档章节

硬中断与软中断的区别!

o
 osc_z1hvg4cu
发布于 2018/04/24 01:29
字数 1112
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

硬中断:

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)中,以至于之后可以返回继续运行。这种中断可以停止一个正在运行的进程;可以停止正处理另一个中断的内核代码;或者可以停止空闲进程。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

将PHP对象转换为关联数组 - Convert a PHP object to an associative array

问题: I'm integrating an API to my website which works with data stored in objects while my code is written using arrays. 我正在将API集成到我的网站,该网站可以使用数组编写代码时......

fyin1314
35分钟前
10
0
mysql中很多表都设计由记录创建时间和更新时间

mysql中很多表都设计由记录创建时间和更新时间 ALTER TABLE `user`MODIFY COLUMN create_time datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'; ALTER TABLE `user`M......

独钓渔
46分钟前
26
0
第七章第四题(分析成绩)(Analyze scores) - 编程练习题答案

编写一个程序,读人个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输人一个负数表示输入的结束。假设最高分为100。 Write a program that rea...

许唯宇
53分钟前
21
0
在JavaScript控制台中包含jQuery - Include jQuery in the JavaScript Console

问题: Is there an easy way to include jQuery in the Chrome JavaScript console for sites that do not use it? 对于不使用jQuery的网站,是否有简便的方法将jQuery包含在Chrome JavaSc......

富含淀粉
今天
11
0
内容发布系统开发

内容发布系统,使用PHP开发的特多,而java开发的极少,精品更是少之又少。由于cms内容发布系统,占用资源少,开发周期短。所以java开发内容系统存在几大劣势:比较笨重,占用服务器资源多(购...

Dr_啵
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部