03CPU管理的直接想法

CPU的工作原理:简单来说就是取指执行,也就是说取指令然后执行指令。
以CPU上电以后的工作流程举例解释取指执行,如下图所示

                              取指执行示意图

假设CPU上电的时候PC指针值是50,那么CPU首先通过地址总线发送一个地址:50。内存收到50后,取出50地址处的指令:max ax,[100],并通过地址总线发给CPU,CPU收到指令后解释执行指令,即设置ax的值,接下来PC跳到51,取指执行,再跳到52取指执行,如此往复。

从上面的例子中可以看出,管理CPU最直观的方法就是设置好初值就完事!如下图所示,设置好初值后PC指针就一直往下跳。
                             

那么设置好初值就完事的做法有没有问题呢?,以一段C语言程序为例,说明此问题
      

   在for循环中,如果只执行计算语句,执行一千万次只耗时0.015秒,而执行printf语句1000次就耗时0.859秒。
不同类型的程序执行速度差异巨大,printf是I/O操作,需要从磁盘读写数据,磁头的移动是机械过程,机械过程当然比
纯计算这种电路变化慢得多。
  假如我们的程序设计成:先I/O操作一万次,再纯计算一万次。那么需要等待9s左右,才能计算。
  那么CPU在这9s内做了些什么事呢——>开启I/O操作,然后等待9s,直到I/O操作完成才去执行计算。实际上CPU在这9s内什么也没干,那么CPU的利用率就很低了。
 怎么解决呢?参照烧水问题
 我们烧开水时,往壶里注满水,然后插头插好,难道一直在那干等开水烧开吗?当然不是,我们可以去吃饭,等水烧开发出响声后,我们停下吃饭去拔掉插头,这样人在烧水这段时间内就没有闲着。
 所以提高CPU利用率的方法就是在启动I/O操作后,去执行别的指令,I/O操作完成时再回来,如下图所示
                  

  CPU在两道程序之间切来切去,CPU空等待的时间就少多了,提高了CPU的利用率。由两道程序切来切去,继而推广到多道程序交替执行即并发,通过此举提高CPU利用率。
  那么从程序1切到程序2时,除了修改PC指针,还需要做什么呢?举个栗子

PC在52处等待ax+bx完成期间,切到程序2.在程序一中,ax值为1,而在程序2中ax是10,从而再切回来时,如果不预先保存ax的值,那么程序1中的ax也变成10了。所以在切换前要记录地址,ax,bx的值,也就是中断现场要保存记录。每个程序中都有一个存放记录的结构:PCB

             PCB->

最后引出进程的概念
运行的程序和静态程序不一样?
静态程序+这些不一样(存在PCB)中=进程。
进程是进行(执行)中的程序

进程会走走停停,走停对程序无意义
进程需要记录ax,bx,程序不用
。。。。。。。。。。。。。

进而,管理CPU就是管理多道正在进行的程序,即多进程管理
  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章