进程管理:运行、终止与等待
1. 写时复制(Copy-on-Write)机制
写时复制机制是一种优化内存使用的技术。在该机制下,内核将页面标记为只读和写时复制。若任一进程尝试修改页面,会触发页面错误,此时内核会透明地复制该页面,清除其写时复制属性,页面不再共享。
现代机器架构的内存管理单元(MMU)提供了硬件级别的写时复制支持,使得该机制易于实现。在 fork 操作中,写时复制机制优势明显。因为大量的 fork 操作后会紧接着执行 exec ,将父进程的地址空间复制到子进程往往是浪费时间的,若子进程马上执行新的二进制映像,其之前的地址空间会被清除。写时复制机制则能优化这种情况。
2. vfork() 系统调用
在写时复制页面出现之前,Unix 设计者担心 fork 后紧接着执行 exec 时地址空间复制的浪费。因此,BSD 开发者在 3.0BSD 中引入了 vfork() 系统调用:
#include <sys/types.h>
#include <unistd.h>
pid_t vfork (void);
成功调用 vfork() 的行为与 fork() 类似,但子进程必须立即成功调用 exec 函数之一,或者通过调用 _exit()
超级会员免费看
订阅专栏 解锁全文
1730

被折叠的 条评论
为什么被折叠?



