摘要: (三)死锁检测和解除 ‍ ​​ ‍ (1)死锁的检测 ​​ 理解:在这个图中,以 P2 和 R1 间的箭头为例,表明实际上 P2 请求了两个 R1 资源,但 R1 只给他分配了1个资源。 ‍ 重点:最后能将边全部消除,则没有死锁发生。否则,仍然有边连着且消除不掉的进程则发生了死锁。(可完全简化和不可 阅读全文
posted @ 2024-11-08 09:41 Wind_730 阅读(40) 评论(0) 推荐(0)
摘要: (二)避免死锁 ‍ ​​ ‍ (1)安全序列与不安全状态 ​​ 安全序列: 指如果系统按照这种序列分配资源,则每个进程都能顺利完成。 只要能找出一个安全序列,系统就是安全状态。当然,安全序列可能有多个。 不安全状态: 如果分配了资源之后,系统中找不出任何一个安全序列,系统就进入了不安全状态。 这就意 阅读全文
posted @ 2024-11-08 09:40 Wind_730 阅读(72) 评论(0) 推荐(0)
摘要: (一)预防死锁 ‍ ​​ ‍ 死锁的发生须同时满足四个条件:互斥条件、不剥夺条件、请求和保持条件、循环等待条件。 预防死锁可以分别从破坏这四个条件入手: ‍ (1)破坏互斥条件 理解:在进程和资源之间加多一层,使其对于多个进程来说宏观上看似是可以同时使用的,但实际上仍由系统完成互斥分配。 ​​ ‍ 阅读全文
posted @ 2024-11-08 09:37 Wind_730 阅读(51) 评论(0) 推荐(0)
摘要: 死锁的处理策略 ​​ 阅读全文
posted @ 2024-11-08 09:36 Wind_730 阅读(13) 评论(0) 推荐(0)
摘要: 死锁 ‍ ​​ ‍ 一、死锁的概念 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁”。发生死锁后若无外力干涉,这些进程都将无法向前推进。 ‍ 二、死锁、饥饿、死循环 死锁: 各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前 阅读全文
posted @ 2024-11-08 09:35 Wind_730 阅读(31) 评论(0) 推荐(0)
摘要: 管程 理解:管程实际上就是对先前的需要一气呵成的各种操作(包括 P、V 操作等)进行封装实现。 ​​ ‍ 一、管程的定义和基本特征 ​​ ‍ 二、引入管程的原因及管程的逻辑实现 关键:在封装下由编译器负责实现互斥特性 ​​ 阅读全文
posted @ 2024-11-08 09:34 Wind_730 阅读(51) 评论(0) 推荐(0)
摘要: 读者-写者问题 一、问题背景及分析 有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。因此要求: 允许多个读者可以同时对文件执行读操作 只允许一个写者同时往文件中写 阅读全文
posted @ 2024-11-08 09:33 Wind_730 阅读(70) 评论(0) 推荐(0)
摘要: 哲学家进餐问题 一、问题背景及分析 (一)基本分析及实现 每个进程争抢地使用一种资源,其中若分配不当会导致死锁现象。 ​​ ‍ 基本实现: ​​ ‍ (二)避免死锁发生的三种方法(仍有很多种,这里仅作列举参考) (1)限制资源容量 可以对哲学家进程施加一些限制条件,比如最多允许四个哲学家同时进餐。这 阅读全文
posted @ 2024-11-08 09:33 Wind_730 阅读(231) 评论(0) 推荐(0)
摘要: 多生产者-多消费者问题 一、问题背景及分析 这里的“多”指种类多而不是数量多。多种生产者和多种消费者共享同一片缓冲区,且一种消费者只接受特定的一种生产者生产的产品。 ​​ ‍ 二、问题实现 ​​ 同样,实现互斥的 P 操作一定要在实现同步的 P 操作之后,否则可能引起“死锁”。 ‍ 三、问题思考 ( 阅读全文
posted @ 2024-11-08 09:32 Wind_730 阅读(70) 评论(0) 推荐(0)
摘要: 吸烟者问题 一、问题背景及分析 即“可以生产多种产品的单生产者和多消费者”的问题。生产者可生产 A/B/C 产品,每种产品都有各自的不同种消费者接受。 ​​ ​​ ‍ 注:这里的缓冲区容量为1,所以可以不设置 mutex 的互斥信号量(同一时刻,四个同步信号量中至多只有一个值为1) ‍ 二、问题实现 阅读全文
posted @ 2024-11-08 09:32 Wind_730 阅读(40) 评论(0) 推荐(0)
摘要: 信号量实现进程互斥、同步、前驱关系 ‍ ​​ ‍ ​​​ P、V 操作必须成对出现。缺少 P(mutex) 就不能保证临界资源的互斥访问。缺少 V(mutex) 会导致资源永不被释放,等待进程永不被唤醒。 ‍ 一、实现进程互斥 注:下图中的第一行对信号量的初始化只是简化写法,并不严格遵循结构体的相关 阅读全文
posted @ 2024-11-08 09:31 Wind_730 阅读(27) 评论(0) 推荐(0)
摘要: 生产者-消费者问题 ‍ ​​ ‍ 一、问题背景及分析 系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。(注:这里的“产品”理解为某种数据) 生产者、消费者共享一个初始为空、大小为 n 的缓冲区。 只有缓冲区没满时,生产者才能把 阅读全文
posted @ 2024-11-08 09:31 Wind_730 阅读(95) 评论(0) 推荐(0)
摘要: 信号量机制 1965年由荷兰学者 Dijkstra 提出 ​​ ‍ 一、概念 用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。 信号量甚实就是一个变量(可以是一个整数,也可以是更复杂的(数据结构)记录型变量),可以用一个信号量来表示系统中某种资源的 阅读全文
posted @ 2024-11-08 09:30 Wind_730 阅读(67) 评论(0) 推荐(0)
摘要: 互斥锁 备注:此处仅为简介,互斥锁、自旋锁以及其他锁需跳转至其他详细的解析 前两节介绍的几种算法和实现基本都属于自旋锁(while 忙等,不满足“让权等待”原则) ​​ ​​ 阅读全文
posted @ 2024-11-08 09:22 Wind_730 阅读(19) 评论(0) 推荐(0)
摘要: 进程互斥的硬件实现方法 ‍ ​​ ‍ 一、中断屏蔽方法 利用“开/关中断指令"实现(与原语的实现思想相同,即在某进程开始访问临界区到结束访问为止都不允许被中断,也就不能发生进程切换,因此也不可能发生两个同时访问临界区的情况)。 优点:简单、高效 缺点:不适用于多处理机;只适用于操作系统内核进程,不适 阅读全文
posted @ 2024-11-08 09:21 Wind_730 阅读(82) 评论(0) 推荐(0)
摘要: 进程互斥的软件实现方法 ‍ ​​ ‍ 一、单标志法 ​​ ​​ ‍ 二、双标志先检查法 ​​ ‍ 三、双标志后检查法 ​​ ‍ 四、Peterson算法 ​​ 理解:如同现实生活中的给红包的拉扯,谁最后说了客气话(在代码里即谁的while最先表现为true),谁就失去了资源 阅读全文
posted @ 2024-11-08 09:18 Wind_730 阅读(27) 评论(0) 推荐(0)
摘要: 进程同步与进程互斥 ‍ ​​ ‍ 一、进程同步 ——回顾:进程的异步性,指各并发执行的进程以各自独立的、不可预知的速度向前推进。 同步,亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的 阅读全文
posted @ 2024-11-08 09:15 Wind_730 阅读(43) 评论(0) 推荐(0)
摘要: 调度算法(一) (1)前言 此处列举的三种算法主要关心对用户的公平性、平均周转时间、平均等待时间等评价系统整体性能的指标,但是不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。 因此这三种算法一般适合用于早期的批处理系统,当然, FCFS 算法也常结合其他的算法使用,在现 阅读全文
posted @ 2024-11-08 09:06 Wind_730 阅读(57) 评论(0) 推荐(0)
摘要: 调度算法(二) (1)前言 比起早期的批处理操作系统来说,由于计算机造价大幅降低,因此之后出现的交互式操作系统(包括分时操作系统、实时操作系统等)更注重系统的响应时间、公平性、平衡性等指标。而这几种算法恰好也能较好地满足交互式系统的需求。因此这三种算法适合用于交互式系统。(比如 UNIX 使用的就是 阅读全文
posted @ 2024-11-08 09:06 Wind_730 阅读(46) 评论(0) 推荐(0)
摘要: 调度算法(三) 多级队列调度 ​​ 阅读全文
posted @ 2024-11-08 09:06 Wind_730 阅读(20) 评论(0) 推荐(0)
摘要: 调度算法 补充: 饥饿:某进程/作业长期得不到服务 响应比: $$ 响应比=\frac{等待时间+要求服务时间}{要求服务时间} $$ 调度算法(一) 先来先服务 FCFS 最短作业优先 SJF / 最短进程优先 SPF / 最短剩余时间优先 SRTN 最高响应比优先 HRRN ‍ 调度算法(二) 阅读全文
posted @ 2024-11-08 09:05 Wind_730 阅读(44) 评论(0) 推荐(0)