进程
程序的定义: 就是一个指令序列
早期的计算机,只支持单道程序。同一时间内只能有一道程序执行,此时计算机的CPU,内存以及I/O设备都由该程序单独使用,所以此时程序的代码放在程序段内,程序运行的数据放在数据段内,二者可分别置于内存的首尾两侧。
在引入多道程序技术后,同一时间可能有多道程序执行,此时内存中存放了各个程序的程序段和数据段,如果不引入其他数据结构便无法找到对应程序的存放位置。所以系统为每个运行的程序都配置一个数据结构,称为进程控制块PCB(Progress Control Block),用来描述进程的各种信息(如程序代码的存放位置)
进程实体
由PCB,程序段,数据段三部分构成,也称为进程映像
一般情况下,我们可以把进程实体简称为进程。我们平常所说的创建进程,指的就是创建进程实体中的PCB,而撤销进程,是指就是撤销进程实体中的PCB
PCB是进程存在的唯一标志
进程定义
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
在引入了进程实体的概念后,可以把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的独立单位
严格来说,进程实体和进程是有区别的,进程实体是静态的,而进程是动态的。不过除非题目专门考察二者区别,否则可认为进程实体就是进程,所以可以说进程由程序段,数据段,PCB三部分组成
程序段组成
程序段负责存储程序代码等相关信息
数据段组成
由程序运行时使用,产生的运算数据组成,如全局变量,局部变量,宏定义常量就存放在数据段内
PCB组成
简要概况:进程的管理者(操作系统)所需的数据都存放在PCB中,程序运行本身需要的数据则存放在数据段和程序段中
进程描述信息
- 进程标识符PID:进程创建时分配的唯一的永不重复的ID,用于区分进程
- 用户标识符UID:标识用户身份
进程控制和管理信息
- 进程当前状态
- 进程优先级
资源分配清单
- 程序段指针
- 数据段指针
- 键盘
- 鼠标
处理机相关信息
- 各种寄存器:当进程切换时需要把进程当前运行情况记录下来保存在PCB中,以备后续继续执行时调用。如程序计数器的值表示了当前程序执行到了哪一句
要区分PCB和程序段数据段中存储信息的区别,其实只需要认清PCB中存储的都是进程的管理者(操作系统)所需的数据,而程序段和数据段则负责存储程序本身运行所需要的数据
进程的组织方式
进程的组成讨论的是一个进程内部由哪些部分构成,而进程的组织讨论的是多个进程之间的组织问题
链接方式
- 按照进程的状态将PCB分为多个队列
- 操作系统持有指向各个队列的指针
- 执行指针:指向当前运行态(执行态)的进程,在单CPU计算机中,同一时刻只可能有一个进程处于运行态,所以执行指针也只有一个
- 就绪队列指针:指向当前处于就绪态的进程,处于就绪状态的进程可能有多个(通常会把优先级高的进程放在队头)
- 阻塞队列指针:指向当前处于阻塞状态的进程,很多操作系统还会根据阻塞原因不同再划分多个阻塞队列
索引方式
- 根据进程状态的不同,建立几张索引表
- 操作系统持有指向各个索引表的指针
进程的特征
- 动态性(进程最基本的特征):进程是程序的一次执行过程,是动态地产生,变化和消亡的
- 并发性:内存中有多个进程实体,各个进程可并发执行
- 独立性:进程是能独立运行,独立获得资源,独立接受调度的基本单位
- 异步性:各进程按各自独立的,不可预知的速度向前推进。操作系统需要提供“进程同步机制”来解决异步问题
- 结构性:每个进程都会配置一个PCB,从结构上看,进程都由PCB,数据段,程序段组成