摘要: SA12226242 施健一.进程的创建 Linux创建进程是通过子进程复制父进程所拥有的资源来实现的。现代Linux通过写时复制、共享数据等方法优化这一过程,提高创建子进程的效率。 在Linux中,进程创建实际上是通过do_fork函数处理的。do_fork函数的功能相对简单:代码在:kernel/fork.c1.检查是否或者哪个事件应该汇报给ptracer。2.通过copy_process创建进程描述符和子进程执行所需要的其它数据结构。3.执行wake_up_new_task函数,唤醒新进程。4.结束并返回子进程的ID copy_process则负责对进程创建的相关资源的申请:代码在... 阅读全文
posted @ 2013-05-30 21:25 20082663 阅读(3045) 评论(0) 推荐(0) 编辑
摘要: 一. 关于fork调用 fork()调用创建一个新的进程,该进程几乎是当前进程的一个完全拷贝。由fork()创建的新进程被称为子进程。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值,而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。Linux将复制父进程的地址空间内容给子进程,因此,子进程拥有独立的地址空间。 我们来看一个DEMO:// fork_example.c#include <memory.h>#include <stdi 阅读全文
posted @ 2013-05-30 17:08 20082663 阅读(1304) 评论(0) 推荐(0) 编辑