我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:小鱼儿主页 > 调度模块 >

抢占式内核中线程在系统调用过程中被抢占然后又被重新调度时如何

归档日期:07-09       文本归类:调度模块      文章编辑:爱尚语录

  抢占式内核中,线程在系统调用过程中被抢占,然后又被重新调度时,如何返回至被中断的系统调用的

  抢占式内核中,线程在系统调用过程中被抢占,然后又被重新调度时,如何返回至被中断的系统调用的

  线程A进入系统调用,实际上是进入中断。此时转至线程B时,还保持系统调用的中断状态吗?如果不是,则返回线程A时如何使系统处于系统调用中断状态?...

  线程A进入系统调用,实际上是进入中断。此时转至线程B时,还保持系统调用的中断状态吗?如果不是,则返回线程A时如何使系统处于系统调用中断状态?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部首先,一般配置的linux,如果进程正在进行系统调用,那么此时进程就是正运行在内核态,而内核态的进程是不可被抢占的。你说的这种情况,属于编译内核的时候开启了“内核可抢占”这个特性,这种情况下,即使进程正在内核态执行系统调用,也可以被其他进程抢占,这时,首先系统会在进程结构体中记录下这个进程当前是在内核态运行,然后,每个进程都有专属于自己的内核栈,系统会把当前的执行上下文信息都记录到这个进程的内核堆栈上。以后这个进程恢复运行的时候,内核会从它的结构体中读到被打断前它处于内核态,进而从它的内核栈中读取当时的上下文信息并进行恢复,这样,进程就得以重新运行了。有问题请追问

  系统调用时是不是属于软件中断程序? 重新运行时是处于内核态,但是不是还处于软件中断程序中?系统调用可以通过使用int指令进行软件中断实现,也可以通过专门的sysenter指令实现(视处理器是否支持),你当然可以把系统调用视为处于软件中断之中。

  展开全部在中断状态下 如果不是级别更高的中断请求,是不会被所谓的线程B打断的。中断处理会屏蔽其他的线程调度知道退出中断程序为止。所以线程B是更高级别的中断处理程序,那么会中断A的处理,丢失A的环境。

  追问抢占式内核中系统调用是可以被打断的。追答系统调用是软中断是可以被打断的,但是中断处理。。。算了,就当我没回答过吧。嘿嘿。

本文链接:http://i-zyczenia.net/diaodumokuai/913.html