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

进程与线程:01 CPU管理的直观想法

多进程图像与操作系统核心

好从今天开始,我们就要开始学习操作系统,最核心的图像是多进程图像。前面我们讲过,多进程图像对操作系统来说非常重要,它是操作系统的核心图像。明白了它以后,对于理解操作系统的一大部分内容乃至编写操作系统都大有益处。

操作系统的核心功能是管理计算机硬件,而CPU是计算机中最核心的硬件,所以操作系统首先要管理CPU 。正是在管理CPU的过程中,引出了多进程图像。

管理CPU:从使用到问题提出

  • 使用:要管理CPU,需先学会使用CPU 。就像管理屋子要让屋子被使用一样,使用CPU就是让它高效地工作。而要使用CPU,得先明白其工作原理。

    • 工作原理:根据冯诺伊曼体系,将程序存放到内存里,设置PC(程序计数器)地址,如PC = 50CPU会根据这个地址从内存中取指令,例如取出 mov ax, [100] 这条指令,然后将内存地址为100处的内容取出来赋给ax寄存器,ax的值就变为0 。CPU自动进行取指 - 执行的操作,不断重复这个过程,每次取指后PC自动累加,从而依次执行后续指令。【**插入CPU工作原理相关图片**,如展示**CPU**取指 - 执行过程、**PC**指针变化等原理示意的图片】

    • 直观方法:管理CPU最直观的方法就是设好PC初值,将PC的初值设置为一段程序的开始地址,CPU就会自动取指执行,开始工作。【**插入管理CPU的最直观方法相关图片,如展示设置PC初值后指令执行流程的图片**】

  • 问题提出:然而,这种方法存在问题。通过一个程序实验发现,I/O指令(如fprintf )和计算指令执行时间差异巨大,I/O指令执行非常慢。当程序中存在I/O指令时,CPU在执行到I/O指令时,由于后续指令可能依赖I/O结果,CPU只能等待,导致CPU利用率低。例如一个程序前面有大量计算指令(如十的六次方条),仅有一条I/O指令,按照直观方法执行,CPU会在遇到I/O指令时等待,工作时间和等待时间几乎相等,利用率只有50% ,在实际情况中CPU利用率可能更低。【**插入问题提出相关图片,如展示程序代码、执行时间对比数据等的图片**】

解决思路:多道程序交替执行

为解决CPU利用率低的问题,人们借鉴生活中等待事件时同时做其他事的思路,提出多道程序交替执行的方法。当一个程序执行到无法继续(如遇到I/O操作)时,CPU切换到另一个程序执行,多个程序在内存中交替执行,这样CPU就能充分忙碌起来,提高利用率。

  • 对比示例:通过单道程序和多道程序执行的示例对比,单道程序中程序A执行完后程序B才能执行,CPU利用率为50% ;而多道程序交替执行时,CPU和设备可以并行工作,任务执行时间缩短,CPU利用率提高到89% ,设备利用率也相应提高。【**插入多道程序、交替执行相关图片,如展示单道程序和多道程序执行时间轴、利用率对比数据的图片**】
    【**插入一个CPU面对多个程序相关图片,如展示程序切换时PC指针变化、寄存器信息记录等的图片**】

  • 实现关键:一个CPU要交替执行多个程序,关键在于PC的切换。当需要切换到另一个程序时,操作系统修改PC的值,如从程序1的地址切换到程序2的地址。但仅仅修改PC寄存器是不够的,还需要记录返回地址、寄存器(如axbx )等信息,以便切回原程序时能继续正确执行。
    【**插入引入“进程”概念相关图片,如展示进程与程序差异、PCB结构示意等的图片**】
    在这里插入图片描述

引入“进程”概念

运行的程序和静态程序不一样,运行中的程序需要记录执行时的各种信息,如当前执行位置、寄存器状态等,这些不一样的地方构成了进程概念的外延。为了描述这种差异,引入了“进程”概念。进程是进行(执行)中的程序,与静态程序相比,进程有开始、结束,会走走停停,需要记录寄存器等信息,而这些信息都存放在PCB(进程控制块)中 。
在这里插入图片描述

总结:多进程图像与CPU管理

将前面的内容贯穿起来,操作系统管理CPU,首先是使用CPU ,给一段程序让CPU执行,CPU就能工作。但只执行一个程序CPU利用率低,所以需要让CPU交替执行多个程序,即并发执行。而实现并发就需要记录程序执行状态,这就引出了进程概念。

CPU管理就是启动一个进程让CPU执行,更好地管理CPU则是启动多个进程让CPU交替跑这些进程。多个进程向前跑的样子,就是管理CPU的核心样子,也就是多进程图像。

相关文章:

  • 股票分析技术指标【RSV、KDJ】
  • 【Ollama:本地LLM工具】
  • windows服务器及网络:论如何安装(虚拟机)
  • 驱动开发硬核特训 · Day 15:电源管理核心知识与实战解析
  • 基于javaweb的SpringBoot儿童爱心管理系统设计与实现(源码+文档+部署讲解)
  • go语言对http协议的支持
  • 神经网络与模型训练过程笔记
  • PyTorch 深度学习实战(39):归一化技术对比(BN/LN/IN/GN)
  • 提示词设计:动态提示词 标准提示词
  • Android Studio 中 Drawable 详细全解
  • 计算机视觉cv入门之答题卡自动批阅
  • linux 搭建 dvwa 渗透测试环境
  • mysql的5.7版本与8.0版本的差异与兼容性
  • 从零创建 Docker 镜像
  • Django 使用教程
  • 【RabbitMQ | 第2篇】RabbitMQ 控制台实现消息路由 + 数据隔离
  • HarmonyOS-ArkUI-动画分类简介
  • VSCode 扩展离线下载方法
  • wpf stylet框架 关于View与viewmodel自动关联绑定的问题
  • 17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--SonarQube部署与配置
  • 从南宋遗韵到海派风情,解码江南服饰美学基因
  • 又有多地推进产科整合
  • 收藏家尤伦斯辞世,曾是中国当代艺术的推手与收藏者
  • 科普|一名肿瘤医生眼中的肺癌诊疗变化:从谈癌色变到与癌共存
  • 医院招聘误发内部信息反获好评,求职者就需要这样的“敞亮”
  • 多米尼加俱乐部屋顶坍塌事故死亡人数升至232人