内容摘选自 B站王道考研的公开课程

2 进程、线程与处理机的调度,进程同步互斥

2.1 进程的定义、组成、组织方式、特征

2.1.1 定义

image-20230213152047887

2.1.2 进程的组成

进程由程序段、数据段、PCB组成

image-20230213152228115

image-20230213152256872

2.1.3 进程的组织

image-20230213152335548

2.1.4 进程的特征

image-20230213152556835

2.1.5 小结

image-20230213152704190

2.2 进程的状态与转换

2.2.1 三种基本状态

image-20230213152854002

2.2.2 另外两种状态

在创建进程前,需要先分配好进程的PCB以及数据段 程序段 这个时候称为 创建态

进程结束 需要撤销进程 需要回收该进程占用的资源(撤销分配的打印机 内存资源)这个时候称为 终止态

image-20230213153048905

2.2.3 进程状态的转换

image-20230213210535056

2.2.4 小结

image-20230213210632884

2.3 进程控制

2.3.1 什么是进程控制

image-20230213210753422

2.3.2 实现进程控制

image-20230213211104342

image-20230213212842076

2.3.3 进程控制相关的原语

image-20230213214001945

2.3.3.1 进程的创建

image-20230213214031879

2.3.3.2 进程的终止

image-20230213214107119

2.3.3.3 进程的阻塞和唤醒

image-20230213214220340

2.3.4 小结

image-20230213215907208

2.4 进程通信

2.4.1 什么是进程通信

image-20230213220229932

2.4.2 共享内存

image-20230213220402127

2.4.3 管道通信

image-20230213221557591

2.4.4 消息传递

image-20230213221758740

2.4.5 小结

image-20230213222459556

2.5 线程概念和多线程模型

image-20230213222545487

2.5.1 什么是线程,为什么要引入线程

一个线程中会有多个功能,多个功能要在宏观意义上共同执行, 则需要一个类似“线程”的进程

image-20230213224028738

因此 线程变成了一个基本的CPU执行单元, 也是程序执行流的最小单位

可以把线程理解为“轻量级进程”。

线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)

引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

2.5.2 引入线程机制后带来的变化

image-20230213225056189

2.5.3 线程的属性

image-20230213225642364

2.5.4 用户级线程

image-20230213225746254

2.5.5 内核级线程

image-20230213230315028

2.5.6 线程的实现方式

image-20230213230411978

2.5.7 多线程模型

2.5.7.1 多对一模型

image-20230213230528925

2.5.7.2 一对一模型

image-20230213230636075

2.5.7.3 多对多模型

image-20230213230711701

2.5.8 小结

image-20230213230811426

2.6 处理机调度的概念、层次

image-20230213230843031

2.6.1 调度的基本概念

image-20230213232528604

2.6.2 调度的三个层次

2.6.2.1 高级调度

image-20230213232722930

2.6.2.2 中级调度

image-20230213232907641

2.6.2.3 进程的挂起态与七状态模型

image-20230213233052053

2.6.2.4 低级调度

image-20230213233150532

2.6.2.5 三层调度的联系、对比

image-20230213233249071

2.6.2.6 小结

image-20230213233331573

2.7 进程调度的时机、切换与程序、方式

2.7.1 进程调度的时机

image-20230213234039192

image-20230213234308234

2.7.2 进程调度的方式

image-20230213234425734

2.7.3 进程的切换与过程

image-20230213234624912

2.7.4 小结

image-20230213234715876

2.8 调度算法的评价指标

2.8.1 CPU利用率*

image-20230213235325723

2.8.2 系统吞吐量*

image-20230213235420656

2.8.3 周转时间*

image-20230213235652308

image-20230213235739326

2.8.4 等待时间

image-20230213235931304

2.8.5 响应时间

image-20230213235949979

2.8.6 小结

image-20230214000009097

2.9 FCFS、SJF、HRRN调度算法

image-20230214000128997

2.9.1 先来先服务 FCFS

image-20230214000542407

image-20230214225805951

2.9.2 短作业优先算法 SJF

2.9.2.1 非抢占式 称为 短进程优先调度算法 SPF

image-20230214230133056

2.9.2.2 抢占式 应该称为最短剩余时间优先算法 SRTTN

image-20230214230603781

2.9.2.3 答题小细节

image-20230214230907181

2.9.2.4 小结

image-20230214231013517

2.9.3 高响应比优先 HRRN

image-20230214231459080

image-20230222154748153

2.9.4 小结 三种算法对比

image-20230214231601481

2.10 调度算法:时间片轮转,优先级,多级反馈队列

2.10.1 时间片轮转

image-20230222155910467

image-20230222155930057

2.10.2 优先级调度算法

image-20230222160810962

2.10.2.1 非抢占式

image-20230222160238478

