copy_process()函数完成的工作很有意思:
.调用dup_task_struct()为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同。此时,子进程和父进程的描述符是完全相同的。
.检查新创建的这个子进程后,当前用户所拥有的进程数目没有超出给他分配的资源的限制。
.现在,子进程着手使自己与父进程区别开来。进程描述符内的许多成员都要被清0或设为初始值。进程描述符的成员值并不是继承而来的,主要是统计信息。进程描述符中的大多数数据都是共享的。
.调用dup_task_struct()为新进程创建一个内核栈、thread_info结构和task_struct,这些值与当前进程的值相同。此时,子进程和父进程的描述符是完全相同的。
.检查新创建的这个子进程后,当前用户所拥有的进程数目没有超出给他分配的资源的限制。
.现在,子进程着手使自己与父进程区别开来。进程描述符内的许多成员都要被清0或设为初始值。进程描述符的成员值并不是继承而来的,主要是统计信息。进程描述符中的大多数数据都是共享的。