【发布时间】:2018-07-30 04:39:16
【问题描述】:
是否保证系统调用在上下文切换或抢占之前完成?我们是否应该期望系统调用指令是不可中断的。还是取决于系统调用类型或操作系统实现?
【问题讨论】:
-
相反,系统调用往往会触发上下文切换,假设系统调用阻塞等待某个事件。
-
是否可以中断系统调用块执行?
-
@RedArrow 没有。正确的方法是使用系统调用的非阻塞版本。在这种情况下,这些系统调用会立即将控制权返回给调用程序,并带有错误代码,例如 EWOULDBLOCK。
-
共享资源受到保护的方式是一次只允许一个进程访问共享资源。这不会阻止“拥有”共享资源的进程被抢占。这只是意味着另一个想要使用该资源的进程必须等待。
-
@RedArrow,您应该先拨打tour,阅读How to Ask 和minimal reproducible example,然后再在这里提问。所以看起来你真正想要的是关于你的标准库和操作系统函数的线程安全的信息,这真的取决于实现。
标签: c linux operating-system posix