关于linux创建进程
linux创建新的进程都会通过do_fork()函数,这个函数从父进程那里复制一堆东西,然后COW优化。
这里为什么要复制而不是直接创建新的结构?
ps:复制东西的时候是不是都是只是先保存对应的地址而不是复制实际的内容(包括task_struct)?
刚刚开始看linux内核,有很多疑问。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
额,都不屑回答么?
复制就是能共享父进程的资源吧,而且子进程的一些权限要和父进程相同
task_struct结构是必须要有的,所以会先分配空间(同时分配了系统空间堆栈)并复制内容过来(这时有些内容是指针),在接下来的一些函数中,如:copy_files,copy_fs,copy_mm等,会根据do_fork的参数clone_flags中的标志位而决定是复制相应资源还是通过指针共享。
回复 3# spongebooob
是不是除了核心态栈,其他的东西都是相同的,写时复制来做?
回复 4# ggzwtj
task_struct 当中的有些内容也不一样!