我目前在一个操作系统类和我的老师花了一半的课时间谈论Pid.她提到,正如许多人所知,该进程的知道他们的父母的身份证。

我的问题是这个:

不会过程中的PCB知道其儿童的身份证吗?如果是的话,什么样的方式去了解它获得吗?

有帮助吗?

解决方案

因为我知道一个过程,没有一个明确的列表其儿童的Pid,但它可以很容易地建立,因为一个进程应该知道哪儿童进程,其产卵。例如UNIX叉()呼返回的儿童PID在父母进程和0中的儿童的过程中,CreateProcess()on Windows返回(请参考)PID的新过程中创建。

其他提示

当你使用 fork() 关于*nix,返回值PID的儿童在父母进程,并0中的儿童的过程。这是一种方式找出来。

不知道,如果他们跟踪的"树"的进程产生的,我想这取决于什么操作系统使用,但由于当你杀了庆典(或任何壳),所有运行的儿童也被杀了,我想像UNIX系统跟踪这一点。

如果你使用Linux或任何其实现的Unix Api,当一个进程的呼吁叉()创建一个孩子的过程中父母接收儿童PID作为返回代码,或-1如果叉失败。孩子的过程中得到零返回代码。

过程中的PCB知道其儿童的身份证。

因为我们知道叉()用于创建过程。它需要没有参数和返回进程的身份证。后一种新的儿童过程中创建了父母和孩子将执行下一步指令下列叉().我们有区别的父母从儿童。这可以通过测试的返回值叉().

如果叉()返回负值,创造孩子的过程是不成功的。如果叉()返回的零到新建的儿童的过程。如果叉()返回正值作为一个进程ID的儿童过程中的父母进程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top