一、程序执行
- 程序顺序执行
程序的顺序执行时的特征:
1. 顺序性
2. 封闭性(独占全机资源,一旦开始执行,不受外界影响)
3. 可再现性(多次执行,结果相同) - 程序并发执行
不存在前驱关系的程序之间才能并发执行(不要求程序2执行之前程序1必须执行完成)
程序并发执行的特征:
1. 间断性(暂停)
2. 失去封闭性(资源共享,等待)
3. 不可再现性(共享一个变量时,多次执行,结果不同)
二、进程的描述
2.1进程的定义和特征
1 进程的定义
解决的问题:多个程序并发执行时,程序间断执行可能出现运行结果不可再现的问题,失去了程序运行的意义。
引入进程,目的:1 程序并发执行, 2 对并发执行的程序进行描述和控制。
如何做到?
PCB (Process Control Block) 进程控制块
是什么?操作系统配置的专门的数据结构,使参与并发执行的每个程序(包括数据)都能独立运行。
作用:描述进程的基本情况和活动过程,来控制和管理进程
组成结构:进程(进程实体、进程映像):程序段+数据段+PCB (对应定义1和2)
创建/撤销进程:创建/撤销进程的PCB
定义:
(两件事:1 一段程序在一些数据上的运行过程; 2 系统资源分配和调度的基本单位 )
2 进程的特征
进程与程序的区别: 进程有PCB+以下特征
1 动态性 程序只是一段有序指令,而进程有生命周期。创建产生,调度运行,撤销消亡。
2 并发性 没有PCB的程序不能并发执行,而多个进程同存于内存中,在一段时间内同时运行。
3 独立性 没有PCB的程序不能作为独立的单位参与运行,进程是独立获取资源 调度 运行的基本单位。
4 异步性 程序异步结果不可再现,进程+进程同步机制,异步运行结果可再现。
2.2进程的基本状态及转换
1 三种基本状态
什么原因导致?多个进程并发执行时共享系统资源,间断性运行
1 就绪(Ready)状态 进程已经分配到除CPU以外的所有必要资源 就绪队列
2 执行(Running)状态 进程已经获得CPU 程序正在执行。单处理机中任一时刻都只有一个进程处于执行状态
3 阻塞(Block)状态 正在执行的进程由于发生事件暂时无法继续执行(I/O请求 申请缓冲区失败 ),
引起进程调度,处理机分配给另一个进程。 根据阻塞原因,设置阻塞队列
2 三种基本状态的转换
就绪-->执行(分配处理机)
执行-->就绪 (时间片用完)
执行-->阻塞 (申请临界资源失败(I/O请求))
阻塞-->就绪 (临界资源(I/O完成))
3 创建状态和终止状态
1 创建状态
创建进程:
进程申请空白PCB,在PCB中填写控制和管理进程的信息
分配必须的资源
转入就绪状态 插入就绪队列
当满足不了必须的资源:不能调度运行,此时为创建状态
目的:保证先创建再调度,保证对PCB操作对的完整性
创建-->就绪 (1.获得所需资源,2 PCB初始化)
2 终止状态
终止进程:
等待操作系统善后处理(保存状态码 及时统计数据,其他进程收集)
将PCB清零,PCB空间返还系统
2.3挂起操作和进程状态的转换
挂起(Suspend) 激活(Active)
1 为什么需要挂起操作?
1 用户暂停 修改程序
2 父进程 修改子进程 或协调各子进程之间的活动
3 系统负荷重,影响对实时任务的控制,挂起不重要进程
4 操作系统 挂起进程 检查运行中的资源使用情况或进行记账
2 挂起 三个进程状态转换(执行 就绪 阻塞)
活动就绪-->静止就绪(挂起 Suspend) 反过来 (激活)
活动阻塞-->静止阻塞(挂起 Suspend) 反过来 (激活)
3 挂起 无个进程状态转换(执行 就绪 阻塞 创建 终止)
创建-->活动就绪 系统性能和内存允许
创建-->静止就绪 资源不允许,不分配主存给新进程, 安置在外存,不能调度,此时进程创建未完成
2.4 进程管理的数据结构
用户用各种抽象的数据结构和操作命令来对计算机中的各类资源进行使用和管理
1 操作系统中用于管理控制的数据结构
计算机系统中,每个资源和进程都有自己的数据结构,称为资源或进程信息表,包含 资源或进程的标识、描述、状态及指针。
这些指针,把把同类信息表或统一进程的信息表 链接为不同队列,方便查找。
这些数据结构一般分为4类:1内存表 2设备表 3文件表 4进程表(进程管理)即进程控制块PCB
2 PCB的作用
PCB做什么的?记录描述进程当前情况 及管理进程运行的全部信息
有什么用?使一个在多道程序环境下不能独立运行的程序 成为 一个能独立运行的基本单位 一个能与其他进程并发执行的进程
如何做到的?
1 标志独立运行的基本单位。 系统通过PCB感知进程的存在
2 实现间断性运行方式。 保存进程暂停的的CPU现场信息 程序可再现
3 提供进程管理所需要的信息。
调度进程运行时 PCB记录程序和数据在内存或外存中的始址指针,以便查找
访问文件或 I/O设备 信息
所需资源清单
4 提供进程调度所需信息
PCB中保存进程处于何种状态,只有就绪状态的进程,插入就绪队列,才能被调度执行。
不同算法记录其他进程信息。 优先级算法(记录优先级), 其他(进程等待时间,已执行时间)
5 实现与其他进程的同步与通信。 进程同步机制 信号量机制(用于同步的信号量) 实现进程通信的区域或通信队列指针
3 PCB中的信息 (对应上面5条PCB作用的实现)
1 进程标识符 唯一标识一个进程
1 外部标识符 用于用户/进程对进程的访问 字母数字
2 内部标识符 系统对进程的访问 数字
2 处理机状态 处理机上下文 记录梳理及各种寄存器的内容
1 通用寄存器(用户可视寄存器) 用户可访问的暂存信息
2 指令寄存器 存放下一条指令的地址
3 程序状态字PSW 状态信息(条件吗 执行方式 中断屏蔽标志)
4 用户栈指针 每个用户进程都有系统栈,存放过程和系统调用参数及调用地址,栈指针指向栈顶。
处理机执行时,正在处理的信息放在寄存器中,进程切换时,处理机状态信息保存在PCB中,重新执行时能从断点继续执行。
3 进程调度信息 记录进程状态和调度信息
1 进程状态 进程调度和对换的依据
2 进程优先级
3 进程调度与算法有关的其他信息(等待/执行时间)
4 事件 由执行变为阻塞所等待的事件 (阻塞原因)
4 进程控制信息
1 程序和数据的地址
2 进程同步和通信机制 消息队列指针 信号量
3 资源清单 1 除CPU的所有所需资源 2 已经获得的资源
4 链接指针 本进程(PCB)所在队列中下一个进程的PCB的首地址
4 进程控制块的组织方式
1 线性方式 线性表 优点:简单 开销小 缺点: 每次查找 扫描全表
2 链接方式 (不同状态)就绪队列 阻塞队列(不同原因) 空白队列
3 索引方式 就绪索引表 阻塞索引表
2和3 中队列和索引都是记录PCB在PCB表中的地址
总结
由程序的特点,程序并发执行会遇到不可控的问题,引入进程
进程:程序+数据+PCB
本质:程序
作用在什么环境下:数据
如何达到控制的目的:PCB
主要是有PCB 解决了xx问题,所以针对这些方面,在进程控制的各个过程,PCB有自己的记录信息