SCAU操作系统知识点之(六)并发:死锁和饥饿

1、死锁原因:竞争资源、进程推进顺序不当
2、资源分配图(若死锁,则资源分配图中必有环路,但有环路时不一定死锁)

3、死锁的四个必要条件

①互斥
②占有且等待
③不可抢占
④循环等待

在死锁的四个必要条件中,破坏____A_____条件是不太实际的。
A. 互斥 B. 不可抢占 C. 占有并等待 D. 循环等待

4、三种处理方法:预防,避免,检测和恢复

①死锁预防:通过运用某种策略来消除产生死锁的四个必要条件之一,来保证不让死锁状态出现。
②死锁避免:通过限制进程启动或资源分配,来保证不让死锁状态出现。
③死锁检测:检测允许死锁出现,定期检测死锁的存在并从死锁中恢复出来。检测到死锁时,将系统从死锁状态中恢复的方法可以是:杀死进程和抢占资源.

在下列死锁的解决方法中,属于死锁预防策略的是____BC____。
A. 银行家算法 B. 资源有序分配 C. 剥夺资源 D. 资源分配图化简
解:银行家算法属于死锁避免策略;资源有序分配、剥夺资源属于死锁预防策略;资源分配图化简属于死锁检测(一个图可完全简化,则不会产生死锁。)

5、银行家算法:要求能够判断现在是否安全,某进程请求资源是否能够满足。

数据结构:
Available:当前空闲的资源数。
Claim:进程对某资源的最大需求量。
Allocation:进程已经分配的资源数。
Need:还需要的资源数。
Need=Claim-Allocation
已分配的资源数+当前空闲的资源数不能大于总的资源数。

安全性算法:用于确定计算机系统是否处于安全状态。
简单理解:Work可以理解成空闲的资源数,后面进程使用后的资源要释放回去。所以是Work:=Work+Allocation。
1)设Work和Finish分别是长度为m和n的向量,初始化
  Work:=Available,Finish[i]=false(i=1,2…n)
2)查找 i 使其满足
  a.Finish[i]=false
  b.Needi<=Work
  若没有这样的i存在,转到4)
3)Work:=Work+Allocation
  Finish[i]:=true
  返回到2)
4)如果对所有i,Finish[i]=true,则系统处于安全状态。

资源请求算法:
设Requesti 为进程Pi的请求向量

  1. 如果Requesti <= Needi ,那么转到第2)步。否则,产生
    出错条件,因为进程已超过了其请求。
  2. 如果Requesti <=Available,那么转到第3)步。否则,
    Pi等待,因为没有可用资源。
  3. 假定系统可以分配给进程Pi 所请求的资源,并按如下方式
    修改状态:
    Available:= Available – Requesti ;
    Allocationi := Allocationi + Requesti ;
    Needi := Needi – Requesti ;
  4. 调用安全性算法确定新状态是否安全
    安全—操作完成且进程Pi分配到其所需要的资源
    不安全—进程Pi必须等待,并将数据结构恢复到原状态(即 3)的逆操作

题一:在这里插入图片描述
问题:
(1)验证可用资源向量的正确性。
(2)计算需求矩阵
(3)指出一个安全的进程序列来证明当前状态的安全性。同时指出每个进程结束时可用向量资源向量的变化情况。
(4)假设P5请求资源(3,2,3,3),该请求应该被允许吗?请说明理由。

1)验证Allocation+Availabel是否等于资源总数。
   2+0+4+1+1+1+6=15
   0+1+1+0+1+0+3=6
   2+1+0+0+0+1+5=9
   1+1+2+1+0+1+4=10
因此,可用资源向量正确。
2)需求矩阵如下:

Need(A、B、C、D)
P07 5 3 4
P12 1 2 2
P23 4 4 2
P32 3 3 1
P44 1 2 1
P53 4 3 3

3)判断是否为安全序列的表格有四个部分,Work、Allocation、Need、Work+Allocation、Finish.
Work首先存放的是空闲资源,且放在第一个其资源数比Need所需资源数大的进程中。一个进程结束,得到的Work和Allocation的值的和要放在第二个Work里,依次类推,看最后是否所有进程都能得到需要的资源,若能,则为安全序列。

