调用系统调用时进程状态是什么?调用系统调用时的进程状态?
我的意思是,不asume这是一个I/O系统调用像读或写...
它的过程itselft执行内核代码,或过程suspendes和有像“内核线程”执行系统调用处理程序(并知道什么称为(当前)的过程)?
我不确定从执行到准备,或执行到阻止的更改。
调用系统调用时进程状态是什么?调用系统调用时的进程状态?
我的意思是,不asume这是一个I/O系统调用像读或写...
它的过程itselft执行内核代码,或过程suspendes和有像“内核线程”执行系统调用处理程序(并知道什么称为(当前)的过程)?
我不确定从执行到准备,或执行到阻止的更改。
这是进程本身切换到内核模式并执行系统调用 - 尽管它切换到内核堆栈来执行此操作。在内核中执行的进程具有运行状态,并且可以被抢占并以状态运行结束。
这取决于系统调用的功能。
假设存在一个假设的系统调用,它将PI计算为很多数字,并将结果放入应用程序指定的缓冲区,那么进程可能只是处于“R”运行状态。切换到内核模式不会阻止它在发出呼叫的任务的上下文中运行。
当然,很多系统调用都在等待事物 - 比如考虑sleep(),这会释放CPU而不是旋转。这使进程进入休眠状态,注册一个内核定时器来唤醒它。
相当多的系统调用永远不会睡觉,getpid()等只是检索总是在内存中的信息。许多有时睡眠的人并不一定这样做,例如,如果你对已经在内核缓冲区中的数据调用read()。
太好了,谢谢.. – makakko 2010-07-21 20:55:31
谢谢:) _____ – makakko 2010-07-21 20:56:20