这是我在百度知道上问的,别人回答的。
它的一些堆栈的数据放在哪?被清空了吗?如何被清空,被唤醒就不运行不了了。如果不清空那睡眠是一种什么状态,还在内存中?进程不运行时(就是阻塞或等待时)它的状态时什么?总不能停下来吧,在执行一个循环? 有一个名词叫内核等待队列,我理解是不是吧这些堆栈的数据都压入栈里了。
放在内存。 没清空。 还在内存中,但是代码不拿去给cpu运行。 就是停下来。 你需要去看操作系统进程调度线程调度相关的东西……
追问
2014-08-24 14:33
恩,是这样的。这个叫进程上下文。CPU有三种状态,内核态在进程上下文或中断上下文,用户态的进程中。 确实进程调度的知识,谢谢了。
回答
2014-08-24 22:39
所以只要不把这个进程的代码放到cpu上运行,这个进程就没在运行。至于内存中的数据,就丢着好了反正不影响。现代操作系统使用内存都有一个内存映射表,物理内存不同的区域给不同进程用,进程看到的是映射后的虚拟地址,换进程的时候系统把这个表换了,同一个地址就代表不同意思了,不同进程看到的内存也就不同了。