进程
-
定义:
- 发展历史中,为了解决什么问题而引入“进程”
- 程序:
- 就是一个指令序列,早期计算机只支持单道程序
- 程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(变量)
- 引入多道程序后,为方便OS管理,完成各程序并发执行,引入进程实体概念,
- 进程实体又叫进程映像简称进程
- 问题:内存中同时放入多道程序,各个程序的代码,运算数据存放的位置不同.OS要如何寻找各程序的存放位置?
- 答:PCB是系统为每个运行程序配置的一个数据结构,用于描述进程的各种信息(如存放程序代码的位置)
- 所谓创建进程,实质上hi创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB
- 角度不同,定义不同,传统定义有:
- 进程是程序的一次执行过程
- 程序及其数据在处理机上顺序执行时所发生的活动
- 具有独立功能的程序在数据集合上运行的过程,系统进行资源分配和调度的一个独立单位(“动态性”)
- 引入进程实体后,可定义为:
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位 - 严格来说进程实体和进程并不一样,进程实体是静态的,进程是动态的。不过除非题目专门考察二者区别,否则可以认为进程实体就是进程。
-
组成
- 每个进程由那些部分组成
- PCB (进程控制块,Process control block)
- OS通过PCB来管理进程,因此PCB中应该包含OS对其进行管理所需的各种信息
- 进程的描述信息
- 进程标识符 PID
- 当进程被创建时,OS会为该进程分配一个唯一不重复的ID,区分进程
- 用户标识符 UID
- 进程标识符 PID
- 进程控制和管理信息
- 进程当前状态
- 进程优先级
- 资源分配清单
- 程序段指针
- 数据段指针
- 键盘
- 鼠标
- 处理机相关信息
- 各种寄存器值
- 当进程切换时需要用保存并记录当前状态,存放到PCB中,如程序计数器的值标识当前程序执行到那一句
- 各种寄存器值
- 程序段
- 程序代码存放的位置,存放要执行的代码
- 数据段
- 程序运行时使用,产生的运算数据。如全局变量、局部变量、宏定义的常量。(程序本身的运行所需的数据)
-
组织方式
- 系统中各个进程之间如何被组织起来的
- 进程的组成讨论的是进程内部由那些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
- 进程的组织方式
- 链接方式
- 按照进程状态将PCB分为多个队列
- OS持有指向各个队列的指针
- 索引方式
- 根据进程状态不同,建立几张索引表
- OS持有指向各个索引表的指针
- 链接方式
-
特征
- 相比于程序的特点
- 动态性(进程最基本的特征)
- 进程是程序的一次执行过程,是动态的产生、变化和消亡的
- 并发性
- 内存中有多个进程实体,各进程可以并发执行
- 独立性
- 进程能独立运行,独立获得资源,独立接受调度的基本单位
- 异步性
- 各进程按各自独立的、不可预知的速度向前推进,OS要提供“进程同步机制”来解决异步问题
- 异步性会导致并发程序执行结果的不确定性。
- 结构性
- 每个进程都会配置一个PCB。结构上看,进程由PCB,程序段,代码段组成
- 每个进程都会配置一个PCB。结构上看,进程由PCB,程序段,代码段组成