CPU工作原理

CPU工作原理很简单,就是不断的取指执行。CPU根据PC寄存器中的值到内存中取指令,PC会自动+1,当执行完本条指令后,CPU又根据PC寄存器取指执行。

所以我们让CPU执行一段程序最直接的做法就是让PC的值设置为程序的起始地址,这样CPU会自动的执行这段程序直到程序结束。

这样做本身没什么问题,但会导致CPU的利用率比较低。我们来看两段代码执行时间。

# 计算任务
import time
start = time.time()
sum = 0
for i in range(100000):sum += i
print(time.time()-start)执行时间为: 0.007977724075317383
# IO任务
import time
start = time.time()
for i in range(100000):print(i)
print(time.time()-start)执行时间为 0.29421424865722656

可以看到同样的循环次数,但IO任务的执行时间远远大于计算任务,但在执行IO任务时,CPU是空闲的,此时CPU利用率很低。

当我们将PC的值设置为程序的起始地址,如果我们不对CPU进行特别的管理,让CPU自动的取指执行,如果程序有大量的IO任务时,CPU的利用率极低,这是对宝贵的CPU资源的极大浪费!!!所以我们要对CPU进行管理,提高CPU的利用率。

CPU管理

怎么办呢?当在执行IO任务时,我们可以将CPU分配给其他程序使用,当IO任务完成时,CPU又切换到该程序继续执行。

现实生活中,这样的例子比比皆是。拿我们平时烧开水举例。我们拿着热水瓶到炉子旁边,我们会一直傻傻的站在炉子旁边等着水烧开在装水吗,不会的,我们会去做其他事,等到炉子发出嘀嘀嘀的声音,我们才回到炉子旁装水。

这里的核心是任务的切换。做法就是内存存放多个程序,多个程序交替执行。

如何做到

直观的做法:当一个程序执行IO任务时,我们把PC的值设置为另一个程序的执行地址就可以去执行另一个程序,然后IO任务完成,又切回原来的程序执行。

说起来简单,做起来难啊!你考虑下仅仅修改PC的值能正常进行切换吗?

当程序1执行到52时,修改PC为200就可以执行程序2,当在程序2的202执行完切换到程序1,仅仅修改PC为53可以吗?

程序1执行到53时,ax的值为2,但由于执行了程序2,ax的值为20,导致切回去的时候程序1的上下文环境不一致,程序1肯定出错。

所以在进程切换的时候有个专门的步骤——保存上下文,只要切回来的时候,回复上下文才能保证程序不出错。

进程的引入

放在磁盘上的静态程序和运行中的程序不一样,运行中的程序时刻在变化,为了抽象运行中的程序,引入进程的概念。其实进程的概念和系统的快照类似,都是描述一个变化的物体在某个时刻的状态。

进程和程序的一些区别:

  1. 进程是有状态的。有开始、结束等运行状态,而程序没有。
  2. 进程会记录一些寄存器的值,这些值就是上下文。
  3. 进程会走走停停,程序没有这个概念。

结语

CPU的管理是为了提高CPU的利用率,提高的核心思想就是多道程序交替执行,为了实现多道程序交替执行,通过进程来管理程序的运行。

关注我的个人微信公众号——追梦程序员,和我一起学技术。

