第二章 进程管理
文章目录
- 前言
- 2.1.1进程的定义、组成、组织方式
- 2.1.2进程的状态与转换
- 2.1.3进程控制
- 2.1.4进程通信
- 2.1.5线程概念和多线程模型
- 2.2.1处理机调度的概念、层次
- 2.2.2进程调度的时机、切换与过程
- 2.2.3调度算法的评价指标
- 2.2.4FCFS、SJF、HRRN调度算法
- 2.2.5时间轮转法、优先级、多级反馈队列
- 2.3.1进程同步、进程互斥
- 2.3.2进程互斥的软件实现方法
- 2.3.3进程互斥的硬件实现方法
- 2.3.4信号量机制
- 2.3.5用信号量实现进程互斥、同步、前驱关系
- 2.3.6生产者-消费者问题
- 2.3.7多生产者-多消费者
- 2.3.8吸烟者问题
- 2.3.9读者-写者问题
- 2.3.10哲学家进餐问题
- 2.3.11 管程
- 2.4.1死锁的概念
- 2.4.2死锁的处理策略-预防死锁
- 2.4.3死锁的处理策略-避免死锁
- 2.4.4死锁的处理策略-检测和解除
前言
- 参考书籍《计算机操作系统》 汤小丹、《2022年 操作系统考研复习资料》 王道。(个人认为王道的书整体顺序安排更合理,更好用)
- B站王道计算机考研 操作系统视频课
- 原本是小张期末考试整理的王道笔记,后来复习过程中使用笔记可以快速的根据目录或者文字检索去查找某个概念、知识点。所以分享给大家,需要文本文件的可以留言评论。
- 思维导图和文字内容是手敲的,所以可能有一些错别字,评论我会修改。
- 如果只是为了期末考试可以看我的这篇操作系统期末考试总结_鬼才小张同学的博客-CSDN博客
2.1.1进程的定义、组成、组织方式
思维导图
本节内容
进程的概念
进程的组成
进程(进程实体)由程序段、数据段、PCB三部分组成。
进程的组织
在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应当用适当的方式把这些PCB组织起来。
注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程组织讨论的是多个进程之间的组织方式问题。
链接方式
索引方式
进程的特征
进程和程序是两个截然不同的概念,相比于程序,进程拥有以下特征:
- 动态性(最基本特征):进程是程序的一次执行过程,是动态地产生、变化和消亡地。
- 并发性:内存中有多个进程实体,各进程可并发执行。
- 独立性:进程是能独立运行、独立获得资源、独立接受调度地基本单位
- 异步性:各进程按各自独立的、不可预知地速度向前推进,操作系统要提供“进程同步机制”来解决异步问题,可能导致运行结果地不确定性。
- 结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成。
2.1.2进程的状态与转换
思维导图
本节内容
进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。
三种基本状态
运行态:占有CPU,并在CPU上运行
就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行。
阻塞态:因等待某一事件而暂时不能运行。
注意单核处理机环境下,每一时刻最多只有一个进程处于运行态。双核环境下可以同时有两个进程处于运行态。
另外另种状态
创建态:进程正在被创建,操作系统为进程分配资源、初始化PCB。
终止态:进程正在从系统中撤销,操作系统回收进程拥有的资源、撤销PCB。
进程的状态转换
2.1.3进程控制
思维导图
本节内容
什么是进程控制?
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。
简单理解:进程控制就是要实现进程状态转换。
如何实现进程控制
动画讲解1:13-5:00
王道计算机考研 操作系统
用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。
这种不可被中断的操作即原子操作。原语采用“关中断”和开中断指令实现。
关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。
进程控制相关的原语
各原语可以实现怎样状态转换,各原语大概做了哪些事(理解了在选择题分析出答案即可,不用背)
2.1.4进程通信
思维导图
本节内容
什么是进程通信
进程通信就是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。
为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。
共享存储
管道通信
消息传递
进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息/接受消息”两个原语进行数据交换。动画讲解9:00-11:00
王道计算机考研 操作系统
2.1.5线程概念和多线程模型
思维导图
本节内容
什么是线程?为什么要引入线程?
还没引入进程之前,系统中各程序只能串行执行。
可以把线程理解为"轻量级进程"。线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)。
引入线程后,进程只作为除CPU之外的系统资源分配单元(如打印机、内存地址空间等都是分配给进程的)。
引入线程机制后,有什么变化?
线程的属性
线程的实现方式
用户级线程
内核级线程
二者组合
多线程模型
在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题。
多对一
一对一模型
多对多,集二者之所长
2.2.1处理机调度的概念、层次
思维导图
本节内容
调度的基本概念
调度的三个层次-高级调度
中级调度
补充知识:进程的挂起状态与七状态模型
暂时调到外存等待的进程状态为挂起状态(挂起态)。
挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态。
低级调度
三层调度的联系、对比
2.2.2进程调度的时机、切换与过程
思维导图
本节内容
进程调度的时机
进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。
进程调度的方式
进程与进程切换过程
2.2.3调度算法的评价指标
思维导图
本节内容
CPU利用率
CPU“忙碌”的时间占总时间的比例
利用率= 忙 碌 时 间 总 时 间 \frac{忙碌时间}{总时间}