如何在Minix 3中等待系统调用



我需要在minix内部实现一个系统调用,直到某些条件为真才返回。然而,我发现简单地尝试像

这样的东西,
while (var != desired_value)
{
    // wait
}

不起作用,因为当它阻塞进程时,它也阻塞了minix中运行的所有其他进程。我甚至不能切换到另一个虚拟终端并登录。我认为minix进程应该彼此独立运行,但看起来当任何进程在系统调用上阻塞时,所有其他进程都会同时挂起。这是正确的吗?谢谢你

当然Minix有一个非阻塞等待机制:

#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status)
pid_t waitpid(pid_t pid, int *status, int options)

wait导致其调用方延迟,直到接收到信号或其中一个子进程终止。

waitpid为在收集子进程状态时不能阻塞的程序或希望等待一个特定子进程的程序提供了一个替代接口。

Minix提供POSIX,因此您可以使用fork, exec等来操作进程。

Minix系统调用是原子过程,这意味着它们不能被中断,即使是调度程序。等待不可能发生的情况将导致死锁。

相关内容

  • 没有找到相关文章

最新更新