当前位置: 首页 > news >正文

死锁、线程总结

产生死锁的原因及处理策略

1)产生死锁的原因

死锁是指两个以上的进程互相都要求使用对方已经占有的资源而导致无法继续运行下去的现象。

产生死锁的主要原因是,系统缺少足够的资源供进程使用,对互斥资源的共享与并发执行的顺序不当,以及资源分配不当。

产生死锁的4个必要条件如下: (1)互斥条件。任一时刻只允许一个进程使用资源。 (2)不剥夺条件。进程已经占用的资源,不会被强制剥夺。 (3)请求与保持条件。进程在请求其余资源时,不主动释放已经占有的资源。 (4)环路条件。环路中每一条边是进程在请求另一个进程已经占有的资源。

2)死锁的处理策略

死锁的处理策略主要有4种:鸵鸟策略(即不理睬策略)、预防策略、避免策略和检测与解除死锁。 (1)死锁预防。死锁预防是采用某种策略限制并发进程对资源的请求,破坏死锁产生的4 个必要条件之一,使系统在任何时刻都不满足死锁的必要条件。

预防死锁的两种策略如下:

● 预先静态分配法。破坏了“不可剥夺条件”,预先分配所需资源,保证不等待资源。该方法的问题是降低了对资源的利用率,降低进程的并发程度;有时可能无法预先知道所 需资源。

● 资源有序分配法。破坏了“环路条件”,把资源分类按顺序排列,保证不形成环路。该 方法存在的问题是限制进程对资源的请求;因资源排序占用系统开销。

(2)死锁避免。死锁避免是设法破坏产生死锁的4个必要条件之一,严格防止死锁的产生。 死锁避免则不那么严格地限制产生死锁的必要条件。

线程

传统的进程有两个基本属性:可拥有资源的独立单位;可独立调度和分配的基本单位。

引入线程的原因是进程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中 设置的进程数目不宜过多,进程切换的频率不宜太高。 引入线程后,将传统进程的两个基本属性分开,线程作为调度和分配的基本单位,进程作为独立分配资源的单位。用户可以通过创建线程来完成任务,以减少程序并发执行时付出的时空开销。例如,在文件服务进程中可设置多个服务线程,当一个线程受阻时,第二个线程可以继续运行,当第二个线程受阻时,第三个线程可以继续运行……从而显著地提高文件系统的服务质量及系统的吞吐量。这样,对于拥有资源的基本单位,不用频繁地切换,进一步提高了系统中各程序的并发程度。

线程也具有就绪、运行和阻塞3种基本状态。线程可创建另一个线程,同一个进程中的多个线 程可并发执行。

相关文章:

  • 批量调用接口(ApiFox + Postman)
  • 【记录】Ubuntu挂载硬盘
  • ArcGIS Pro无插件加载(无偏移)天地图!一次添加长久使用
  • Langchain入门指南:一次讲清基本用法
  • jenkins打包问题jar问题
  • django 调用paramiko 向windows 上传文件
  • linux基础重定向及组合重定向
  • SCADA技术与市场全景解析
  • vue3 - 自定义hook
  • Jenkins 会被完全取代吗?
  • FPGA基础 -- Verilog门级建模之奇偶校验电路
  • 创建postgres数据库失败
  • 【PDF提取表格】批量提取PDF里的内容保存到Excel表格,批量提取PDF文档中的信息到Excel的具体步骤和注意事项
  • [neo4j]neo4j-community-5.26.0-windows的安装
  • 游戏技能编辑器开发完全指南系统架构设计之技能编辑器整体架构
  • MacOS上MySQL的安装以及使用
  • python2.7+flask1.1.4+SQLAlchemy1.3.0+Flask-SQLAlchemy2.1连接mysql稳定方式
  • 二分算法深度解析
  • AI大模型初识(一):AI大模型的底层原理与技术演进
  • 【Linux驱动开发 ---- 2.1_深入理解 Linux 内核架构】
  • 网站设计定制/免费二级域名注册申请
  • 金华住房和城乡建设部网站/能去百度上班意味着什么
  • 个人又什么办法做企业网站/优化设计五年级上册语文答案
  • 西安住房建设局网站首页/百度指数查询移动版
  • 做网站如何写需求/长沙百度网站推广
  • 视频网站建设报价单/网络营销活动策划方案模板