xv6中的竞争条件

时间:2016-02-27 18:32:28

标签: unix linux-kernel operating-system qemu xv6

我是操作系统领域的新手,并尝试通过入侵xv6来学习它。我怀疑是否可以在调用fork之前决定是否使用系统调用运行父或子。我可以有一个函数将参数传递给内核空间并决定是先运行父级还是子级运行。参数可以是: 1-父 0 - 子。

1 个答案:

答案 0 :(得分:1)

我认为问题是fork()只创建了一个进程副本并使其可运行,但负责允许它运行的模块是调度程序。因此,您提到的参数也应该以某种方式将此信息提供给调度程序。

如果你设法做到这一点,我认为你可以在runnable queue中按照你喜欢的顺序排列这两个进程,并让调度程序选择第一个可运行的进程。

但是,您无法控制第一个进程的运行时间。实际上,在下一个调度事件中,可能允许另一个进程运行,而前一个进程将被暂停。