本文内容参考:
Linux内核进程管理专题报告_linux rseq-CSDN博客
《趣谈Linux操作系统 核心原理篇:第三部分 进程管理》—— 刘超
《图解Linux内核 基于6.x》 —— 姜亚华 机械工业出版社
特此致谢!
引言
进程管理是所有操作系统的心脏所在,Linux也不例外。在Linux的五大组成部分(进程管理、内存管理、设备驱动、文件系统、网络协议)中,进程管理虽然不像内存管理、虚拟文件系统那样复杂,也不像进程间通信那样条理化,但作为内核五大组成部分之一,进程管理对于理解内核的运作、掌握操作系统的精髓起着关键作用。同时,作为五大组成部分的核心,进程管理与其它四个模块都有千丝万缕的联系,可以说是其它几大部分的“统帅”,在这几大部分中居于中央核心地位。因此,对于进程管理是必须要充分理解和掌握的。本系列文章对进程管理进行详细的讲解和分析,力求涵盖进程管理的各个方面、各个角落的知识,使读者能够深入理解和掌握Linux内核进程管理子系统。
背景知识
1. 进程
(1)什么是进程
进程是Unix/Linux操作系统中最基本也是最重要的抽象概念,人们拥有操作系统就是为了运行用户程序。因此,首先要明确进程的概念,即进程是什么。
在传统教科书上,进程的概念如下:
进程是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的一个独立单位。
从程序员的视角看,以上概念包含两层意思:
1)首先,进程应该包含一个执行流即代码;
2)其次,进程拥有属于它的资源,是资源的载体。
用更易于理解的话来说,进程(process)就是处于执行期的程序(目标代码存放在某种存储介质上),其可以理解为程序执行的一个实例,也可以说进程是程序的一次执行,是一个动态的实体。但进程并不仅仅局限于一段可执行程序代码,通常还包括其它资源,如打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个执行线程、以及用来存放全局变量的数据段等。从内核的角度看,进程也可以称为任务。
(2)进程的特征
- 动态性
进程是程序的执行过程,具有不同的状态:存活、消亡、活动、阻塞等。
- 并发性
多个进程实体可以在一段时间间隔内同时运行。
- 独立性
进程是资源分配的最小单位。各进程之间互相独立、互不干扰。
- 异步性
各进程向前推进的速度是不可预知的,呈现一定随机性。
- 结构性
进程具有一定结构。它由程序段、数据段和控制结构等组成。
(3)进程与程序的区别
程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静态的实体。程序是指令的有序集合,是一个在时间上按照严格次序前后相继的操作序列。
进程与程序的区别如下:
- 动态性
程序是静态的实体,进程是动态的实体。
- 并发性
进程具有并发性;程序是静态的,不具有并发性。
- 永久性
程序是永存的(前提是不删除),进程是暂存的。
- 非对应性
进程和程序无一一对应关系。事实上,完全可能存在两个或多个不同的进程执行的是同一个程序。一个程序可以被多个进程共用;一个进程(在其活动中)也可以顺序执行若干程序。
- 异步性
各进程在并发执行过程中会产生相互制约关系,造成各自进度的不可预测;而程序本身是静态的,当然就不具有此种特性。
更多内容请看下回。