8.多进程图像的引出——CPU管理的直观想法

1. CPU工作原理

CPU上电后 发生了什么?自动取指执行
这里写图片描述

这里写图片描述

将一个程序加载到内存中,设置PC指针,指向一个地址(比如 PC = 50),
CPU 根据PC的位置 发出取指指令
把50放到 地址总线上,内存通过总线 将50上的命令 传递给 CPU
CPU解释执行该指令,该命令是 将 100位置上的值 0 赋值给 ax

CPU 怎么工作?不断的取指执行。自动取指执行,PC自动累加

2.管理CPU的最直观方法

设置完PC初值就完事!
比如上边的程序,最开始 设置 PC=50,执行完一句代码,PC自动累加,CPU不断取指执行

这样做存在的问题:遇到 I/O 操作,会特别慢
举例:1+…+n,打印每次累加的结果

int main(int argc, char* argv[])
{
    int i, to, *fp, sum = 0;
    to = atoi(argv[1]);
    for(int i = 1; i <= to; i++)
    {
        sum = sum + i;
        fprintf(fp, "%d", sum); //  fprintf是一条 I/O 指令
    }

}

上边的代码,执行次数越多,每次循环耗时越长,
执行 10^7次 的每次耗时:执行 10^3 的每次耗时 = 10^6

I/O 操作越多,CPU越慢,怎样提高CPU利用率?
多程序交替执行:执行一个程序,当CPU推进不下去的时候,切到另一个程序执行。

这里写图片描述

3. 单道程序 与 多道程序 对比

这里写图片描述

单道程序 执行:A先执行,40 执行完,再执行B,80 执行完
多道程序 执行:交替执行,在45执行完
B启动 设备1,比如是一个打印机,B耗时,A开始执行,
A执行到 10,A要用设备1,CPU开始执行B
当A执行完Dev1,到了15,需要CPU,此时 B在使用CPU,A等待

4.并发

并发:同时触发
怎么做到 一个CPU上 交替执行多个程序?适当的时候 切换PC

这里写图片描述

两个程序都用到了 ax,bx

执行程序1,当PC = 52时,不再执行 程序1,切换到程序2,PC=200
当 PC = 202时,不再执行程序2,切回到程序1,PC = 53
除了要切PC,还有切回到 程序1 的 ax,bx 寄存器的值

如何才能切回来?
静态程序(未执行的程序)不需要记录 状态信息
执行的程序,切出去时,要记录 程序当前的信息。再次切回来时,要 还原之前的信息。

5.进程

进程:进行(执行)中的程序

进程与程序的区别:
- 进程有开始,有结束;程序没有
- 进程会走走停停;程序没有,走停对程序无意义
- 进程需要记录 ax,bx……;程序不用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值