死锁和进程通信

资源分类

  • 可重用资源
    资源不能被删除,且任何时刻只能有一个进程使用
    可能出现死锁
    进程释放后,其他进程可以重用
  • 消耗资源
    可能出现死锁

死锁的条件

  • 互斥:不是共享资源,只能一个进程同时使用
  • 持有并等待:进程持有至少有一个资源,并在等待其他的资源
  • 非抢占:进程不会抢占其他资源
  • 循环等待:存在循环等待

处理死锁的办法:

  • 死锁预防:限制死锁的申请资源
  • 死锁避免:申请资源需要满足条件
  • 死锁检测和恢复

银行家算法

  • 银行家算法是著名的死锁避免算法

  • Need=Max-Allocation

  • 先用Max减去Allocation矩阵得到Need矩阵
  • 将Availabe向量与Need矩阵各行相比,找出比Availiable向量更小的行向量
  • 选择满足条件的一个行向量对应的进程,释放分配给他的资源
  • 更新Max和Allocation矩阵和行向量Available向量,重复上诉操作,得到安全序列


死锁检测

进程通信


信号


管道

消息队列



共享内存

OS学习笔记-20(清华大学慕课)死锁和进程通信相关推荐

  1. 【OS学习笔记】三十八 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----微型内核汇代码

    本文是以下几篇文章对应的微型内核代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式十 ...

  2. 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码

    本文是以下几篇文章对应的主引导扇区代码汇编代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十六 保护模式 ...

  3. 【OS学习笔记】三十二 保护模式九:分页机制对应的汇编代码之---内核代码

    本片文章是以下两篇文章: [OS学习笔记]三十 保护模式九:段页式内存管理机制概述 [OS学习笔记]三十一 保护模式九:页目录.页表和页三者的关系详解 对应的内核汇编代码. ;代码清单16-1;文件名 ...

  4. 【OS学习笔记】三十 保护模式九:段页式内存管理机制概述

    上几篇文章学习了任务切换相关知识,如下: [OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 今 ...

  5. 【OS学习笔记】二十八 保护模式八:任务切换对应的汇编代码之内核代码

    本汇编代码对应以下两篇文章对应的内核汇编代码: OS学习笔记]二十六 保护模式八:任务门-任务切换 [OS学习笔记]二十七 保护模式八:任务切换的方法之----jmp与call的区别以及任务的中断嵌套 ...

  6. 哈工大操作系统学习笔记十——信号量与死锁

    哈工大os学习笔记十(信号量与死锁) 文章目录 哈工大os学习笔记十(信号量与死锁) 一. 信号量临界区保护 1.为什么要保护信号量 2.临界区 3.保护信号量的方法 3.1 轮换法 3.2 标记法 ...

  7. 【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码

    本汇编代码是以下两篇文章讲解的内容的内核代码; [OS学习笔记]二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念 [OS学习笔记]二十四 保护模式七:调用门与依从的代码段----特权级保护 ...

  8. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  9. 【OS学习笔记】四十 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----动态加载的用户程序/任务二代码

    本文是以下几篇文章对应的微型动态加载的用户程序/任务二代码: [OS学习笔记]三十四 保护模式十:中断和异常区别 [OS学习笔记]三十五 保护模式十:中断描述符表.中断门和陷阱门 [OS学习笔记]三十 ...

最新文章

  1. 4项无线技术对比:谁更适合物联网领域?
  2. 文本分类实战(七)—— Adversarial LSTM模型
  3. DevExpress的XtraReport中的Report Bands介绍和使用心得(帮助文档)
  4. nextcloud php工程师,教你如何基于宝塔面板和nextcloud搭建自己的网盘
  5. Simulink之变压器隔离的直流-直流变换器
  6. redis——通过redis实现服务器崩溃等数据恢复
  7. javascript读取用户名和计算机名
  8. PHP百度收录量查询接口源码,PHP百度收录量查询接口源码
  9. 即使不会node.js,拖拽就可完成数据的可视化展示
  10. 搜狗开源最新NLP研究成果,打造业内最全机器阅读理解工具包SMRC
  11. 【渝粤教育】电大中专电子商务网站建设与维护_1作业 题库
  12. Matlab画图常用命令
  13. 如何朴实无华的双开微信?
  14. Win32Forth初学者指导-前言
  15. [功能改进]Ctrl+Enter直接提交评论
  16. 操作系统:文件共享的实现方法
  17. 数据仓库系列:初识数仓
  18. git使用报错:fatal: Couldn‘t find remote ref master的解决方法
  19. 解决IDEA中maven创建web项目时新建无jsp选择项
  20. 软件工程是不是教会不怎么会写程序的人开发软件?你的观点?

热门文章

  1. 英语语音篇 - 自然拼读
  2. 麦库记事如何导出html,麦库记事使用问题解答
  3. 爬虫开发入门:使用 Pyspider 框架开发爬虫
  4. Jupyter notebook中自定义支持天软TSl语言的魔术命令
  5. 内存马涉及基础知识整理
  6. 锁定td的高度_如何固定单元格的高度
  7. 电商如何利用API接口获取商品信息数据
  8. Python基础 F-03 函数-命名空间与作用域
  9. ubuntu下 vim工具的安装与使用教程(一)
  10. EPICS -- sequencer第一部分--介绍