抢占式内核中,线程在系统调用过程中被抢占,然后又被重新调度时,如何返回至被中断的系统调用的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抢占式内核中,线程在系统调用过程中被抢占,然后又被重新调度时,如何返回至被中断的系统调用的相关的知识,希望对你有一定的参考价值。
参考技术A 首先,一般配置的linux,如果进程正在进行系统调用
,那么此时进程就是正运行在内核态,而内核态的进程是不可被抢占的。
你说的这种情况,属于编译内核的时候开启了“内核可抢占”这个特性,这种情况下,即使进程正在内核态
执行系统
调用,也可以被其他进程抢占,这时,首先系统会在进程
结构体
中记录下这个进程当前是在内核态运行,然后,每个进程都有专属于自己的内核栈,系统会把当前的执行上下文信息都记录到这个进程的内核堆栈上。
以后这个进程恢复运行的时候,内核会从它的结构体中读到被打断前它处于内核态,进而从它的内核栈中读取当时的上下文信息并进行恢复,这样,进程就得以重新运行了。
有问题请追问
以上是关于抢占式内核中,线程在系统调用过程中被抢占,然后又被重新调度时,如何返回至被中断的系统调用的的主要内容,如果未能解决你的问题,请参考以下文章