首页 > 系统相关 >CPU管理 && 多进程图像

CPU管理 && 多进程图像

时间:2024-07-01 20:42:17浏览次数:17  
标签:多个 程序 并发 && 图像 进程 执行 CPU

目录

CPU管理 && 多进程图像

要管理CPU,先要学会使用CPU

CPU的工作方式在操作系统学习之初就已经提过:

  • 取值执行
    • 程序存放在内存中,每段指令对应一个地址
    • CPU发出取指命令,将想取地址通过地址总线传到PC
    • 内存根据地址取出对应地址的指令
    • 从总线传回,CPU解释执行

总之,就是自动的取指--执行

所以,管理CPU最直观的方法就是,设置PC的初值,CPU就能根据取指执行依次执行下去

好了现在CPU执行起来了,但这样的管理方式是否有什么问题?看下面一段程序:

int main(int argc,char* argv[]){
    int i,to,*fp,sum=0;
    to = atoi(agv[1]);
    for(i = 1; i <=to; i++){
        sum = sum + i;
        fprintf(fp,"%d",sum);
    }
}
  • 注意fprintf(),这是一条IO指令。如果将其替换成一条计算语句,整段程序运行时长前后比值约为10^6:1
  • 也就是说,IO指令特别特别慢

如果一段程序中IO指令的占比又很大,那么整个程序执行所耗时间中,IO指令会占非常大的比例。

  • 换句话说,CPU很多时间都在摸鱼,等待IO指令完成在继续干活,这样CPU利用率就太低了。这样管理就出现了问题

怎么压榨CPU?

CPU管理的核心:并发

并发概念

让CPU不再一次局限于单段程序,而是多道程序,交替执行

由此得出一个重要的概念:并发

  • 并发:一个CPU上交替地执行多个程序

注意并发与并行概念的不同:

并发(Concurrency):并发指的是一个系统能够同时处理多个任务。在一个单处理器系统中,多个任务交替执行,因为处理器实际上在一段时间内只能执行一个任务。这种情况下,因为多个任务交替执行的效果,看起来好像同时在运行。在一个多处理器系统中,多个任务可以真正同时执行,但是在并发系统中,即使没有多个处理器也能实现同时执行的效果。

并行(Parallelism):并行是指系统同时执行多个任务,每个任务都在不同的处理器核心上执行,因此它们真正同时进行。在一个拥有多核心处理器的系统中,可以实现真正的并行执行,每个核心处理器同时处理不同的任务。

并发与并行的区别:并发强调的是在单位时间内有多个任务同时进行,但是这些任务可能是交替执行的。而并行强调的是在同一时刻有多个任务同时进行。

通俗一点,一个系统可以同时处理多个任务,但这些任务可能只是交替执行,这是并发;而如果多个任务确实同时执行,那么这是并行。

这样,执行到像IO这样慢的步骤时,CPU就可以切换到另一个程序继续执行

如何实现并发?

要实现不同程序间的切换执行,首先想到修改寄存器PC。但只修改寄存器P C就可以实现吗?

很显然,还需要用栈来记录当前程序的一些信息。这和汇编模块化设计中用data段存数据一样。

  • 由此,每个程序有了一个存放信息的结构:PCB,Process Control Block,进程控制块

就像我们正在看书,突然被人叫走做别的事,我们就应当停下来,记录当前页码以及故事情节,然后离开,这样回来后才能继续阅读。

这样,这些运行的程序就和静态的程序不同了。具体不同就体现在PCB表中。

由此引出一个概念:进程

进程描述了运行中的程序,如上图中程序1和程序2就是两个进程。

进程的名字十分形象

  • 进程有开始、结束。程序没有;
  • 进程会走走停停,是动态的,有状态的。程序没有
  • 进程需要记录ax,bx......程序不用;

总结

由此,我们描述了CPU的管理:

  • 使用CPU:启动进程,执行进程
  • 更高效压榨使用CPU:启动多个进程,交替执行多个进程
  • 所谓多进程图像,便是CPU执行多个进程的过程,也是CPU执行的核心

多进程图像

标签:多个,程序,并发,&&,图像,进程,执行,CPU
From: https://www.cnblogs.com/Elysiaiii/p/18278813

