调度与死锁

简介: 调度与死锁

调度与死锁

  • 调度类型与准则
  • 高级调度(作业调度):进程的创建一i退出
  • 中级调度(对换调度):挂起状态的切换
  • 低级调度:进程基本三状态
  • 进程调度方式:
  • 不可剥夺方式
  • 绝不允许其它进程抢占正在运行进程的处理机
  • 优点:实现简单,开销小
  • 缺点:难以满足紧急任务的进程调度
  • 可剥夺方式
  • 能够满足优先权选择
  • 进程调度的时机
  • 进程退出
  • 进程阻塞
  • 进程创建/进程阻塞/时钟中断
  • 进程的性能准则
  • 周转时间:服务时间+等待时间
  • 带权周转:周转时间/服务时间
  • 调度算法
特点 FCFS SPN SRT HRRN RR Priority MFQ
调度方式 不可剥夺 不可剥夺 可剥夺 均可 可剥夺 均可 可剥夺
吞吐量 不突出 时间片短,则吞吐量低 不强调 可剥夺
响应时间 有时可能高 短进程响应时间比较高 较高 较高
系统开销 最小 较高 较高 较高 较小 较高 较小
对进程影响 对短进程不利 对长进程不利 对长进程不利 较好平衡进程 对I/O频繁的进程不利 较好平衡进程 可能对I/O频繁进程有利
饿死问题 可能 可能 可能 可能
  • 死锁的定义
  • 死锁可以定义为一组竞争系统资源或相互通信的进程互相的永久阻塞。若无外力作用,则这组进程永远不能继续执行。
  • 死锁产生的原因
  1. 资源不足
  2. 不合法的进程推进次序
  • 死锁产生的必要条件
  • 互斥条件
  • 请求和保持
  • 不可剥夺条件
  • 环路条件
  • 死锁的避免
  • 由于死锁的预防中,存在许多问题。而采用避免死锁
  • 避免死锁就是动态的决定是否允许进程当前的资源请求。避免死锁采用资源分配的动态拒绝策略
  • 什么时安全序列?
  • 至少存在一个安全序列<P1,P2,P3.......>,按照这个序列为进程分配所需要的资源。直到满足最大需求,使每个进程可以顺利完成。若系统不存在一个这样的序列,则系统处于不安全状态。
  • 避免死锁的实质就是如何使系统不进入不安全状态
  • 银行家算法
  • 由资源请求、安全检测两部分构成
  1. 首先检测本次请求资源是否满足系统资源总量
  2. 当前系统是否由足够资源来分配给本次请求
  3. 进行安全检测
目录
相关文章
|
算法 Unix 调度
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
【OSTEP】调度: 多级反馈队列 (MLFQ) | 优先级提升 | 饥饿问题 | 愚弄调度问题 | MLFQ 调优
413 0
|
并行计算 安全 Java
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
深入理解Java并发编程:并行与并发、进程与线程、优先级、休眠与让步
321 0
|
3月前
|
算法 Unix Linux
linux线程调度策略
linux线程调度策略
77 0
|
4月前
|
消息中间件 算法 Java
(十四)深入并发之线程、进程、纤程、协程、管程与死锁、活锁、锁饥饿详解
本文深入探讨了并发编程的关键概念和技术挑战。首先介绍了进程、线程、纤程、协程、管程等概念,强调了这些概念是如何随多核时代的到来而演变的,以满足高性能计算的需求。随后,文章详细解释了死锁、活锁与锁饥饿等问题,通过生动的例子帮助理解这些现象,并提供了预防和解决这些问题的方法。最后,通过一个具体的死锁示例代码展示了如何在实践中遇到并发问题,并提供了几种常用的工具和技术来诊断和解决这些问题。本文旨在为并发编程的实践者提供一个全面的理解框架,帮助他们在开发过程中更好地处理并发问题。
|
6月前
|
算法 调度
3.处理机调度与死锁
3.处理机调度与死锁
|
6月前
|
监控
写一个线程来监控各线程是否发生阻塞
写一个线程来监控各线程是否发生阻塞
61 0
|
设计模式
【并发技术04】线程技术之死锁问题
【并发技术04】线程技术之死锁问题
|
Java 调度
Java线程的调度及线程的优先级
Java线程的调度及线程的优先级
74 0
Java线程的调度及线程的优先级
|
算法 调度
进程调度策略有哪几种
进程调度策略有哪几种
170 0
|
Java 调度
Java并发编程之调度线程池
Java并发编程之调度线程池
327 0