![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
Beam_WA
目标是星辰大海和祖国繁荣复兴
展开
-
银行家算法
银行家算法是最著名的避免死锁的办法,它的思想是:把操作系统视作银行家,操作系统管理的资源视作银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家进行贷款。操作系统按照银行家制定的规则为进程分配资源。进程运行之前先声明对各种资源的最大需求量,当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程声明的最大需求量。若超过则拒绝分配资源,若未超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。你可能对此段文字原创 2020-11-11 15:36:53 · 3478 阅读 · 0 评论 -
操作系统之死锁
在看死锁之前,先来看一张表格,这张表格对死锁,饥饿和死循环做了共同点和不同点的概述。 共同点 区别 死锁 都是进程无法顺利向前推进的现象(故意设计的死循环除外) 死锁一定是“循环等待对方手里的资源”导致的,因此如果有死锁现象,那至少有两个或两个以上的进程同时发生死锁。另外,发生死锁的进程一定处于阻塞态。 饥饿 可能只有一个进程发生饥饿。发生饥饿的进程既可能是阻塞态(如长期得不到需要的I/O设备),也可能是就绪态(长期得不到处理机) 死循环 可能只有一个进.原创 2020-11-11 14:05:43 · 725 阅读 · 0 评论 -
经典进程同步问题——吸烟者问题
吸烟者问题是为了解决“可以生产多个产品的单生产者”问题提供了一个思路。问题描述:有三个抽烟者和一个供应者。每个抽烟者不停地卷烟抽,组成一根烟需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个有烟草,第二个有纸,第三个拥有胶水。供应者无限地提供三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,那么供应者可以继续提供另外两种材料,如此重复(让三个抽烟者轮流地抽烟)。问题分析:关系分析。供应者与三个抽烟者分别是同步关系。供应着无法同时满足原创 2020-11-10 19:51:49 · 3514 阅读 · 2 评论 -
经典进程同步问题——哲学家进餐
问题描述:一张圆桌上坐着5名哲学家,每两名哲学家之间的桌上摆着一根筷子,两根筷子中间是一碗米饭,如图所示(图来自于王道操作系统课本)。哲学家只会思考和进餐,哲学家在思考时,并不影响其他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根拿起)。若筷子在其他人手上,则需等待。饥饿的哲学家只有同时拿起两根筷子才可以开始进餐,进餐完毕后,放下筷子继续思考。问题分析:关系分析。5名哲学家与左右邻居对其中间的筷子是互斥的,因为我拿了,你就没有办法拿,中间筷子只有一根。 整理思路。这个问题的关.原创 2020-11-10 19:32:56 · 768 阅读 · 0 评论 -
经典进程同步问题——读者写者
读者-写者问题问题描述:有读者和写者两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但是如果某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。简单来说,你可以一个文档打开好多,但是你不能边读边写。从上述来看,得满足以下几个要求。①允许多个读者可以同时对文件执行读操作;②只允许一个写着往文件中写信息。③任一写着再完成写操作前不允许或其他读者或写者工作;④写者执行写操作前,应让已有的读者和写着全部退出。问题分析:关系原创 2020-11-10 15:30:41 · 1127 阅读 · 0 评论 -
经典进程同步问题——生产者消费者(多生产者多消费者)
生产者-消费者问题问题描述:一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区,只有缓冲区没有满的时候,生产者才能把消息放入缓冲区,否则得等待缓冲区空闲出来;只有缓冲区不空的时,消费者才能从缓冲区取出消息,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或一个消费者取出消息。问题分析:关系分析。生产者消费者是互斥关系,同时它们也是相互协作的关系,只有生产者生产了,消费者才能消费,它们也是同步关系。 整理思路。只有生产者和消费者两个进程,正好这两个是互斥和同步的关系原创 2020-11-10 14:42:31 · 4452 阅读 · 0 评论 -
操作系统之管程
管程的出现是一种进程同步工具。管程的特性保持了进程互斥,无须程序员自己实现互斥,从而降低了死锁发生的可能性。同时管程提供了条件变量,可以让程序员灵活地实现进程同步。管程有点类似于在面向对象时候学习到的类。管程有四个部分组成:①管程的名字②局部于管程内部的共享结构数据说明;③对该数据结构进行操作的一组过程(可以理解为函数)④对局部于管程内部的共享数据设置初始值的语句。可能通过文字来看不是很明白,下面举个生产者消费者的例子(生产者消费者是经典的进程同步问题,这里只做简述,详细的内容可原创 2020-11-09 20:19:47 · 567 阅读 · 0 评论 -
操作系统之信号量机制
信号量机制可用来解决互斥与同步问题,它只能被两个标准原语(执行过程中不可以被中断,通常可由硬件来实现)wait(S)和signal(S)访问,也可以记作“P操作(wait)”和“V操作(signal)”。原语的操作类似TestAndSet,Swap和关中断在我的另一篇文章有写到《操作系统之进程同步问题》中有叙述到。原语之所以不能被中断,是因为原语对变量的操作过程如果被打断,可能会去允许另一个对同一变量的操作过程,从而出现临界段问题。若能够找到一种解决临界段问题的元方法(原语),就可以实现对共享变量操原创 2020-11-09 19:47:55 · 1503 阅读 · 0 评论 -
操作系统之进程同步问题
目录1.进程同步的基本概念①临界资源②同步③互斥2.实现临界区互斥的基本方法①软件实现算法一:单标志法。算法二:双标志法先检查。算法三:双标志法后检测。算法四:Peterson’s算法。②硬件实现方法中断屏蔽方法硬件指令方法本文需要了解的问题有以下几个为什么要引入进程同步的概念 不同的进程之间会存在什么样的关系 会遇到怎么样的问题关于信号量和管程单独开一篇文章1.进程同步的基本概念在多道程序环境下,进程是并发执行的,每个进程之间都存在原创 2020-11-09 15:23:19 · 1748 阅读 · 0 评论