死锁问题
1.死锁是指多个进程之间相互等待对方的资源,而在得到对方资源之前又不释放自己的资源所造成的循环等待的现象。
2.死锁产生的根本原因在于系统提供的资源少于并发进程所要求的该类资源数。
3.死锁产生的必要条件
(1)互斥条件:即一个资源每次只能被一个进程使用。
(2)保持与等待条件:有一个进程已经获得了一些资源,但因请求其他资源被阻塞时,对已经获得的资源保持不放。
(3)不可抢占条件:有些系统资源是不可抢占的,当某个进程已获得这种资源后 ,系统不能强行收回,只能由进程使用完自己释放。
(4)循环等待条件:若干个进程形成环形链,每个都占用对方要申请的下一个资源。
银行家算法
1.银行家算法是指在分配资源之前先看清楚资源分配后是否会导致系统死锁,如果会死锁,则不分配,否则就分配。
2.按照银行家算法的思想,当进程请求资源时,系统将按如下原则分配资源:
(1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
(3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有效的时间里得到资源。
(4)当系统中现有的资源能满足进程尚需资源数时,必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。
解决死锁的策略
1.死锁预防:破坏导致死锁必要条件中的任意一个就可以预防死锁。例如,要求用户申请资源时一次性申请所有的资源,这就破坏了保持和等待条件。预防通常会降低系统的效率。
2.死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全,例如:使用银行家算法。死锁避免算法的执行会增加系统的开销。
3.死锁检测:死锁预防和避免都是事前措施,而死锁的检测则是判断系统是否处于死锁状态,如果是,则执行死锁解除策略。
4.死锁解除:这是与死锁检测结合使用的,它使用的方式就是剥夺。即将,某进程所拥有的资源强行收回,分配给其他的进程。
管程与进程
1.管程由管程名、局部子管程的变量说明、使用共享资源并在数据集上进行操作的若干过程、对变量赋初值的语句等4个基本部分组成。
2.每一个管程管理一个临界资源,当有几个进程调用某管程时,仅允许一个进程进入管程,其他调用者必须等待,也就是申请进程必须互斥地进入管程。
3.线程是进程的活动部分,是处理器分配资源的最小单位,它可以共享进程的资源与地址空间。
标签:知识点,管程,系统,算法,死锁,进程,资源 From: https://blog.51cto.com/BADAOLIUMANGQZ/6115514