操作系统的CPU虚拟化
2020-08-10谭清宽
计算机与网络 2020年6期
关键词:进程
谭清宽
对CPU虚拟化的目的之一就是能够同时运行多个进程,实质就是对进程的切换,也就是快速的切换执行多个进程,这样对于用户而言,所有的进程都是同时进行的,但是应该如何让多个进程公平合理并安全高效的运行呢?所以,就出现了很多进程调度算法。
第一个就是最简单的先进先出(FIFO),也可以叫做先到先服务。这个算法的最大优点就是简单。没错,就是我们理解的哪个进程先来了,CPU就先处理哪个,等当前的处理结束,再处理下一个。
假设有3个进程,每1个进程处理需要10 s,这时,无论哪个进程先来,最后一个进程的完成时间都是30s,也就是说这种情况下最大完成时间是所有进程需要时间之和。但是如果同样有3个进程,其中2个进程需要10s,另外1个进程需要100 s,这种情况,最大完成时间就是120 s,由于3个进程的各自完成时间不同,所以根据他们到达的顺序不同最终的影响也有很大差异。假设3个进程A(10s)、B(10s)、C(100s),如果按照A、B、C的顺序到达,那么执行的过和我们预想的是一样的,开始10 s,A执行结束,20 s后,B执行结束,120 s,C执行结束。但是如果是按照相反的顺序到达的呢?C、B、A,这样开始100 s后,C执行结束,110s,B执行结束,120 s后,A执行结束。很显然,这种情况下,B和A都要等待时间最长的C结束才可以执行,所以这个算法的效率根据到达的顺序有很大关系。显然,这并不是我们想要的。
在这里我们计算一下进程的平均周转时间,当3个进程都需要10s的时候平均周转时间:(10+20+30)/3=20,因为A在第10s完成,B在第20s完成,C在第30 s完成。大家想一下当进程A、B、C时间分别为10 s,10 s,100 s呢?……
登录APP查看全文
