目录
2.1_1_进程的定义、组成、组织方式和特征
2.1_1进程的定义
程序:就是一个指令序列
早期的计算机(只支持单道程序):
在引入多道程序技术后:
程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程。例如,所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程中的PCB。
注意:PCB是进程存在的唯一标志!!!
从不同的角度看,进程可以有不同的定义,比较传统典型的定义有:(强调“动态性”)
1.进程是程序的一次执行过程
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
3.进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
在引入进程实体的概念后,我们可以把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程是由程序段、数据段、PCB三部分组成”
2.1_2进程的组成
进程(进程实体)是由程序段、数据段、PCB三部分组成
2.1_3进程的组织
在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
链接方式:
索引方式:
2.1_4进程的特征
进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征:
本节小结:
2.1_2_进程的状态与转换
2.1_2_1进程的状态
进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时有需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。
进程的三种基本状态:
另外两种状态
创建态---在进程运行之前,需要操作系统完成创建进程...
终止态---操作系统需要完成撤销进程相关的工作。
以上完成了对进程五种状态的介绍。那,在什么情况下需要转换进程状态呢?
2.1_2_2进程状态的转换
本节小结:
2.1_3_进程控制
2.1_3_1什么是进程控制?
进程控制的主要功能是对系统中所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简化理解:反正进程控制就是要实现进程状态的转换
所谓进程控制就是表示这些绿色箭头指示的过程
2.1_3_2如何实现进程控制?
大家还记得之前提到的进程组织的问题吗?
那么我们把这个模型再细化一下:
用原语实现进程控制,原语的特点是执行期间不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作。
原语采用“关中断指令”和“开中断指令”实现
显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。
进程控制相关的原语:
(学习技巧:进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:)
1.更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
a.所有的进程控制原语一定都会修改进程状态标志
b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
c.某个进程开始运行前比如要恢复期运行环境
2.将PCB插入合适的队列
3.分配/回收资源
进程的创建:
进程的终止:
进程的阻塞和唤醒:
进程的切换:
本节小结:
2.1_4_进程通信
什么是进程通信?
顾名思义,进程通信就是指进程之间的信息交换
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。
为了保证安全,一个进程不能直接访问另一个进程的地址空间。
但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。
2.1_4_1共享存储
2.1_4_2 管道通信
2.1_4_3消息传递
进程之间的数据交换以格式化的消息为单位。进程通过操作系统提供的”发送消息/接收消息“两个原语进行数据交换。
本节小结:
2.1_5_线程概念和多线程模型
2.1_5_1什么是线程,为什么要引入线程?
在没有引入进程之前,系统中各个程序只能串行执行。
可以把线程理解为“轻量级进程”
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后,进程只作为除CPU之外的系统资源的分配单位(如打印机、内存地址空间等都是分配给进程的)
2.1_5_2引入线程机制后,有什么变化?
2.1_5_3 线程的属性
2.1_5_4线程的实现方式
2.1_5_4.1用户级线程
2.1_5_4.2内核级线程
在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m个内核级线程上(n>=m)
2.1_5_4.3多线程模型
在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线成模型”问题。
本节小结: