关于linux创建进程

发布于 2022-10-15 07:19:28 字数 179 浏览 30 评论 0

linux创建新的进程都会通过do_fork()函数,这个函数从父进程那里复制一堆东西,然后COW优化。

这里为什么要复制而不是直接创建新的结构?
ps:复制东西的时候是不是都是只是先保存对应的地址而不是复制实际的内容(包括task_struct)?

刚刚开始看linux内核,有很多疑问。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ゝ杯具 2022-10-22 07:19:28

额,都不屑回答么?

各自安好 2022-10-22 07:19:28

复制就是能共享父进程的资源吧,而且子进程的一些权限要和父进程相同

task_struct结构是必须要有的,所以会先分配空间(同时分配了系统空间堆栈)并复制内容过来(这时有些内容是指针),在接下来的一些函数中,如:copy_files,copy_fs,copy_mm等,会根据do_fork的参数clone_flags中的标志位而决定是复制相应资源还是通过指针共享。

计㈡愣 2022-10-22 07:19:28

回复 3# spongebooob

    是不是除了核心态栈,其他的东西都是相同的,写时复制来做?

小忆控 2022-10-22 07:19:28

回复 4# ggzwtj

    task_struct 当中的有些内容也不一样!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文