进程的定义
一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程
进程的组成
- 程序的代码
- 程序处理的数据
- 程序计数器中的值(指示下一条要执行的指令)
- 一组通用的寄存器的当前值,堆,栈
- 一组系统资源(如打开的文件)
进程与程序的联系
程序是产生进程的基础,进程是程序一次动态执行的过程。程序每次运行构成不同的进程,通过多次调用一个程序可以对应多个进程,通过调用,一个进程可以对应多个程序。
进程与程序的区别
- 进程是动态的,程序是静态的,进程有核心态/用户态
- 进程与程序的组成不同,进程包含程序,数据和进程控制块(进程状态信息)
进程的特点
动态创建,并发或者并行,独立(执行正确性不受其他进程的影响)
制约(因访问共享数据/资源或进程同步产生制约)
进程控制块(process control block)
操作系统为每个进程维护了一个进程控制块,用来保存与该进程有关的各种状态信息。是进程存在的唯一标示。
- 进程标识信息:本进程的产生者标识(父进程标识),用户标识
- 处理器状态信息保存区:保存进程的运行现场信息
- 用户可见寄存器:用户可见的数据,地址等寄存器
- 控制和状态寄存器:PC寄存器,程序状态字(PSW)
- 栈指针:过程调用/系统调用/中断处理和返回时需要使用到
- 进程控制信息
- 调度和状态信息,用于调度进程并占用处理机使用
- 进程间通讯信息,提供通信相关各种标识、信号、信件等,这些信息存在接收方的进程控制块中。
- 存储管理信息,包含指向本进程映像存储空间的数据结构
- 进程所用资源,说明由进程打开、使用的系统资源,如打开的文件等
- 数据结构连接信息,进程可以连接到一个进程队列中,或连接到相关的其他进程的pcb
PCB的组织方式
链表:同状态进程其pcb成一链表,多个状态对应多个链表
索引表
进程的状态
- 进程创建:系统初始化时、用户请求创建一个新进程、正在运行的进程执行了创建进行的系统调用
- 进程的运行:由操作系统调度执行
- 进程等待(阻塞):由进程自身发起
- 请求并等待系统服务,无法马上完成
- 启动某种操作,无法马上完成
- 需要的数据没有到达
- 进程唤醒:
- 被阻塞进程需要的资源可被满足
- 被阻塞进程等待的时间到达
- 将该进程的pcb插入到就续队列
- 进程结束:
- 正常退出(自愿的)
- 错误退出(自愿的)
- 致命错误导致被强制退出(系统
- 被其他进程杀掉(其他进程
进程状态
(创建状态)就绪态、运行态、阻塞态(结束状态)
image.png
进程挂起
进程挂起状态时,进程就没有占用内存空间。处于挂起状态的进程映像在磁盘上。
image.png
- 阻塞挂起状态:进程在外存并等待某事件的出现
-
就续挂起状态:进程在外存,但只要进入内存即可执行。
image.png
状态队列
image.png