进程、子进程

一、进程

1、什么是进程

进程中的程序 ---正在运行中的程序

进程---程序的一次执行过程

进程是程序的一个实例

2、进程和程序

./a.out

进程是跑起来的程序,一个程序可以对应多个进程

在进程中,资源需求要高得多; 它可能需要处理,内存,I / O资源才能成功执行。相反,程序只需要磁盘来存储。

程序——静态——硬盘

进程——动态——内存

3、进程的作用

操作系统为了管理程序的动态运行过程

4、进程的组成

程序的组成:代码+数据      .c文件是程序的源代码不是程序本身

标准c程序在内存的布局:(由c标准规定)

堆区、栈区、字符串常量区、静态区  

代码区

linux下程序在内存中的典型布局

栈、堆、bss data text

进程 = pcb + 进程实体(text | data | bss | 堆栈)

PID :process id 进程的id号

5、进程的生命周期

多个进程共同存在:宏观并行、微观串行

6、进程的状态:

进程组成:pcb + text | data |bss |堆|栈  = 进程

二、进程编程

进程 ---为了实现多任务

创建进程 ---执行进程 --- 结束进程 --- 结束进程后资源回收(僵尸态)

1、进程的创建

fork函数:

通过复制调用进程复制的子进程

返回值:成功:在父进程返回子进程的pid号(pid是一个非负整数)

                         在子进程返回 0;

               失败:-1,子进程不会被创建

2、父子进程:

所谓父子进程,就是在一个进程的基础上创建出另一条完全独立的进程,这个就是子进程,相当于父进程的副本。

两个fork会生成3个进程,n个fork会生成2^(n-1)个进程。

3、进程状态

         R:运行状态 :表示进程正在运行或准备运行

         S:可中断睡眠状态:进程正在睡眠(被阻塞),当等待资源到来时即可唤醒

         D:不可中断睡眠状态:被阻塞)不可被其他进程信号或时钟中断唤醒。

         T:暂停状态:进程暂停执行接受某种处理(进程被挂起,不是阻塞态

          t:跟踪状态

          Z:僵尸状态:进程已经结束但未释放PCB。编程中应避免这样的情况。

4、kill命令:

命令用于向进程发送信号,常用于终止进程

用法:kill 选项  <pid>

           killall  选项  进程名称

5、僵尸进程:

子进程先于父进程退出,子进程就会变成僵尸进程

一个进程在退出的时,会关闭所有的文件描述符,释放在用户空间中分配的内存,但是该进程的 PCB 仍会暂时保留,因为里面还存放着进程的退出状态以及统计信息等,这些PCB的信息均需该进程的父进程接收。

Linux下任何进程都有父进程,即每个进程的PCB都需由其父进程回收

6、孤儿进程:

父进程先于子进程退出,子进程就会变成孤儿进程

父进程先于子进程退出后,回收子进程的父进程就不在了,会使子进程变成孤儿;

随即该孤儿进程会马上被init进程领养;该进程的PCB回收也由init进程完成;

孤儿进程会占用资源,但是会被由系统回收,没有危害;

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值