当前位置: 首页 > news >正文

操做系统----第二章:多进程图像之CPU管理

这里写目录标题

  • CPU管理的直观想法
    • CPU的朴素工作原理
    • 提出问题
    • 解决问题
    • CPU交替执行(并发)
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

CPU管理的直观想法

CPU的朴素工作原理

在这里插入图片描述
在计组中已经学过:

CPU包括控制器运算器,他与主存之间会有地址总线、数据总线、控制总线,用于与主存的指令、数据进行数据交互

CPU的朴素工作原理就是:
1、我们先初始化PC指针,之后,CPU将PC指针指向的主存的存储单元的内容,通过数据总线送到CPU

2、CPU发现是一条指令,便会执行该指令,执行过程中可能还会去主存中对应地址取数据(会用到MAR、MDR,实际上上面的PC会经过MAR去取数据,给到MDR,只不过大部分是直接使用MAR、MDR),执行完当前指令之后,PC自动加一

从而继续自动执行1、2,完成自动地取指执行

所以,CPU就这样顺序执行下去了

提出问题

在这里插入图片描述
我们来看这样一段程序,
1、这行代码属于:IO操作

2、当把这行IO操作代码用一条计算指令代替时,可以看到执行10^7次循环,耗时0.015s-------平均一次循环步耗时0.015/10的7次方
(计算指令相当于CPU在执行,而IO时CPU不执行)

3、而当带着这条IO代码时,执行1000次循环,耗时0.859s-------平均一个循环步耗时0.859/10^3

4、二者作比:可以看到,大致为10^6:1,也就是CPU执行一条IO操作代码的时间,大致是执行一条计算指令代码的10的6次方倍,所以,执行IO的速度相比CPU执行的速度来讲,十分十分的慢

在这里插入图片描述
所以,如果一段程序中,有10^6条非IO指令,之后来条IO指令,二者耗费的时间是一样的,但前者是CPU一直在运行,而IO时,CPU会停下等待,处于闲置状态

所以,这样一段10^6:1程序,CPU的利用率只有百分之五十

在这里插入图片描述
而实际代码中,可能我们每隔30行非IO代码,就会有一条IO代码,这样看来,整个程序CPU的利用率近乎接近于1%,99%的时间都用在了等待IO

解决问题

直观想法:当CPU等待IO时,我们使用一些手段,让其去执行其他任务,当IO结束后,再通过某种手段通知CPU回来继续执行下面的代码,这样CPU的利用率就会被超大幅度提升

在这里插入图片描述
所以,采用多道程序交替交给CPU执行的方法(注意,交替执行只是针对CPU而言,在CPU切换后,没有CPU的程序并没有停下,而是在执行IO,所以,两个程序是一值在并行执行

1、单道程序执行A、B,时间是80

2、而采用多道程序执行A、B之后,时间缩短到45

3、简要看一下多道程序执行的过程:首先从B开始,遇到B要IO(DEV代表IO),则让B执行IO,同时CPU切换到A执行,之后,A要进行IO,则让A继续IO,CPU切换到B执行,而这里,CPU执行B时,A的IO结束了,但是B的CPU还能继续执行,那么A只好等待,等B什么时候遇到IO释放了CPU,A再继续使用CPU

CPU交替执行(并发)

多道程序交替交给CPU执行(注意,交替执行只是针对CPU而言,在CPU切换后,没有CPU的程序并没有停下,而是在执行IO,所以,两个程序是一值在并行执行

在这里插入图片描述
当当前程序遇到IO后,修改PC的值,让其切换到另一个程序执行,而不是让CPU干等着,此时程序A和程序B在并行执行,称之为**“并发”**

但是单纯修改PC的值就行了吗,修改PC的值,虽然是跳到程序B执行了,但是程序A会停止,显然不符合并行执行

在这里插入图片描述
1、当,从程序A切换到程序B执行之后,PC被修改回去,继续执行程序A时,发现ax、bx都被程序B修改了,所以程序A就错误了,不是PC切换之前的ax、bx了

2、所以,每个运行的程序,会有一个结构,专门用于存放PC切走之前的信息,如上图,包含了ax、bx的值,以及PC的切换位置,方便PC切回来,这个结构就是PCB进程控制块

在这里插入图片描述
1、所以,运行中的程序,需要记录一些信息,而静态的程序代码不需要,

即,运行的程序=静态程序代码+需要额外记录一些信息(记录在PCB中)

而,这样的一个运行的程序,我们称之为“进程

可以将静态程序视为剧本,而进程就是一场戏

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

相关文章:

  • PTA | 实验室使用排期
  • Arduino Uno R3连接HC-03
  • MVC 模式深度解析与 Spring 框架实践研究
  • Python运算符
  • MySQL存过
  • VirtualBox 无法枚举 USB 设备的问题
  • 力扣刷题HOT100——438.找到字符串中所有字母异位词
  • DAY 44 leetcode 28--字符串.实现strStr()
  • 【技术文章的标准结构与内容指南】
  • GIC驱动程序分析
  • 自注意力的机制内涵和设计逻辑
  • 151. 反转字符串中的单词
  • AJAX原理与XMLHttpRequest
  • 榕壹云酒水定制系统:基于THinKPHP+MySQL+UniApp打造数字化时代的个性化购酒新体验
  • EasyCVR视频汇聚系统:AIoT+视频智能分析赋能食品安全生产全流程监管
  • golang-非orm数据库的操作与对比 database/sql、sqlx 和 sqlc
  • 鸿蒙开发-模块化-导入,导出模块
  • 【信息系统项目管理师】高分论文:论信息系统项目的整合管理(银行数据仓库项目)
  • C#进阶学习(二)泛型及泛型约束的认识
  • day25 学习笔记
  • 即日起,“应急使命·2025”演习公开征集新质救援能力
  • 陈颖已任上海黄浦区委常委、统战部部长
  • 来论|受美国“保护”,日本民众要付出什么代价?
  • 抗美援朝老战士宁昭逝世,享年93岁
  • 胸外科专家查出肺多发结节,说了一个可怕的事实……
  • 中老铁路跨境国际旅客突破50万人次