1

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

4

1 回答 1

1

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

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

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

于 2016-02-28T00:14:39.047 回答