fork的应用
复习
- fork状态机复制,包括持有的所有操作系统对象(如文件描述符)
- execve重置状态机,但继承持有的所有操作系统的对象
- 例如在fork之前打开一个管道, 然后就可以把一部分计算的输出管道给另外一个进程的输入
文件描述符
1 |
|
- RTFM: O_CLOEXEC : execve时文件描述符不应该被继承; O_APPEND:以追加的方式写该文件
- 对于数据文件,文件描述符会记住上次访问的位置
- dup:复制一个文件描述符,进程有两个fd指向同一个文件,并且具有同一个offset
回到fork, 复制,但又没有完全复制
概念上状态机被复制,但实际上复制后内存都共享
- “Copy on Write”只有被写入的页面才会复制一份
- 被复制后,整个地址空间都被标记位”只读”
- 操作系统捕获Page Fault后酌情复制页面
- 操作系统会维护每个页面的引用计数
fork的应用
http://example.com/2023/08/02/操作系统/jyy操作系统/fork的应用/