Linux多进程编程
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
进程基本状态及转换
三种基本状态:
- 就绪
- 运行
- 阻塞
然而,在操作系统实际设计中往往增加了两种状态
- 创建
- 终止
操作进程的工具
ps命令查看进程信息
ps -ef 显示全部进程信息
ps -ef| grep bash 从ps命令中过滤出指定进程信息
ps -u 命令显示当前用户拥有进程资源消耗信息