相关文章

  • Python武器库 - 科研中常用的python图像操作 - 转换图像颜色通道模式BGR到RGB
    应用场景:待补充。。。(主要是因为opencv默认的图像颜色通道模式为BGR,与我们通常说到的RGB模式有区别,所以这个转换操作还是比较常用的)主要用到cv2.cvtColor()函数代码示例:importcv2img1=cv2.imread('example_img/img1.png')cv2.imshow('lingdushowimg1',img1)img2=......
  • Python武器库 - 科研中常用的python图像操作 - 图像添加文字
    应用场景:在科研中,有时需要在生成结果中标注文字作为说明,或者添加文字在一行图片的开头作为标题(这个效果通常需要配合在一行图片的开头添加一张空(纯黑)图片,在该图片中添加文字作为标题,使用python-opencv来创建一张纯色图片的操作,详情见我的另一篇随笔https://www.cnblogs.com......
  • Python武器库 - 科研中常用的python图像操作 - 创建纯色图像
    应用场景:需要创建纯色图像,作为背景图,在此基础上添加文字、形状、新的图片等等原理:cv2的读取图片操作本质上是将图片转换为uint8的numpy.ndarray类型,后续的其他图像操作,本质上也是对于这个ndarray对象的操作首先用numpy创建一个形状为(224,224,3)、元素值为均为0的ndarra......
  • 图像采集卡是什么,有什么用处
    机器视觉技术的发展源于光学、化学、物理、电子、电视、机械设计、数学、软件、人工智能、计算机和计算机视觉以及互联网等领域的发现。随着这些不同学科取得某些里程碑式的进展,它们为开发用于自动检查、测量、过程控制和机器人引导应用的成像系统铺平了道路。图像采集卡是许多高......
  • 基于Java实现图像浏览器的设计与实现
    图像浏览器的设计与实现前言一、需求分析选题意义应用意义功能需求关键技术系统用例图设计JPG系统用例图图片查看系统用例图二、概要设计JPG.javaPicture.java三、详细设计类图JPG.javaUML类图picture.javaUML类图界面设计JPG.javapicture.java四、源代码JPG.jav......
  • 探索开源世界:常用的条形码图像处理库及其应用
                    在数字时代,条形码作为信息传输的重要媒介,其识别与处理技术显得尤为重要。无论是物流管理、库存控制,还是产品追溯,条形码的准确读取都是实现高效运营的关键。本文将带领大家走进开源软件的世界,探索那些优秀的条形码图像处理库,了解它们的特点、......
  • 一分钟教会你!ComfyUI高清分辨率可控图像增强模型!
    大家好我是小王!!!近日SDXLControlnetTile模型更新到V2版本了,这是一款现实逼真绘图Controlnet插件模型,适用于熟知的SD-WebUI扩展和ComfyUI工作流。本次V2版本的更新,在模型的稳定性和控制力得到了显著的提升,同时能够在高清分辨率时更多的精细的图像细节增强。•......
  • Windows 系统中CPU 利用率那些事
    Windows平台下CPU使用率的计算在Windows平台下,CPU使用率通过计算CPU在用户态和内核态的时间与总时间的比值来确定。任务管理器的刷新周期通常为1秒,这意味着在每秒刷新时计算CPU的忙碌时间与总时间的比值。CPU使用率可以通过以下公式计算:[\text{CPU使用率}......
  • 极验图标点选图像识别
    一、简介极验的图标点选验证码有很多种,今天我们就来讲其中一种的识别方法。如上图所示,这种图标的是特点是,中间是数字、字母。外圈有一种装饰作为干扰。由于外圈的装饰占了很大一部分,所以对识别的干扰比较大。我根据实际情况分别做了两种识别方式,一种是原图识别、另一种是截......
  • 【JavaScript脚本宇宙】加速您的网站:图像优化工具和库的终极指南
    别让大图拖垮你的应用:如何正确优化图像前言在数字时代,图像是我们日常生活中不可或缺的一部分。然而,随着图像数量的增加和分辨率的提高,它们也占据了越来越多的存储空间和带宽。为了解决这个问题,开发人员可以使用各种图像优化工具和技术来减小图像文件的大小,同时保持其质量......