悟空学Linux专栏----第37篇
2015-07-14 10:14
399 查看
俗话说人怕出名,猪怕壮,八戒一直很低调,但是他现在又壮有出名。人气爆棚,但也为八戒带来了不少的麻烦,比如今天,明明是悟空的课,唐僧却硬是让八戒来讲。八戒打算给学生们讲软中断的执行,这是八戒最喜欢讲的一节课。
八戒:同学们,软中断的执行其实很简单,主要是通过一个“while”循环来执行,该循环搜寻32个软中断挂起的软中断,如果搜寻发现该软中断被挂起了,则执行该挂起的软中断的中断执行函数。
2号童鞋:老师,我记得悟空老师说过,软中断内部是可以继续触发软中断的,而软中断又只允许被中断打断,那么如果我系统中有很多软中断存在,不是系统中其他的进程就永远被挂起了吗?
八戒:其实,你想到的这个问题Linux的设计人员早就考虑到了,为了防止软中断占用系统太多的时间,Linux内核为每个处理器创建了一个内核线程,当系统出现大量的软中断的时候,系统就会将一部分的软中断交给这些线程来处理,从而保证了系统中各个线程能够运行。
2号童鞋:那么老师,如果系统将这些软中断交给其他的线程来处理,而线程是会被调度给打断的,那是不是说软中断的执行也可以被除了中断之外的调度程序给打断啊?
八戒:当然不是啦,软中断处理程序的线程是除了只能被中断打断,和自己主动放弃CPU之外,是不能被其他的任何进程给打断。
八戒:同学们,软中断的执行其实很简单,主要是通过一个“while”循环来执行,该循环搜寻32个软中断挂起的软中断,如果搜寻发现该软中断被挂起了,则执行该挂起的软中断的中断执行函数。
2号童鞋:老师,我记得悟空老师说过,软中断内部是可以继续触发软中断的,而软中断又只允许被中断打断,那么如果我系统中有很多软中断存在,不是系统中其他的进程就永远被挂起了吗?
八戒:其实,你想到的这个问题Linux的设计人员早就考虑到了,为了防止软中断占用系统太多的时间,Linux内核为每个处理器创建了一个内核线程,当系统出现大量的软中断的时候,系统就会将一部分的软中断交给这些线程来处理,从而保证了系统中各个线程能够运行。
2号童鞋:那么老师,如果系统将这些软中断交给其他的线程来处理,而线程是会被调度给打断的,那是不是说软中断的执行也可以被除了中断之外的调度程序给打断啊?
八戒:当然不是啦,软中断处理程序的线程是除了只能被中断打断,和自己主动放弃CPU之外,是不能被其他的任何进程给打断。
相关文章推荐
- 如何优雅地处理前端异常?
- C#线程间不能调用剪切板的解决方法
- C#线程同步的三类情景分析
- C#异常处理详解
- C#子线程更新UI控件的方法实例总结
- MySQL抛出Incorrect string value异常分析
- 笔记本下什么是迅驰处理器(cpu)相关资料第1/2页
- C++使用CriticalSection实现线程同步实例
- 基于C++实现的线程休眠代码
- VB读取线程、句柄及写入内存的API代码实例
- C#网络编程基础之进程和线程详解
- C#多线程处理多个队列数据的方法
- C#实现线程安全的简易日志记录方法
- C#中线程同步对象的方法分析
- ASP.NET线程相关配置
- 浅析linux环境下一个进程最多能有多少个线程
- 再谈JavaScript线程
- JS异常处理的一个想法(sofish)
- 详解JavaScript中的异常处理方法