

并发:指两个或多个事件在同一时间间隔内发生。这些事件宏观上是同时发生的,但微观上是交替发生的。
常考易混概念——并行:指两个或多个事件在同一时刻同时发生。
注意(重要考点):
单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
两者区别
- 概念不同
并发:并发是指两个或多个事件在同一时间间隔发生
并行:并行是指两个或者多个事件在同一时刻发生。- 侧重点不同
并发侧重于在同一实体上
并行:并行侧重于在不同实体上- 处理不同
并发:并发在一台处理器上“同时”处理多个任务。
并行:并行在多台处理器上同时处理多个任务

并发和共享的关系
并发性是指系统中同时存在着多个运行的程序
共享性是指系统在的资源可供内存中多个并发执行的进程使用
如果失去了并发性,则系统在一个时间内只能运行一个程序,则共享性失去了存在的意义
如果失去了共享性,则QQ和微信不能同时访问硬盘资源,也就无法同时发送文件,导致无法实现并发

背景知识:一个程序需要放入内存并给它分配CPU才能执行
问题:既然一个程序需要被分配CPU才能正常执行,那么为什么单核CPU
的电脑中能同时运行这么多个程序呢?
答:这是虚拟处理器技术。实际上只有一个单核CPU,在用户看来似乎有
6个CPU在同时为自己服务
概念:异步是指在多道程序环境下,允许多个程序并发执行,但由于资源有限,资源给了其中的一道程序,由于有限无法再给其他的程序,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
如果失去了并发性,系统只能串行地处理各个进程,每个进程的执行会一贯到底。只有系统拥有并发性,才可能导致异步性。




























- 生产者–消费者问题
- 生产者–多消费者问题
- 吸烟者问题
- 读者–写者问题
- 哲学家进餐问题



死锁的处理策略:


所谓安全序列,就是指如果系统按照这种序列分配资源,则每个进程都能顺利完成。只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。
如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。这就意味着之后 可能所有进程都无法顺利的执行下去。当然,如果有进程ᨀ 前归还了一些资源,那系统也有可能重新回到安全状态,不过我们在分配资源之前总是要考虑到最坏的情况。
如果系统处于安全状态,就一定不会发生死锁。如果系统进入不安全状态,就可能发生死锁(系统处于不安全状态未必死锁,但死锁时一定处于不安全状态。系统处于安全状态一定不会死锁)
因此可以在资源分配之前预先判断这次分配是否会导致系统进入不安全状态,以此决定是否答应资源分配请求。这也是“银行家算法”的核心思想。

数据结构:
长度为 m 的一维数组 Available 表示还有多少可用资源
n*m 矩阵 Max 表示各进程对资源的最大需求数
n*m 矩阵 Allocation 表示已经给各进程分配了多少资源
Max – Allocation = Need 矩阵表示各进程最多还需要多少资源
用长度为 m 的一位数组 Request 表示进程此次申请的各种资源数
银行家算法步骤:
①检查此次申请是否超过了之前声明的最大需求数
②检查此时系统剩余的可用资源是否还能满足这次请求
③试探着分配,更改各数据结构
④用安全性算法检查此次分配是否会导致系统进入不安全状态
安全性算法步骤:
检查当前的剩余可用资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。
不断重复上述过程,看最终是否能让所有进程都加入安全序列。








什么是快表(TLB)?
快表,又称联想寄存器(TLB, translation lookaside buffer ),是一种访问速度比内存快很多的高速缓存(TLB不是内存!),用来存放最近访问的页表项的副本,可以加速地址变换的速度。与此对应,内存中的页表常称为慢表
时间局部性:如果执行了程序中的某条指令,那么不久后这条指令很有可能再次执行;如果某个数据被访问过,不久之后该数据很可能再 次被访问。(因为程序中存在大量的循环)
空间局部性:一旦程序访问了某个存储单元,在不久之后,其附近的存储单元也很有可能被访问。(因为很多数据在内存中都是连续存放 的)
上小节介绍的基本地址变换机构中,每次要访问一个逻辑地址,都需 要查询内存中的页表。由于局部性原理,可能连续很多次查到的都是同一个页表项




























