Linux 多进程编程基础


本文将对Linux下多进程编程进行介绍。

进程的概念

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。通俗点讲,进程是一段程序的执行过程,是个动态概念。

进程的创建

进程的产生有多种方式,基本过程:

  1. 首先复制其父进程的环境配置
  2. 在内核中建立进程结构
  3. 将结构插入到进程列表
  4. 分配资源给此进程
  5. 复制父进程的内存映射信息
  6. 管理文件描述符和链接点
  7. 通知父进程

进程的状态

在这里插入图片描述
程序运行必须加载在内存中,当有过多的就绪态或阻塞态进程在内存中没有运行,因为内存很小,有可能不足。系统需要把他们移动到内存外磁盘中,称为挂起状态。就绪状态的进程挂起就是挂起就绪状态,阻塞进程挂起就称为阻塞挂起状态。

进程的调度

每个进程的产生都有自己的唯一的ID号(pid),并且附带有一个它父进程的ID号(ppid)。进程死亡时,ID被回收。
进程间靠优先级获得CPU资源,时间片段轮换来更新优先级,以保证不会一个进程占据CPU时间过长。每个进程都得到轮换运行,因为这个时间非常短,所以给我们就好像是系统在同时运行好多进程。

进程的死亡

进程终止有两种方式:

  1. 主动终止
  • 从main函数返回,链接程序会自动添加对exit的系统调用
  • 主动调用exit系统调用(包括exit/_exit/abort)
  1. 被动终止
  • 收到一个自己不能处理的信号
  • 在内核态执行时产生了一个异常
  • 收到SIGKILL等终止信号

孤儿进程与僵尸进程

进程间通信

参考进程间通信

posted @ 2026-03-01 20:20  main_c  阅读(9)  评论(0)    收藏  举报  来源