中南大学数学院计算机操作系统第三章课件 存储管理进程管理.ppt

中南大学数学院计算机操作系统第三章课件 存储管理进程管理.ppt

* 2.创建进程的主要步骤 (1)为新进程分配唯一的进程标识数。接着为新进程分配进程控制块的空间,在进程表中加入新项。 (2)为新进程分配进程各部分映像所需的内存空间。 (3)初始化进程控制块,如进程标识数、父进程标识数、程序计数器、系统栈指针、进程的状态等,根据进程的性质或缺省值初始化进程的控制信息。进程的运行状态一般初始化为就绪状态 (4)子进程复制父进程扩充控制块,子进程将共享父进程的全部打开文件、信号处理方式等。 (5)子进程复制了父进程的数据区、核心栈和用户栈,父子进程程序执行的当前位置、状态、数据区、变量的当前值都是相同的。但随着父、子进程的各自独立执行,子进程的映像将会与父进程有明显的差异。 * 如何使父子进程完成不同的任务? 由上可知,当一个子进程刚创建完成,它与父进程共享执行代码,且起始执行位置相同,数据区与栈段也相同,那么两者以后是否只能执行相同的程序段和完成相同的功能呢?如果确实这样,那么创建子进程就显然毫无意义的了。 UNIX采用了在调用创建子进程的系统调用后,使父子进程具有不同的返回值,这样就可以采用判断语句,使父子进程可以执行不同的程序段,以便完成不同的任务。 在执行系统调用fork后,父进程得到的返回值是所创建子进程的标识数,而子进程的返回值为0。下面是一个使用系统调用fork的简例。 * main() { int pid; pr

文档评论(0)

1亿VIP精品文档

相关文档