进程的描述与控制
1. 程序执行
程序顺序执行:顺序性,封闭性,可再现性
程序并发执行:间断性,失去封闭性,不可再现性
2. 进程的描述
2.1 进程的定义和特征
进程的定义:
(1) 进程是程序的一次执行。
(2) 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
(3) 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。(引入线程后,线程是独立调度的最小单位)
(进程是程序在一个数据集上运行的过程,数据集不同运行结果不同)
进程的特征
(0) 结构特征。(系统为每个进程设立一个进程控制块PCB)
(1) 动态性。(最基本的特征,进程是程序的一次执行 )
(2) 并发性。
(3) 独立性。
(4) 异步性。
进程和程序的对应关系
一个程序对应一个进程或者多个进程
一个进程对应一个程序或者一段程序
2.2 进程的状态及转换
- 进程的三种基本状态
(1) 就绪(Ready)状态。
(2) 执行(Running)状态。
(3) 阻塞(Block)状态。
- 创建状态和终止状态
(1) 创建进程:
①由进程申请一个空白PCB,并向PCB中填写用于控制和管理进程的信息②为该进程分配运行时所必须的资源③把该进程转入就绪状态并插入就绪队列之中。
(2) 终止进程:等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还系统。
- 挂起状态
进程被交换到外存,状态变为挂起状态
2.3 进程的组织
进程的构成
为了刻画进程的动态变化,通常把进程表示为由程序段、相应的数据段和PCB组成。
进程控制块PCB:PCB是进程存在的唯一标志,当系统或父进程创建一个进程时,实际上就是为其建立一个PCB。进程结束时,系统回收PCB,该进程随之消亡。
进程控制块PCB的作用
(1) 作为独立运行基本单位的标志。
(2) 能实现间断性运行方式。
(3) 提供进程管理所需要的信息 。
(4) 提供进程调度所需要的信息。
(5) 实现与其它进程的同步与通信。
PCB中的信息
(1) 进程标识符(每个进程有唯一的标识号)
(2) 处理机状态
(3) 进程调度信息
(4) 进程控制信息
3. 进程控制
进程控制的主要功能是对所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
原语:进程控制用的程序段。
3.1 进程的创建
引起创建进程的事件
(1) 用户登录
(2) 作业调度
(3) 提供服务
(4) 应用请求
进程创建原语(进程无→创建态→就绪态)
(1) 申请空白PCB。(为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB)
(2) 为新进程分配其运行所需的资源。(包括各种物理和逻辑资源,如内存、文件、I/O设备和CPU时间等)
(3) 初始化PCB。
(4) 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
3.2 进程的终止
引起进程终止的事件
(1) 正常结束
(2) 异常结束
(3) 外界干预
进程终止原语(就绪态/阻塞态/运行态→终止态→进程无)
(1) 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态。
(2) 若被终止进程正处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程
(3) 若该进程还有子孙进程,将其所有子孙进程也都予以终止。
(4) 将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给OS。
(5) 将被终止进程(PCB)从所在队列(或链表)中移出。
3.3 进程的阻塞与唤醒
引起进程阻塞和唤醒的事件
(1) 向系统请求共享资源失败。
(2) 等待某种操作的完成。
(3) 新数据尚未到达。
(4) 等待新任务的到达。
3.4 进程的挂起与激活
- 进程的挂起
- 进程的激活
4. 进程同步
5. 进程通信
进程通信是指进程之间的信息交换。
- 共享存储器系统(Shared-Memory System)
在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行读写操作实现进程之间的信息交换。
使用同步互斥工具(P、V操作)对共享空间进行限制。
分类:(1) 基于共享数据结构。 (2) 基于共享存储区。
- 消息传递系统(Message passing system)
通过系统提供的发送消息和接收消息两个原语进行数据交换,隐藏通信实现细节。
分类:
(1) 直接通信方式:发送进程直接把消息发送给接收进程。
(2) 间接通信方式:借用中间实体(信箱)进行消息发送。
- 管道(Pipe)通信(半双工通信)
以字符流形式将大量的数据送入管道。数据一旦被读取,它就从管道中被抛弃。管道只能采用半双工通信。
为了协调双方的通信,管道机制必须提供以下三方面的协调能力:
① 互斥 ② 同步③ 确定对方是否存在
6. 线程
6.1 线程的引入
引入进程:为了使多个程序能并发执行。
引入线程:减少程序在并发执行时所付出的时空开销。(进程的创建、撤销、切换)
进程和线程
进程是可拥有资源的独立单位,同时又是可独立调度和分派的基本单位
线程是调度和分派的基本单位
6.2 线程与进程的比较
- 调度的基本单位
- 并发性
- 拥有资源(线程控制块TCB,线程共享进程的内存地址空间和资源)
- 独立性
- 系统开销
- 支持多处理机系统
6.3 线程的属性
- 线程不拥有资源
- 不同的线程可以执行相同的程序
- 同一进程中的各个线程共享该进程所拥有的资源
- 线程是处理机的独立调度单位,多个线程是可以并发执行的。
- 线程在生命周期内会经历阻塞态,就绪态和运行态等各种状态变化。
- 线程没有自己独立的地址空间,它共享其所属进程的空间。(进程是拥有资源的单位)
6.4 多线程
- 进程是一个可拥有资源的基本单位
- 多个线程可并发执行
- 进程已不是可执行的实体。
6.5 线程的实现方式
-
用户级线程(内核意识不到线程的存在)
-
内核级线程(处理机分配的单位)