调度
I/O密集型
输入的比较多吧,等待I/O操作比较多
计算密集型
使用cpu的此时比较多
时钟中断分类
非抢占式
阻塞就一直等到阻塞结束,不会有其他程序来占用当前cpu,或者是该进程释放cpu,当处理完进程如果没有
抢占式
抢占式,选择一个进程,将起运行到时间的最大值,就结束,不关是不是被允许结束
调度算法分类
批处理
交互式
实时
概念
批处理系统
周转时间:
其中周转时间是提交到进程结束的最小时间
cpu利用率:
保持cpu忙碌
吞吐量:
每小时最大的作业数
批处理系统中的调度
先来先服务的(Frist-come first-server)
先来的执行其对应期待时间,其他作业被安排到队列,当进程被阻塞,且,那么就换队列的换队列的下一个进程,将被阻塞的变为就绪的放入队列末
坏处
对于先来先服务的操作,比如计算密集性每次一秒,和一个少量使用cpu但是每次都要进行1000次读取磁盘操作,每次读取一块磁盘,如果执行是FCFS,每次转换,要1000s,
如果有调度算法10ms抢占式计算机密集型进程,就要10s,1秒的计算机密集进程,现在是1s/10ms = 100次,每次一块,就10s
最短作业时间(SJB)
前提
多个进程能够同时执行
影响
作用与平均周转时间
例子:
名称 | A | B | C | D |
---|---|---|---|---|
运行时间 | 8 | 4 | 4 | 4 |
最短时间优先
名称 | B | C | D | A |
---|---|---|---|---|
时间 | 4 | 4 | 4 | 8 |
类似有点像你烧水,准备茶叶这种
那么周转时间就是4,8,12,20,假设依次运行时间为a,b,c,d周转身平均周转时间\((4a+3b+2c+d)/4\),就知道a小,平均周转时间就小
最短时间优先
比较的是剩余的时间,如果一个新的进程等到来,和当前进程剩余的时间比较,如果新进程运行时间比剩余的时间,那么执行新进程,当前的进程挂起
交互式系统
概念
为避免进程无限期占用cpu(及时一般不会无限期占用,但是防止是当前程序出错,导致无法运行其他进程),导致其他进程无法进行运行,所以采用抢占式
轮转算法
有时间片,当前进程运行结束/阻塞或者时间片到期,就将cpu分配给其他进程,将当前进程移到队列末尾
及时有时间片,但是cpu切换也要用一定的时间,如果时间片小,那么cpu切换的比例就加大了,时间占用多,造成了cpu利用率的降低,
如果时间片设置的过大,那么队列尾端的进程等待的时间就会过长,一般设置时间片20~50ms
优先级调度
概念
RRT中认为的是每个进程同等重要,但是不是所有人都认为如此,由此引入优先级调度
用心做~