操作系统 第八节 CPU管理的直观想法

1 CPU的工作原理

CPU通过地址总线来指定存储器单元,CPU与内存或其它器件之间的数据传输是通过数据总线来进行的

CPU从CS:IP指向的内存单元取出指令并执行,执行完后IP+1指向下一条指令,接着CPU取出下一条指令并执行

CPU不断地取指,执行,只要设置好CS:IP的初值即可,让它指向一段程序的开始地址,CPU就从这里开始不断地取指执行

2 CPU进行不同工作时的效率

对于下面的一段程序,fprintf()是一条I/O指令,如果将这条指令更换成一条任意的计算指令,那么效率会提高(10^6)倍,也就是说执行一条I/O指令所耗费的时间是足以执行大量的计算指令

在程序中I/O指令执行耗费的时间远大于单纯计算用的时间,I/O指令执行非常慢
操作系统 第八节 CPU管理的直观想法
如果在一个程序中,前面有10^6条计算指令,后面只有一条I/O指令,那么当CPU执行完前面的计算指令后,会等待处理I/O,这段执行I/O的时间约等于执行前面计算指令的时间,CPU在I/O处理时,只是在等待,那么CPU的效率只有50%

实际中,每二三十条计算指令就会伴随一条I/O指令,如果CPU在I/O处理这段时间只是等待,那么效率会更低,如何让CPU在等待的这段时间工作,使其高效,不停息工作是CPU管理的问题,我们需要使CPU忙碌起来

3 如何管理CPU使其高效率运行

管理CPU使其高效工作可以类比时间分配的问题,做饭时,先去烧水,烧水的时间淘米,洗菜,烧完水后蒸米,蒸米的时间炒菜

CPU的管理思想:多道程序,交替执行

对于单道程序想要执行两个任务,需要先完成任务A,其中包括A任务对于CPU的需求和对于设备dev1(如打印机)和dev2的使用,只有等完成程序A后,才可以去执行程序B,但是在任务A中使用dev1时,CPU是空闲的

如果使用多道程序,交替执行的方式,当任务A使用dev1时,CPU不要等待转去为任务B服务,当任务A需要CPU时,发出提示,这时CPU再回去为任务A服务,这样的处理思想,对于多个程序也仍适用,交替执行不仅提高了CPU的工作效率,且提高了设备的使用效率,从而提高整体工作效率

操作系统 第八节 CPU管理的直观想法

操作系统 第八节 CPU管理的直观想法
一个CPU上交替地执行多个程序称为 并发

4 如何完成程序间地切换

CPU根据CS:IP的指向取指执行,在恰当的时刻更改CS:IP的指向就可以完成并发

但是切换到另一个程序后,新的程序也要使用CPU,即使用CPU内的各个寄存器,并更改里面的值以便使用,所以我们需要保存切换前程序的详细信息

只更改CS:IP是不够的,还需要记录一些内容,为了继续成功执行切换前的程序,我们需要记录切换前程序的一些信息,如切换前程序的各个寄存器内值,每个程序有了一个存放信息的结构:PCB

操作系统 第八节 CPU管理的直观想法

5 进程与程序

将正在执行的程序称为进程,磁盘中的没跑起来的程序称为静态程序

运行的程序和静态的程序是不一样的,对于所有进程,需要保存它们的“样子”,即将它们的信息,状态保存起来,存到各自对应的PCB中

进程是正在执行的程序:
1,进程有开始,有结束,程序没有
2,进程会走走停停,走停对程序没有意义
3,进程需要记录寄存器的值ax,bx等,程序不需要