w1100n
This site is best viewed in Google Chrome
1/19/2018 20:23

在大部分情况下,我们认为内核态是一种CPU的特权态,这个特权态下,CPU可以执行这个特权态才允许执行的指令,访问这个特权态才运行访问的资源。这和当前的进程无关。OS通过控制不同的特权态来控制资源分配。一般有两种方法切换特权态,一种是特殊的指令,比如x86的软中断指令,或者大部分RISC系统的系统调用指令(比如SC),第二种是执行异常或者外部中断。发生切换后,现在到底是哪个进程,其实是无所谓的。现在说说现代LINUX如何定义线程和进程。我倾向于这样解释线程和进程:线程本质就是堆栈,当一段程序在执行,能代表它的是他的过去和现在。”过去”在堆栈中,”现在”则是CPU的所有寄存器,如果我们要挂起一个线程,我们把寄存器也保存到堆栈中,我们就具有它的所有状态,可以随时恢复它。这是线程。当我们切换线程的时候,同时切换它的地址空间(通过修改MMU即可),则我们认为发生了进程切换。所以进程的本质是地址空间,我们可以认为地址空间决定了进程是否发生切换。回到最初的问题,当CPU的特权级刚刚发生切换的时候,显然和进程,线程的切换是无关的,但之后调度器是否切换线程和进程,则和具体的情形相关了。

作者:in nek
链接:https://www.zhihu.com/question/40147261/answer/84963238
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

进程的创建涉及到系统调用,内存管理,文件管理等系统的主要方面

https://zhidao.baidu.com/question/73715555.html

Comments are closed.

<< Previous Posts Newer Posts >>
辽ICP备14012896