在这里插入图片描述
系统处于安全状态,存在安全序列<P1,P2,P3,P4,P5,P0>

4) P5请求资源Request(3, 2, 3, 3), 执行银行家算法:
在这里插入图片描述

6、用信号量解决不死锁的哲学家就餐问题

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380126.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Monge矩阵

Monge矩阵 对一个m*n的实数矩阵A&#xff0c;如果对所有i&#xff0c;j&#xff0c;k和l&#xff0c;1≤ i<k ≤ m和1≤ j<l ≤ n&#xff0c;有 A[i,j]A[k,l] ≤ A[i,l]A[k,j] 那么&#xff0c;此矩阵A为Monge矩阵。 换句话说&#xff0c;每当我们从矩阵中挑…

2.0 Maven基础

1. Maven概述 Maven概念 Apache Maven是一个软件项目管理工具&#xff0c;将项目开发和管理过程抽象程一个项目对象模型&#xff08;POM&#xff0c;Project Object Model&#xff09;。 Maven作用 项目构建 提供标准的、跨平台的自动化项目构建方式。 依赖管理 方便快捷…

字符转ASCII码

一、问题描述 二、代码内容 三、代码解释 # include <iostream> #include <cstdio> using namespace std; int main() { char a;//存放字符a scanf("%d",&a);//输入字符a printf("%d",a);//输出a对应的ASCII码 return 0&#xff1b; …

字符转 ASCII 码

字符转 ASCII 码 //字符转 ASCII 码//1.如下是转换单个字符 //#include <stdio.h> //int main() //{ // char c; // printf("输入一个字符: "); // // // 读取用户输入 // scanf("%c", &c); // // // %d 显示整数 // …

java字符与ASCII码相互转换

java字符与ASCII码相互转换 一 、遍历字符串二、 java 字符 转换 ASCII码三、 java ASCII码 转换 字符 字符串&#xff1a; String s "abcdefg";一 、遍历字符串 public static void main(String[] args) {String s "abcdefg";// 遍历字符串 for (i…

【LeetCode】45. 跳跃游戏 II - 贪婪算法

目录标题 2023-8-11 09:49:25 45. 跳跃游戏 II 2023-8-11 09:49:25 自己没做出来&#xff0c;废物Orz class Solution {public int jump(int[] nums) {int length nums.length;int end 0;int maxPosition 0;int steps 0;for (int i 0; i < length - 1; i) {maxPosit…

docker-compose redis 一直启动失败

环境&#xff1a; centos 8.x 背景 使用docker-compose 来启动redis docker-compose.yml 如下&#xff1a; version: 3.3 services:redis:image: redis:latestrestart: alwayscontainer_name: redisports:- 6379:6379volumes:- ./data:/redis/data- ./redis.conf:/redis/re…

用什么软件抓cd音轨音质最好_开车不嗨皮,那跟咸鱼有什么区别

文 | 大青枣 图 | 潘隐 跑长途是件很无聊的事情&#xff0c;看着车窗外的车水马龙&#xff0c;想到接下来的漫漫长路&#xff0c;立马就想打盹。 但正所谓行车不规范&#xff0c;亲人两行泪。所以为了让能够安全并快乐的从A点到B点。司机和主机厂都会给车里配备一些娱乐系统&am…

群晖DS Video支持DTS音轨(最新解决方案)

目录 一、前言 二、实现 1、下载ffmpeg的DTS支持包 2、安装ffmpeg 3、使用新的ffmpeg覆盖默认版本 4、开启DTS支持 5、可能存在的问题与解决办法 三、惯例 一、前言 最近突然在网上找到了一篇文件提供了DTS音轨的支持方法。于是去尝试了一下&#xff0c;居然真行。于是…

用tsMuxeR GUI给ts视频添加音轨

