Linux多进程编程


一、 并发概念

并发:

指多个活动在同一时间段内同时进行

二、 逻辑控制流

逻辑流:

在多进程运行环境下,一个程序(或进程)按程序员意图,从main函数开始,一个一个语句,一条一条指令执行,执行轨迹为一系列程序计数器(PC)的值,给人一种每个程序都独占处理器的假象,而一般整个系统可能仅有一个CPU,各进程轮流执行,我们称进程为一个逻辑流

实际上,每个进程的执行过程是不连续的,它们交替使用处理器

并发流:

只要某种可能的执行模式在时间上存在重叠,它们就是并发流。

并行流:

如果两个流在有部分操作(或代码)同一时刻地运行在不同的处理器核或者计算机上,那么我们称它们为并行流(parallel flow)

多任务:

一个进程和其他进程轮流运行的概念

时间片

每次分配给一个进程的执行时间称之为时间片(time slice),进程也因此划分为多个做时间分片(time slicing)

进程的基本概念

初识进程

一、 什么是进程

进程是正在执行中的程序

二、 进程结构

进程至少包含三项内容:

  • 程序代码
  • 数据集
  • 进程控制块

程序代码:一般是一个包括main函数的可执行程序,程序装载到内存,进程才能启动

数据集:进程的处理对象,可认为是变量内容,保存从初始化、环境变量、命令行参数和文件的数据

PCB:保存程序代码、数据变量地址、进程其他属性,PCB是进程存在的唯一标志,以后操作系统就通过PCB来对进程实施管理和控制

三、进程属性(保存在PCB中

进程描述信息:

进程号(PID)

用户标识

用户组标识

进程族亲信息:父进程标识、兄弟进程标识

控制信息:

进程状态

调度信息:优先级、剩余时间片和调度策略

记时信息:CPU使用时间等

通信信息:未处理信号、管道、消息队列、共享内存等

资源信息:

存储器地址

打开文件的信息

cpu现场信息:

当前进程CPU寄存器副本:程序计数器PC、通用寄存器、标识寄存器FLAGS

PCB的实例(Linux任务结构体:task_struct

image-20230404144612237

进程基本状态及转换

三种基本状态:

  • 就绪
  • 运行
  • 阻塞

然而,在操作系统实际设计中往往增加了两种状态

  • 创建
  • 终止

image-20230404145422917

操作进程的工具

ps命令查看进程信息

ps -ef 显示全部进程信息

ps -ef| grep bash 从ps命令中过滤出指定进程信息

ps -u 命令显示当前用户拥有进程资源消耗信息