操作系统---(15)父进程与子进程

进程什么时候被创建

  • 批作业调度 (操作系统创建用户进程)
  • 交互作业提交 (操作系统创建用户进程)
  • 系统提供服务 (操作系统创建系统进程)
  • 用户程序创建子进程 (用户程序创建用户进程) 用户通过调用fork()函数实现

进程家族树

  1. 父进程:执行过程中创建了其它进程的进程
  2. 子进程:被父进程创建的进程
  3. 子子进程…

fork()函数说明

函数原型 pid_t fork(void)

  1. 该函数包含于头文件unistd.h中。
  2. 函数功能:建立一个新的子进程。其子进程会复制父进程的数据与堆栈空间,并继承已打开的文件代码、工作目录和资源限制等。父进程的用户代码、组代码、环境变量、

函数返回值

  1. 如果fork()调用成功,则在父进程会返回新建立的子进程代码(PID),而在新建立的子进程中则返回0。
  2. 如果fork()失败则直接返回-1,失败原因存于errno中。失败的原因有三个:
    1. 系统内存不够;
    2. 进程表满(容量一般为200~400)
    3. 用户的子进程太多(- -般不超过25个)。
    在这里插入图片描述
    在这里插入图片描述

父进程创建子进程

  1. UNIX中,父进程通过系统调用fork()创建子进程,子进程继承父进程资源,父子进程各自独立。
  2. 父子进程各自拥有自己的PCB、内存用户区、临时资源等,各自独立参与CPU调度
  3. 从fork中返回时,测试返回参数:
    若值为0,则是子进程,可以转移到相应的用户程序中继续执行;
    若值不为0 (子进程的PID),则是父进程,继续执行主程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值