收藏比赛的都应该知道&#xff0c;高清的直播流录制了后一般是ts或者mkv封装&#xff0c;前者用tsMuxeR GUI可以对视频音频轨进行操作&#xff0c;后者用mkvtoolnix&#xff0c;两者都是无损操作。 至于其他格式就不考虑了&#xff0c;随便用其他的工具&#xff0c;因为本身是有…

Android多媒体(一) 音轨合成 我用双手成就你的梦想

近期需要做音轨合成这样一个功能&#xff0c;何为音轨合成&#xff0c;说白了就是N个音频文件合成一个&#xff0c;同时播放N个声音。然而网上各种找代码&#xff0c;并没有一个能用的&#xff0c;最后终于找到一个外国大神写的合音工具类&#xff0c;稍加修改便成了自己的东西…

FFMpeg 实现从视频中提取音轨

近期由于项目需要&#xff0c;要实现以下功能&#xff1a;将视频中的音轨提取出来&#xff0c;也就是只保留音频部分&#xff0c;以便于后期对于声音的处理。 我选择的工具是 FFMpeg &#xff0c;环境&#xff1a;win7 首先&#xff0c;从官网上下载FFMpeg的文件包&#xff0c;…

html5音轨的提取,(图文)mkv音轨提取软件 如何提取mkv中的音轨

很多人都知道&#xff0c;MKV是个“组合”和“封装”的格式&#xff0c;换句话说就是一种容器格式。最大的特点就是能容纳多种不同类型编码的视频、音频及字幕流。现在流行的高清电影一般都是MKV格式&#xff0c;里面可能包含有多个音轨&#xff0c;方便我们在播放视频时选择需…

html5音轨字幕,(图解)如何修改mkv默认音轨和字幕

平常有下载一些MKV双语电影在家里看,一般播放时电影默认播放外语加中文字幕,不过家里老爸老妈听不懂外语,所以每次看片时我还要手动切换音轨变成国语的。要是可以修改mkv的默认音轨或字幕就好了,于是我就找出了以下修改mkv默认音轨和字幕的解决方案,顺便分享一下,也许能帮…

前后端分离------后端创建笔记(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

提取视频多音轨: 魔力玄(Medlexo) V9.7 (2023-01-31更新)

软件名称 (Windows) 魔力玄(Medlexo) 一句简介 假如一个视频144mb&#xff0c;改后缀等于没转换。如果真正提取音轨&#xff0c;就能得到没转换过的原音轨&#xff0c;大小可能才4mb。 这是一个ffmpeg 以及 yt-dlp 图形化软件&#xff0c;这个工具大小3mb&#xff0c;可以一…

yama搜集的超超…全的下载音效的网站,持续更新

yama有时间就会更新搜集的音效下载网站&#xff0c;哼唧~ 1.Find Sounds.com 一个免费网站&#xff0c;用于在网上查找声音效果。它是一个网络搜索引擎。提供强大的功能&#xff0c;简单易用&#xff0c;我们平时找音频资源的时候就可以到这个网站找你需要的资源&#xff0c;…

RTT(RT-Thread)线程间同步(保姆级)

目录 线程间同步 信号量 信号量结构体 信号量的使用和管理 动态创建信号量 实例 静态创建信号量 初始化和脱离信号量 获取信号量 信号量的互斥操作 获取信号量函数 释放信号量 信号量同步实例 互斥量&#xff08;互斥锁&#xff09; 互斥量的使用和管理 动态创…

【网络编程·网络层】IP协议

目录 一、IP协议的概念 二、IP协议的报头 1、四位首部长度 2、16位总长度&#xff08;解包&#xff09; 3、8位协议&#xff08;分用&#xff09; 4、16位首部校验和 5、8位生存时间 6、32位源IP和32位目的IP 7、4位版本/8位服务类型 8、16位标识 9、3位标志 10、1…

无涯教程-Perl - lock函数

描述 此函数将咨询锁放在共享变量或THING中包含的引用对象上,直到该锁超出范围。 lock()是一个"弱关键字":这意味着,如果您在调用该函数之前已通过该名称定义了该函数,则将改为调用该函数。 语法 以下是此函数的简单语法- lock THING返回值 此函数不返回任何值…