【实验楼】Linux 进程概念
概念的理解
-
程序与进程
- 程序:
- 概念:通过执行一系列有逻辑、有顺序结构的指令额,从而达到某目的
- 进程:
- 概念:程序在一个数据集合上的一次执行过程
- 特点(与程序区别:
- 动态性:实质是一次程序执行的过程,有创建、撤销等状态的变化;程序是一个静态的实体
- 并发性:可以做到在一个时间段内,有多个程序在运行中
- 独立性:进程可以独立分配资源,独立接受调度,独立运行
- 异步性:以不可预知的速度向前推进
- 结构性:进程拥有代码段、数据段、PCB(进程控制块,进程存在的唯一标志)。是独立运行的前提与必要条件
- 程序:
-
线程:
- 概念:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位
- 特点:是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
- 优势:执行更快,效率更高
进程的分类
-
进程的功能与服务的对象
- 用户进程:通过执行用户程序、应用程序或称之为内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭
- 系统进程:通过执行系统内核程序而产生的进程,可以执行内存资源分配和进程切换等相对底层的工作;该进程的运行不受用户的干预
-
应用程序的服务类型
- 交互进程:由一个 shell 终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台
- 批处理进程:是一个进程集合,负责按顺序启动其他的进程
- 守护进程:守护进程是一直运行的一种进程,在 Linux 系统启动时启动,在系统关闭时终止。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件
进程的衍生
- fork() 与 exec()
- fork():是一个系统调用
- 主要作用:为当前的进程创建一个新进程,该子进程除父进程的返回值与PID外其余相同
- exec():是一个系统调用
- 主要作用:切换子进程中的执行程序,即替换其从父进程复制过来的代码段和数据段
- fork():是一个系统调用
进程组与 Sessions
- 每一个进程都会是一个进程组的成员,而且这个进程组是唯一存在的,他们是依靠 PGID(process group ID)来区别的,而每当一个进程被创建的时候,它便会成为其父进程所在组中的一员
- 每当一个进程被创建的时候,它便会成为其父进程所在 Session 中的一员,每一个进程组都会在一个 Session 中,并且这个 Session 是唯一存在的
- 前台(foreground)就是在终端中运行,可交互的
- 后台(background)就是在终端中运行,无交互