1、程序与进程
1.1 程序的概念
程序是一个指令序列,早期计算机只支持单道程序
1.2 进程的概念
1.3 进程的定义及特征
程序段、数据段、PCB
三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程,
例如,所谓创建进程,实质上是创建进程实体中的PCB,而撤销进程,实质上是撤销进程实体中的PCB。
注意:PCB是进程存在的唯一标志!
从不同的角度,进程可以有不同的定义,比较传统典型的定义有:
- 进程是程序的一次执行过程。
- 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
- 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
强调“动态性”
引入进程实体的概念后,可把进程定义为:
- 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门
考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部
分组成”
1.4 进程的组成
进程(进程实体)由程序段、数据段、PCB三部分组成。
PCB通常包含的内容:
1.5 进程的组织
(1)链接方式
(2)索引方式
1.6 进程和程序的区别
- 进程是动态的; 程序是静态的。
- 进程有独立性,能并发执行;程序不能并发执行。
- 二者无一一对应关系。
- 进程异步运行,会相互制约; 程序不具备此特征。但是,进程与程序又有密切的联系: 进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。
- 组成不同。进程包含:PCB、程序段、数据段。程序包含:数据和指令代码。
- 程序是一个包含了所有指令和数据的静态实体。本身除占用磁盘的存储空间外,并不占用系统如CPU、内存等运行资源。
- 进程由程序段、数据段和PCB构成,会占用系统如CPU、内存等运行资源。
- 一个程序可以启动多个进程来共同完成。
进程和程序的联系:进程不能脱离具体程序而虚设, 程序规定了相应进程所要完成的动作。
2、进程的状态及转换
2.1 进程的状态
2.2 进程的状态间转换💖
- 就绪态 → 运行态:进程被调度
- 运行态 → 就绪态:时间片到,或CPU被其他高优先级的进程抢占
- 运行态 → 阻塞态:等待系统资源分配,或等待某事件发生(主动行为)
- 阻塞态 → 就绪态:资源分配到位,等待的事件发生(被动行为)
3、原语实现对进程的控制
3.1 什么是进程的控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销己有进程、实现进程状态转换等功能。简而言之,进程控制就是要实现进程状态转换。
3.2 如何实现进程的控制
用原语实现能实现进程的控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作即原子操作(原子性)。原语采用 “关中断指令” 和 “开中断指令” 实现
思考:为什么进程控制(进程的转换)需要原语实现?
3.3 如何实现原语的原子性
原语的执行具有原子性,即执行过程只能一气呵成,期间不允许被中断。可以用 关中断指令
和 开中断指令
这两个特权指令实现原子性。CPU执行了关中断指令之后,就不再例行检查中断信号,直到执行开中断指令之后才会恢复检查。这样,关中断、开中断之间的这些指令序列就是不可被中断的,这就实现了“原子性”。
3.4 创建原语
3.5 撤销原语
3.6 阻塞和唤醒原语
3.7 切换原语
4、 进程间的通信
4.1 什么是进程通信
4.2 共享存储
- 共享一块大家都可以访问的空间,一次只能有一个进程进行读或写操作
4.3 消息传递
- 发送信息的进程将消息头写好,接受信息进程根据消息头读取信息或寻找信封是哪一个
4.4 管道通信
4.5 总结
5、线程概念与多线程模型
5.1 线程概念
什么是线程,为什么引入线程?
有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发度。引入线程后,线程成为了程序执行流的最小单位。
可以把线程理解为“轻量级进程”,线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内
也可以并发处理各种任务(如QQ视频、文字聊天、传文件)引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)
5.2 线程属性
5.3 线程的实现方式
(1)用户级线程
早期操作系统只支持进程,不支持线程。用户级线程由应用程序通过线程库实现所有的线程管理工作都由应用程序负责(包括线程切换)用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。(用户级线程对用户不透明,对操作系统透明) 可以这样理解,“ 用户级线程 ” 就是 “ 从用户视角看能看到的线程。
(2)内核级线程
5.4 多线程模型
在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分为几种多线程模型
评论区