程序挂起该怎么理解?

新手上路,请多包涵

比如说一个进程 fork 出子进程后,自身需要挂起,如何实现?

thanks.

阅读 5.5k
2 个回答
新手上路,请多包涵

一个进程通过调用fork后,首先是拷贝出自身进程控制块PCB的结构作为子进程的PCB,随后当程序挂起的时候,可以有两种状态,一种是处于可中断的睡眠状态(此时可以被信号或者其他中断唤醒),而另一种是不可中断的睡眠状态(只能被内核以显式wake_up()唤醒),这个过程是由内核的进程管理模块负责的,内核会修改当前运行的进程的PCB,并且保存此时相关的上下文环境到进程的TSS任务状态段中,然后再对PCB中的状态位进行修改,之后进程就真正挂起了。而此时fork出来的子进程其实还是与父进程共享同一堆栈段,这就涉及到了写时复制的机制。建议可以去看看操作系统的相关概念。比较详细

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题