Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果调用系统调用的进程在该进程调用的系统调用正在运行时进入睡眠或抢占状态,会发生什么情况?
如果它的系统调用被抢占,它如何被重新加载并返回该进程?
系统维护每个进程的状态,其中存储了暂停并稍后重新启动进程所需的所有内容。其中大部分只是您的想象——内存实际驻留位置的地图、文件句柄列表等。
系统进程在做长期的事情,但不会立即完成,必须非常仔细地编写,以确保所有资源都被占用,所有锁被释放等。这显然是 I/O 的情况,但其他事情可以还涉及特殊资源。
大多数系统调用并不特别,它们是由普通库实现的,这些库只是您流程的一部分。真正的系统调用在最低级别执行缓慢的操作,其结构为“让我入睡并在......时唤醒我”,因此进入睡眠是自动但不可见的过程的一部分。