进程调度及其算法
来源:互联网 发布:程序员的数学3 编辑:程序博客网 时间:2024/06/09 19:09
1、进程调度用来做什么?
(1)进程调度记录者系统中所有进程的有关情况和状态特征
(2)进程调度负责从就绪队列中选取一个就绪进程、分配给CPU并决定它运行多长时间。
(3)在进程的开始和结速阶段,进程调度实施处理机的分配与回收、修改PCB表项等。
2、什么时候发生进程调度?
(1)当新进程建立时,调度算法可以合理地选择运行父进程或者子进程。
(2)在有进程退出时,必须从就绪队列中引入新进程,如果就绪队列为空,通常运行系统提供的空闲进程。
(3)当一个进程因为I/O阻塞或其他原因阻塞时,必须选择另一个进程。
(4)在分时系统中,如果时间片用完,也要进行调度。
3、进程调度方式
(1)抢占式调度。指的是当一个进程进行时,系统可以根据规定的原则剥夺它的CPU并分配给新进程。常用的原则有1、高优先级进程剥夺低优先级进程;2、CPPU时间片用完后CPU被剥夺;3、当有更短的进程或线程就绪时,CPU被剥夺;4、强制性剥夺原则。
(2)非抢占式调度。
4、进程调度算法
(1)先到先服务(FCFS)算法。FCFS算法就是每次从就绪队列中选择一个最先进入该队列的进程,把CPU分配给它。
(2)时间片轮转(TRR)算法。TRR算法主要用于分时系统中的进程调度。每当执行进程调度时,总是从就绪队列队首选出进程,让它在CPU上运行一个时间片的时间,当进程用完它的时间片之后,系统计时器发出时钟中断,该进程停止并被放到就绪队列的队尾,然后CPU分配给下一个进程,重复以上过程。就像我们打牌一样,轮到你,你才能出牌,然后下手的人依次出牌,转一圈后,又回到你出牌,如此往复。
(3)高优先级优先调度算法。该算法的原则是“重要的事先办”,利用优先级调度算法时,给每一个进程确定一个优先级,调度时,从就绪队列中选出优先级最该的进程,把CPU分配给它。但这有一个问题,如果在进程运行过程中出现比当前进程优先级更高的进程怎么办?这就涉及到‘抢占式优先级’和‘非抢占式优先级’。非抢占式优先级类似于“你打完电话,他再打电话”,当前进程会一执行下去,直到任务完成后再让出CPU。抢占式优先级类似于“不等你说完,他就抢过电话”。当前进程遇到更高优先级的进程时,CPU被强行剥夺分配给给高优先级的进程。
你可能会问,进程的优先级是分配完就不再改变还是一直动态改变?其实这两种情况都有。静态优先级是在创建进程时就确定的,并不再改变。动态优先级则是随着进程的推进而不断改变的。比如,进程由已占有CPU时间的长短决定,一个进程已占有CPU时间越长,优先级越低;另外,进程还可以由等待CPU的时间来决定,等待时间决定,等待越久,优先级越高。
5、进程调度过程
1、“下降”进程。在进程重新调度时,当前进程被中断(“下降”进程),并把进程的现场信息发送到“下降”进程的PCB中。
2、“上升”进程。按照处理机的调度算法从就绪队列中选择一个进程,准备让它运行。
3、恢复“上升”进程。由于进程下降时已将现场信息保存到响应的PCB中,进程上升时则应由其PCB中的信息来恢复现场。
- 进程调度及其算法
- 【操作系统】进程调度及其算法
- 最常见的进程调度算法及其实现
- 操作系统--进程概念及其调度
- 进程调度算法
- 进程调度算法
- 进程优先级调度算法
- 进程调度算法
- 进程调度模拟算法
- 进程调度算法程序
- 进程调度算法
- 进程调度算法
- 进程调度算法
- 操作系统进程调度算法
- 进程调度算法
- 进程调度算法
- 进程调度算法例题
- 进程调度算法
- 线程
- Fragment与ViewPager实现页面滑动翻页
- 移动app用户体验与性能优化
- 蓝桥杯:字符串对比
- POJ百炼-2742-统计字符数
- 进程调度及其算法
- 模拟电话拨号器数字界面 以及跳转到拨打界面
- JNI初探
- iOS中集合的互相转换
- matlab 中的load介绍
- 『AngularJS』$location 服务介绍(1)
- Java垃圾回收机制
- SQL Server 2008 R2 完全卸载与重新安装
- Linux C++ 跟踪程序奔溃及函数调用关系