操作系统:作业调度和进程调度的理解
含义:
作业调度:是指作业从外存调入到内存的过程
进程调度:是指进程从内存到分配cpu执行的过程
理解:
当我们打开两个程序,不妨设为程序A和程序B,首先这两个程序都是在外存(硬盘)上存储的,想要打开并运行这两个程序就必须加载到内存上,但这两个程序加载到内存上的顺序是什么呢?是先加载A呢还是先加载B呢?这个时候就涉及到作业调度了,作业调度第一种就是先来先服务(FCFS),即先打开的哪个程序,就先在内存上加载哪个程序;第二种就是短作业优先调度,即如果程序A比较大,可能是某个大型游戏,但是程序B比较小,可能只是打开个图片,假设必须要等这个大型游戏打开了才能打开这个图片,这显然图片等待的时间太长了,这时就涉及到了短作业优先调度,即系统会先打开图片,再打开游戏;第三种就是作业优先权调度,系统为作业分配优先权,优先等级高的就先调入内存,低的则等待;第四种就是高响应比调度,假设还有一个程序C,而且程序C还要在A之前打开,但是C的优先级低于A和B,如果按照优先级调度,那么C就会等很长一段时间,这显然对C是不公平的,所以这时就涉及到了高响应比优先,响应比=1+作业等待时间/执行时间,即:等待的时间越长,响应比就越高,就会提前执行。
当通过作业调度进入到内存后,这些作业就变成了一个个进程,但是要想分得CPU进行执行,还需进程调度算法,即还需要再分配一个顺序,来确定到底谁先分得CPU,进程调度算法有:优先权调度、短作业优先等,即通过每个进程的优先权或者作业的长短来确定分得CPU的执行顺序,顺序分好以后,就该真正的执行了,这时采用时间片原则,即:所有的进程都分一个相同的时间片,执行完时间片后,如果没有运行完,到队尾等待,不断重复,直到所有程序都执行完;当然,这种执行方式有缺点,就是轮换的次数太多了,费时间,所以有了反馈排队调度,这种算法是先分了好几个等级队列,最高等级的队列时间片最短,最低等级的时间片最长,假设有1、2、3、4四个队列,有程序A、B、C需要被执行,那么A、B、C先分别执行一个时间片,假如C在这一个时间片内执行完了,那就可以直接走了,而A和B就换到第2个队列中继续执行一个第2个队列的时间片,就此类推,直到全部执行完。
最后来说进程调度的抢占式和非抢占式,非抢占式就是程序在CPU执行期间,直接执行到底,直到执行完,中间不可被外界打断,如A正在执行,突然来了个比他优先级还高的B,但是A不管B,依然继续执行,直到执行完毕;抢占式就是程序A正在执行,这时来了个优先级更高的B,那么A就会和B的优先级进行比较,A发现自己的优先级比较低,A终止,B执行。