操作系统如何管理CPU相关推荐

  1. 操作系统--多进程管理CPU

    一.cpu管理直观做法 最只管想法cpu循环取址执行,所以只需要设好pc初值即可 存在问题:io会占用时间长,导致cpu利用率低. 所以需要不停切换,执行多个程序,也就是并发. 但是在切换的时候,除了 ...

  2. 操作系统如何管理CPU资源?细说操作系统进程与多任务模型问题

    进程是操作系统的核心概念,是正在运行的程序的一个抽象,那么我们有必要进行深入的分析了. 现代操作系统都是多道程序设计,意思是:我们的单核心cpu也可以"同时"运行多个程序,比如你可 ...

  3. 操作系统内存管理-Linux版

    引言 操作系统内存管理:总的来说,操作系统内存管理包括物理内存管理和虚拟内存管理. 物理内存管理: 包括程序装入等概念.交换技术.连续分配管理方式和非连续分配管理方式(分页.分段.段页式). 虚拟内存 ...

  4. 操作系统内存管理——分区、页式、段式管理

    操作系统内存管理--分区.页式.段式管理 标签: 内存管理操作系统数据结构算法 2010-07-05 11:26 20805人阅读 评论(5) 收藏 举报 分类: 操作系统(4) 版权声明:本文为博主 ...

  5. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

  6. 操作系统内存管理-原理

    任何新技术都是在一点一点的积累中成熟并呈现在世人的面前,就像猿人进程成人也不是一簇而就的,而是在漫长的岁月中一点一点的进化与完善.还比如现代的吸尘器,当前发明吸尘器的那个人只是用了一台风扇的电机和叶片 ...

  7. 面试-操作系统-进程管理-进程-进程调度-死锁

    文章目录 ==概念== 备注 简单说下你对并发和并行的理解? 同步.异步.阻塞.非阻塞的概念? 操作系统概念? 一个程序从开始运行到结束的完整过程,你能说出来多少? 用户态和内核态是如何切换的? 什么 ...

  8. 操作系统内存管理及虚拟内存技术

    一.内存管理 操作系统的内存管理主要负责内存的分配与回收(malloc 函数:申请内存,free 函数:释放内存),另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情. ...

  9. 操作系统——存储器管理

    操作系统--存储器管理 程序的装入和链接 用户程序想要在系统中运行,必须先将他装入内存,然后再将其转变为一个可执行的程序,步骤: 编译-->链接-->装入 程序的装入: 绝对装入方式:(只 ...

最新文章

  1. 解决在Tomcat上手动部署WAR服务器不能自动解压的方法
  2. SAP BD87将IDoc状态修改为68 ?
  3. 3D图形图像处理软件HOOPS介绍及下载
  4. 纽约时报:人们正成为移动通讯的奴隶
  5. ORA-01036: 非法的变量名/编号
  6. ubuntu中用wine安装office2007
  7. Docker 精通之常用命令
  8. OpenJudge NOI 1.8 17:最好的草
  9. Android编译系统简要介绍和学习计划
  10. 2018年广东工业大学文远知行杯新生程序设计竞赛 1007 活在无尽梦境的后续 β...
  11. linux slf4j找不到,slf4j+log4j2在tomcat8 下无日志输出
  12. 前景检测算法(十五)--LOBSTER算法
  13. linux 如何开启shell,linux下开启Shell命令
  14. 数据科学必备用Python进行描述性统计数据分析详解
  15. 盘古开源:2022年全球汽车产能仍受制于芯片短缺,中国减产量占一成
  16. 程序员的专属吐槽会,你能听懂几个梗?
  17. 送给刚入职 有压力和迷茫的你
  18. 关于我们 - 飞客旅行网 - 最大的中文酒店常客,航空常客,信用卡讨论网站!...
  19. php更换wordpress用户头像,WordPress如何添加用户自定义上传头像功能
  20. 沟通是一种伟大的生产力

热门文章

  1. oppor9splus科学计算机,oppor9splus有什么功能
  2. 特征抽取篇之Isomap(Isometric Mapping)
  3. 地质灾害检测需要了解些什么
  4. 脑肿瘤分割学习(五):A Robust Volumetric Transformer for Accurate 3D Tumor Segmentation
  5. (从零开始)Cocos 3.6.0 接入微信事件上报
  6. 揭秘天猫双11背后:AI设计师鹿班为20万客户设计600万张海报
  7. 程序员的几个搞笑瞬间!!!
  8. SPI EEPROM
  9. 手把手教你实现一个微信自动回复机器人
  10. Linux目录相关练习 redhat 8.5