2.10.2.2 抢占式

image-20230222160508649

2.10.2.3 补充

image-20230222160744082

2.10.3 多级反馈队列(对于其他算法的折中权衡)

image-20230222171033072

image-20230222170848334

2.10.4 小结

image-20230222171209529

2.11 进程同步和进程互斥

2.11.1 进程同步

image-20230222172019095

2.11.2 进程互斥

2.11.2.1 什么是进程互斥

image-20230222172247866

image-20230224204518872

image-20230224204640415

2.11.2.1 小结

image-20230224204718897

2.12 进程互斥的软件实现方法

image-20230224205404274

2.12.1 单标志法

image-20230224205447797

问题:违背空闲让进原则

2.12.2 双标志先检查法

image-20230224210133864

2.12.3 双标志后检查法

image-20230224210326028

2.12.4 Peterson算法

image-20230224210717084

2.12.5 小结

image-20230224210853557

2.13 进程互斥的硬件实现方法

2.13.1 中断屏蔽方法

image-20230224212020090

2.13.2 TestAndSet指令

image-20230224212319911

2.13.3 Swap指令

image-20230224213628096

2.14 信号量机制

image-20230224214219914

2.14.1 整型信号量

image-20230224214922871

2.14.2 记录型信号量

image-20230224220511396

image-20230224222339490

2.14.3 小结

image-20230224222357857

2.15 信号量机制实现进程互斥、同步、前驱关系

2.15.1 进程互斥

image-20230224223816091

2.15.2 进程同步

image-20230224224025651

2.15.3 前驱关系

image-20230224224426525

2.15.4 小结

image-20230224224542670

2.16 生产者 - 消费者问题

image-20230224230841540

image-20230224231059376

相邻P、V不允许切换顺序,否则会因为内存没有资源无法P(empty)导致进程被阻塞,因为此时已经把内存上锁了,会导致内存的锁无法解锁,另一个线程执行的时候也无法获取内存的锁,导致无法释放内存的一部分,以此达到前者阻塞释放的条件。导致了死锁现象的发生。

image-20230224231528082

实现互斥的操作一定要在实现同步的操作之后,否则容易发生死锁现象

2.17 多生产者 - 多消费者问题

image-20230224232914916

plate为1时即使没有互斥 , 也不会发生问题

但是大于1时,会出现内存覆盖

image-20230224233152608

image-20230224233342687

2.18 吸烟者问题

image-20230224235413597

image-20230224235514099

2.19 读者 - 写者问题

image-20230225134629778

image-20230225135653725

image-20230225140034073

image-20230225203836889

2.20 哲学家进餐问题(解决进程死锁)

image-20230225205323241

image-20230225205351625

image-20230225205421619

奇偶数的哲学家优先争抢他们之间的筷子

image-20230225205534635

2.21 管程

2.21.1 管程的定义

image-20230225210958367

2.21.2 用管程解决生产者消费者问题

image-20230225211646355

2.21.3 JAVA中类似于管程的机制

image-20230225211757629

2.21.4 小结

image-20230225211811976

2.22 死锁

2.22.1 死锁的概念

image-20230225212641779

2.22.1.1 死锁、饥饿、死循环的区别

image-20230225212812290

2.22.1.2 死锁发生的必要条件

image-20230225214007351

2.22.1.3 什么时候会发生死锁

image-20230225214208829

2.22.1.4 死锁的处理策略

image-20230225214252283

2.22.1.5 小结

image-20230225214305661

2.22.2 死锁的处理策略——预防死锁

2.22.2.1 破坏互斥条件

image-20230225214935456

2.22.2.2 破坏不剥夺条件

image-20230225215257620

2.22.2.3 破坏请求和保持条件

image-20230225215458678

类似A、B的程序一直占用资源1、2导致C类资源很难等到资源1、2同时闲置,变成饥饿

2.22.2.4 破坏循环等待条 件

image-20230225215823910

2.22.2.5 小结

image-20230225215837140

2.22.3 避免死锁

2.22.3.1 什么是安全序列

image-20230225220351442

2.22.3.2 安全序列、不安全状态、死锁的联系

image-20230225231023939

2.22.3.3 银行家算法

image-20230225231153054

image-20230225232443888

系统处于不安全状态时不一定发生死锁,但是死锁时一定是处于不安全状态的。

系统处于安全状态一定不会发生死锁。

2.22.3.4 死锁的处理策略——检测和解除
2.22.3.4.1 检测

image-20230225233201553

2.22.3.4.2 解除

image-20230225233336247

1.进程优先级
2.已执行多长时间
3.还要多久完成
4.进程已经使用了多少资源
5.进程是交互式的还是批处理式的

image-20230225233509932

 posted on 2023-03-09 23:48    阅读(57)  评论(0编辑  收藏  举报