当前位置: 技术问答>linux和unix
关于FreeBSD 5中中断线程的问题
来源: 互联网 发布时间:2015-07-16
本文导语: 我在一篇bsd网站上看到一篇比较权威的文章,其中有一段是这样的: 1.interrup thread在运行时需要一个进程上下文。但是传统的UNIX并不一定总存在活跃进程。FreeBSD当前通过设置一个idle线程来解决这个问题,这个线程在...
我在一篇bsd网站上看到一篇比较权威的文章,其中有一段是这样的:
1.interrup thread在运行时需要一个进程上下文。但是传统的UNIX并不一定总存在活跃进程。FreeBSD当前通过设置一个idle线程来解决这个问题,这个线程在系统没有活跃进程时运行.”
我觉得很奇怪,所有的中断线程不是都共享0号进程吗,好需要这个idle线程做什么,直接用0号进程上下问不可以吗?而且中断线程需要的是一个进程上下文,但是idle是个线程啊,怎么起做用呢?到底idle线程与中断线程是怎么联系的?
2 FreeBSD使用lazy调度方法来解决延迟和调度问题。
文中说:“ 当中断发生时,由中断stub记录中断线程PID,但此时 并不调度该线程。而是继续执行被中断的进程。只有发生以下两种情况时才调度中断线程:
1. 如果中断线程要被阻塞了。
2. 中断嵌套层次过深。
通过使用这种方法,大部分中断的overhead都可以忽略。”
我也觉得不解,这个时机1里,中断线程明明都还没有被调度,怎么会又被阻塞了呢?
1.interrup thread在运行时需要一个进程上下文。但是传统的UNIX并不一定总存在活跃进程。FreeBSD当前通过设置一个idle线程来解决这个问题,这个线程在系统没有活跃进程时运行.”
我觉得很奇怪,所有的中断线程不是都共享0号进程吗,好需要这个idle线程做什么,直接用0号进程上下问不可以吗?而且中断线程需要的是一个进程上下文,但是idle是个线程啊,怎么起做用呢?到底idle线程与中断线程是怎么联系的?
2 FreeBSD使用lazy调度方法来解决延迟和调度问题。
文中说:“ 当中断发生时,由中断stub记录中断线程PID,但此时 并不调度该线程。而是继续执行被中断的进程。只有发生以下两种情况时才调度中断线程:
1. 如果中断线程要被阻塞了。
2. 中断嵌套层次过深。
通过使用这种方法,大部分中断的overhead都可以忽略。”
我也觉得不解,这个时机1里,中断线程明明都还没有被调度,怎么会又被阻塞了呢?
|
当中断发生时,由中断stub记录中断线程PID,但此时 并不调度该线程。而是继续执行被中断的进程。只有发生以下两种情况时才调度中断线程:
是原文吗?
是原文吗?