操作系统--处理调度与死锁
2016-03-04 16:34
302 查看
1. 处理机的调度层次
(1) 高级调度,又称为作业调度或者长程调度,将作业调入内存
作业:除了程序和数据,还有一份作业说明书。批处理系统以作业为基本单位从外存调入内存的。
(2) 低级调度,又称为进程调度或者短程调度,调度对象是进程(或内核级线程)
进程调度的方式:非抢占式和抢占方式
非抢占式特点:实现简单,系统开销小,适用于大多数批处理系统
抢占式:防止长进程长时间占用,提供更公平的服务。开销较大
抢占式应满足的原则:优先权原则,短作业优先,时间片原则
(3) 中级调度又称为中程调度
把那些暂时不能运行的进程放到外存。当内存空闲,进程具备运行条件时,调入内存。
2. 调度方式和调度算法的若干准则
(1) 面向用户的准则
a. 周转时间短作业被提交到作业完成的时间包括:作业在外存等待调度的时间,进程在就绪队列等待调度的时间,在CPU上执行的时间,等待I/O时间
周转时间:从提交到完成的时间T
服务时间:作业运行的时间 Ts
带权周转时间:T/Ts
b. 响应时间快 用户提交一个请求开始,到系统首次响应的时间
c. 截止时间的保证必须完成的最迟时间
d. 优先权原则
(2) 面向系统的准则
a. 系统的吞吐量高单位时间内系统完成的作业数
b. 处理机利用率高
c. 各类资源的平衡利用
3. 调度算法
(1) 先来先服务(FCFS)适用于作业调度和进程调度,比较有利于长作业,不利于短作业
(2) 多作业优先(SJF)降低了平均等待时间,提高了系统吞吐量
对长算法不利,未考虑作业的紧迫程度,
(3) 非抢占式优先权算法主要用于批处理系统
(4) 抢占式优先权算法适用于严格的实时系统,以及对性能要求较高的批处理和分时系统
a. 优先权的类型静态优先权和动态优先权
b. 静态优先权是创建进程时确定的,而且在进程整个运行期间保持不变
确定优先权的依据:进程类型,进程对资源的需求,用户要求
特点:简单易行,系统开销小,但不够精确
c. 动态优先权优先权随着进程推进而改变
(5) 高响应比优先调度算法
优先权=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间
该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长时间得不到服务。计算响应比,会增加系统开销。
(6) 基于时间片的轮转调度算法
时间片的确定:选择小的时间片有利于段作业,但会频繁的发生中断,进程上下文切换,增加系统的开销。时间片很长,便成了先来先服务。所以时间片略大于一次典型的交互所需的时间合适。
a. 多级反馈队列调度算法
设置多个就绪队列,每个队列有不同的优先级。第一个队列优先级最高,其余队列优先权逐渐降低。优先权越高,执行的时间片越短,
当进程进入内存后,先放入第一队列末尾,时间片结束为完成,转到第二队列的末尾。
仅当第一队列空闲时,调度程序才调度第二队列中的进程运行。
4. 实时调度
最早截止时间优先(EDF)
最低松弛度优先(LLF) 根据任务的紧急(或松弛)程度,来确定任务的优先级。
5. 产生死锁的原因和必要条件
(1) 死锁:多个进程运行过程中因争夺资源而造成一种僵局
(2) 产生死锁的原因:竞争资源(多个进程共享资源,其数目不满足进程需要)
进程间推进顺序非法(请求和释放资源顺序不当)
(3) 产生死锁的必要条件
a. 互斥条件一段时间内某个资源只由一个进程占用
b. 请求和保持条件已经保持了至少一个资源,请求新的资源,而资源又被其他进程占用
c. 不可剥夺条件进程获得资源,在未使用完之前,不能被剥夺
d. 环路等待条件 发生死锁,必然存在一个进程---资源环形链
6. 处理死锁的基本方法
(1) 预防死锁破坏死锁产生必要条件的一个或几个
(2) 避免死锁资源动态分配过程中,用某种方法防止系统进入不安全状态
银行家算法
(3) 检测死锁
(4) 解除死锁撤销或者挂起一些进程
7. 预防死锁
(1) 一次性申请整个运行过程中所需的全部资源
特点:简单,易于实现很安全,资源被浪费严重,进程等待资源延时
(2) 当一个已经保持了某些资源的进程,再提出新的资源请求不能立即满足时,必须它已经保持的所有资源
特点:导致反复的申请和释放资源,进程被无限推迟增加了系统的开销,降低系统的吞吐量
(3) 所有资源按类型进行线性排队,并赋予不同的序号。
特点:资源利用率和系统吞吐量有明显的改善,分配序号限制了新设备的增加
8. 系统安全状态
安全状态:允许进程动态的申请资源,但系统在进行资源分配之前,应先计算资源分配的安全性,若此次分配不会导致系统进入不安全状态,则将资源分配给进程
9. 死锁的检测与解除
死锁的检测使用资源分配图
死锁的解除:剥夺资源,撤销进程
(1) 高级调度,又称为作业调度或者长程调度,将作业调入内存
作业:除了程序和数据,还有一份作业说明书。批处理系统以作业为基本单位从外存调入内存的。
(2) 低级调度,又称为进程调度或者短程调度,调度对象是进程(或内核级线程)
进程调度的方式:非抢占式和抢占方式
非抢占式特点:实现简单,系统开销小,适用于大多数批处理系统
抢占式:防止长进程长时间占用,提供更公平的服务。开销较大
抢占式应满足的原则:优先权原则,短作业优先,时间片原则
(3) 中级调度又称为中程调度
把那些暂时不能运行的进程放到外存。当内存空闲,进程具备运行条件时,调入内存。
2. 调度方式和调度算法的若干准则
(1) 面向用户的准则
a. 周转时间短作业被提交到作业完成的时间包括:作业在外存等待调度的时间,进程在就绪队列等待调度的时间,在CPU上执行的时间,等待I/O时间
周转时间:从提交到完成的时间T
服务时间:作业运行的时间 Ts
带权周转时间:T/Ts
b. 响应时间快 用户提交一个请求开始,到系统首次响应的时间
c. 截止时间的保证必须完成的最迟时间
d. 优先权原则
(2) 面向系统的准则
a. 系统的吞吐量高单位时间内系统完成的作业数
b. 处理机利用率高
c. 各类资源的平衡利用
3. 调度算法
(1) 先来先服务(FCFS)适用于作业调度和进程调度,比较有利于长作业,不利于短作业
(2) 多作业优先(SJF)降低了平均等待时间,提高了系统吞吐量
对长算法不利,未考虑作业的紧迫程度,
(3) 非抢占式优先权算法主要用于批处理系统
(4) 抢占式优先权算法适用于严格的实时系统,以及对性能要求较高的批处理和分时系统
a. 优先权的类型静态优先权和动态优先权
b. 静态优先权是创建进程时确定的,而且在进程整个运行期间保持不变
确定优先权的依据:进程类型,进程对资源的需求,用户要求
特点:简单易行,系统开销小,但不够精确
c. 动态优先权优先权随着进程推进而改变
(5) 高响应比优先调度算法
优先权=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间
该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长时间得不到服务。计算响应比,会增加系统开销。
(6) 基于时间片的轮转调度算法
时间片的确定:选择小的时间片有利于段作业,但会频繁的发生中断,进程上下文切换,增加系统的开销。时间片很长,便成了先来先服务。所以时间片略大于一次典型的交互所需的时间合适。
a. 多级反馈队列调度算法
设置多个就绪队列,每个队列有不同的优先级。第一个队列优先级最高,其余队列优先权逐渐降低。优先权越高,执行的时间片越短,
当进程进入内存后,先放入第一队列末尾,时间片结束为完成,转到第二队列的末尾。
仅当第一队列空闲时,调度程序才调度第二队列中的进程运行。
4. 实时调度
最早截止时间优先(EDF)
最低松弛度优先(LLF) 根据任务的紧急(或松弛)程度,来确定任务的优先级。
5. 产生死锁的原因和必要条件
(1) 死锁:多个进程运行过程中因争夺资源而造成一种僵局
(2) 产生死锁的原因:竞争资源(多个进程共享资源,其数目不满足进程需要)
进程间推进顺序非法(请求和释放资源顺序不当)
(3) 产生死锁的必要条件
a. 互斥条件一段时间内某个资源只由一个进程占用
b. 请求和保持条件已经保持了至少一个资源,请求新的资源,而资源又被其他进程占用
c. 不可剥夺条件进程获得资源,在未使用完之前,不能被剥夺
d. 环路等待条件 发生死锁,必然存在一个进程---资源环形链
6. 处理死锁的基本方法
(1) 预防死锁破坏死锁产生必要条件的一个或几个
(2) 避免死锁资源动态分配过程中,用某种方法防止系统进入不安全状态
银行家算法
(3) 检测死锁
(4) 解除死锁撤销或者挂起一些进程
7. 预防死锁
(1) 一次性申请整个运行过程中所需的全部资源
特点:简单,易于实现很安全,资源被浪费严重,进程等待资源延时
(2) 当一个已经保持了某些资源的进程,再提出新的资源请求不能立即满足时,必须它已经保持的所有资源
特点:导致反复的申请和释放资源,进程被无限推迟增加了系统的开销,降低系统的吞吐量
(3) 所有资源按类型进行线性排队,并赋予不同的序号。
特点:资源利用率和系统吞吐量有明显的改善,分配序号限制了新设备的增加
8. 系统安全状态
安全状态:允许进程动态的申请资源,但系统在进行资源分配之前,应先计算资源分配的安全性,若此次分配不会导致系统进入不安全状态,则将资源分配给进程
9. 死锁的检测与解除
死锁的检测使用资源分配图
死锁的解除:剥夺资源,撤销进程
相关文章推荐
- XAlign:用于代码对齐的Xcode插件
- 十、装饰(Decorator)模式 --结构模式(Structural Pattern)
- Java大数练习
- Lua中的面向对象[2]:使用指针
- Synchronized和ThreadLocal使用的比较
- android制作.9png图片
- C++ stringstream的使用 类型转换以及字符分离(功能类似split)
- 图像特征提取2—HOG特征
- viewpager+fragment,类似微信
- Selenium启动Chrome时,加载用户配置文件
- 生成一个随机的范围数
- Session对象实例
- 【MySQL新手必看】百宝云的MySQL数据库基础知识
- c#获取客户端信息
- gerrit reindex
- [前端插件]Bootstrap Table服务器分页与在线编辑应用总结
- 作业 c++编写
- Android数据存储实现的5大方式
- Javase02标识符,关键字和基本数据类型
- goaccess分析nginx日志