并发编程所需的底层基础

一、计算机运行的底层原理

1.多级层次的存储结构

在这里插入图片描述

①:辅存

固态盘不是主要的应用对象,因为固态盘的使用次数是有限的,无法支撑高并发场景
在这里插入图片描述
磁盘存储的最基本原理是电生磁。 磁盘的磁道里边有很多的磁颗粒,磁颗粒上边有一层薄膜为了防止磁点氧化,很薄,手一碰就会消失。
在这里插入图片描述
从下图当中我们可以看到如何在磁颗粒上边写入数据
在这里插入图片描述
我们的磁头上边有一个线圈,我们可以通过调整线圈的电流方向来控制磁头的磁极,那么在磁头上边的磁颗粒就是出现和磁头相反的磁性。假设我们用磁极N级代表数字1,磁极S级代表数字0,这样我们每个磁颗粒都存储这相应的数据。每个磁颗粒都存储着一个数据,我们将这个磁颗粒存储的数据叫做1 比特
在这里插入图片描述
磁头在磁道上运转会切割磁感线,由于磁点有N极和S极。所以会产生两种方向相反的电压,所以需要我们的磁头也需要带有一定的电压。(举例):假如正电压产生的是2V,负电压也产生2V,我们默认让磁头拥有3V的电压,当他滑到正的时候就有5V电压,当他滑动到负的时候就只有1V的电压
磁头在切割磁感线的时候必然会产生电压,但是不是所有的数据都是我们想要的如何得到我们想要的数据呢?
数据的传输必然是一个闭合的电路。我们只需要在数据传输线路上加一个数据拦截器,当传到不合法的电压的时候会出现断路,如果出现合法的电压的时候回形成闭合电路。
cpu要想读取磁盘当中的某些数据,就必须先将地址发送给磁盘。默认数据拦截器内的电路是断开的状态,数据电压要想通过就必须和地址电压共同作用将数据拦截器内的半导体变为导体。
在这里插入图片描述
磁盘的访问速度
我们在磁盘上找数据的时候,首先涉及到机械臂的移动,以及盘面的转动 共需要 5ms
在这里插入图片描述
上边我们看到cpu的的计算速度和每次只能计算的量,那么我们可以看到我们磁盘和cpu的速度差是25000000倍

那如何解决这个问题呢?------内存

②:内存

内存最小单位是一些类似于二极管这样的东西,它能存储一个电状态,高或低,可表示1或0;
内存在断电之后数据就会消失原因就是因为我们的内存条用的是电容存储的电荷
在这里插入图片描述
我们知道电容和电池一样,充满电的电池我们用0来代表,没有电的我们用1来代表。
在这里插入图片描述
内存的存取速度在20ns左右,如何由内存给我们的cpu提供数据,那么cpu的效率基本上能达到1%

③:高速缓冲存储器Catch

程序访问的局部性原理
即在一段时间内,整个程序的执行仅限于程序中的某一部分;相应地,执行所访问的存储空间也局限于某个内存区域;
空间局部性
就是最近的未来有可能要用到的信息,很有可能是在现在我们正在使用的这一个信息的存储空间周围的那些数据。例如:数组、指令和数据在内存当中的存储。
时间局部性
时间局部性指的是在最近的未来要使用到的信息,很有可能是现在我们正在使用的信息。例如:循环结构的指令代码。
存储系统存在的问题
在这里插入图片描述
在上边我们提到过内存给CPU供给数据的速度达到1%,这显然是不够的,那么综合以上出现的问题,我们巨大增加增加“Catche-主存”层次。

Catch为什么快
1.距离不同
catch在cpu内部,和cpu之间有专线连通。内存在cpu外部,和cpu通过公共总线来传输信号。
在这里插入图片描述
2.硬件设计不同
内存使用栅极电容存储信息,数据读取的时候属于破坏性读取
在这里插入图片描述
Catch使用双稳态触发器存储信息,电路设计更加复杂,数据读取效率更高
在这里插入图片描述
cpu是如如何访问catch的
在这里插入图片描述
方式一:先访问Cache未命中在访问主存
在这里插入图片描述
方式二:cpu同时去cache和主存当中找数据
在这里插入图片描述
在这里插入图片描述

④: 寄存器

寄存器是计算机中存储容量最小的存储器件,通常被集成在处理器芯片中。寄存器通常被用于存储处理器需要快速访问的数据,如程序计数器、指令寄存器、状态寄存器、通用寄存器等。cpu在计算过程中
在这里插入图片描述
在这里插入图片描述

2.多核CPU

①:单核处理器处理数据

早期的cpu只有一个逻辑运算单元(内核),我们知道计算机核心其实就是对数据进行运算,那么一个逻辑运算元也就是说在同一时刻,只能去运算同一指令。比如有一个for循环。运算 i++的同时不能和i<100000进行比较。

for(int i =0;i<100000;i++){count ++;
}

进而我们可以推算出,有两个for循环,在单个逻辑运算单元的前提下,只能去运算一个,另一个只能等待。

for(int i =0;i<100000;i++){count ++;
}
for(int j =0;i<100000;j++){temp ++; //这个地方不是count++是有用的,不是随便写的
}

在这里插入图片描述
操作系统会给两个程序分别设定一定时间,让任务1和任务2交替执行,一个任务执行一定的时间,当这段时间运行完了,就切换另一个任务,这样从结果来看,我们基本可以认定为同时执行。
对于单核cpu来说的话两个任务正在根据时钟周期在进行快速的切换。不管这两个线程的指令有少个,内核同时只能运行一个程序。
那我们能不能同时执行多个程序呢?

②:多核处理器处理数据

在这里插入图片描述
多核处理器是指一个处理器芯片上同时集成多个独立的处理器内核,每个内核都可以独立的执行指令。这意味着在一个多核处理器上同时执行多个线程,从而提高计算机的性能。

二、操作系统需要了解的知识

操作系统的发展历史

①:手工阶段

在这里插入图片描述
手工操作特点:用户独占全机,CPU等待手工操作。20世纪50年代后期,出现人机矛盾(手工操作的慢速度和计算机的高速度之间形成了尖锐矛盾),随之出现了批处理系统。

主要矛盾:
1.每一个用户将自己的程序输出到计算机,直到计算机输出,在这个过程当中一个用户独占整个计算机。
2.用户需要将程序打成纸带,这个过程十分缓慢、而处理机处理数据非常慢,人机速度矛盾导致资源利用率低。

②:批处理阶段—单道批处理系统

在这里插入图片描述
加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。
主要矛盾: 内存中只能有一道程序运行,只有该程序运行完成之后才能调用下一个程序。CPU大量的时间是在空闲等待I/O完成。资源利用率低。

③:批处理阶段—多道批处理系统

多道批处理系统:外存中的多个作业组成一个后备队列,系统按一定的调度原则每次从后备作业队列中选取一个或多个作业进入内存运行,在系统中形成一个自动转接的、连续的作业流。但是,在系统运行过程中,不允许用户与其作业发生交互作用(作业一旦进入系统,用户就不能直接干预其作业的运行)。
多道程序系统的出现,标志着操作系统渐趋成熟的阶段,先后出现了作业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。随之,分时系统出现,它既能保证计算机效率,又能方便用户使用计算机。
在这里插入图片描述
主要优点: 多道程序并发执行,共享计算机资源。资源利用率大幅度提升。CPU和其他计算机资源保持"忙碌”状态,系统吞吐量增大。
主要矛盾: 用户响应时间长,没有人机交互功能(用户提交自己的作业只能等待计算机处理完成,中间不能控制自己的作业执行)。

④:分时操作系统

多用户分时系统是当今计算机操作系统中最普遍使用的一类操作系统。把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮时再继续其运行。
分时操作系统:计算机 以时间片为单位轮流为各个用户/作业服务, 各个用户可以通过终端与计算机进行交互。
主要优点: 用户请求可以被及时响应,为了解决人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作互相独立,感觉不到别人的存在。
主要缺点: 不能优先处理一些紧急任务、操作系统对各个用户/作业都是完全公平的,循环的为每个用户/作业服务一个时间片,不区分任务的紧急性。

⑤:实时操作系统

系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。实时系统两大特点:a.及时响应。每一个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。b.高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。
在这里插入图片描述
主要优点:能够响应一些紧急任务,某些紧急任务不需要排队等待。
在实时操作系统的控制下,计算机系统接收到外部信号后能及时进行处理,并且在严格要求的实现内处理完事件。实时操作系统的主要特点是及时性和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G网络架构与组网部署03--5G网络组网部署

1. SA组网与NSA组网 &#xff08;1&#xff09;NSA 非独立组网&#xff1a;终端同时接入4G基站和5G基站&#xff0c;只能实现5G部分功能 &#xff08;2&#xff09;SA组网【最终目标】&#xff1a;5G基站可以单独提供服务&#xff0c;接入的是5G核心网 区别&#xff1a;同一时间…

01-java面试题八股文-----java基础——20题

文章目录 <font color"red">1、java语言有哪些特点&#xff1a;<font color"red">2、面向对象和面向过程的区别<font color"red">3、标识符的命名规则。<font color"red">4、八种基本数据类型的大小&#xff…

STM32CubeMX+freeRTOS+事件组 多任务处理LED和串口打印

摘要:利用CubeMx配置freeeRTOS建立任务并使用事件组实现按键按下时 LED开关和打印信息到串口,上位机接收显示。 验证STM32CubeMx配置的FreeRTOS的任务和事件组使用 方案:按下Key1,绿灯亮或者灭,同时串口打印Key1被按下了到上位机;相关端口和串口配置省略。 新建三个任务…

Sora底层技术原理:Stable Diffusion运行原理

AIGC 热潮正猛烈地席卷开来&#xff0c;可以说 Stable Diffusion 开源发布把 AI 图像生成提高了全新高度&#xff0c;特别是 ControlNet 和 T2I-Adapter 控制模块的提出进一步提高生成可控性&#xff0c;也在逐渐改变一部分行业的生产模式。惊艳其出色表现&#xff0c;也不禁好…

嵌入式开发--获取STM32产品系列的信息

嵌入式开发–获取STM32产品系列和容量信息 获取STM32产品系列 有时候我们需要知道当前MCU是STM32的哪一个系列&#xff0c;这当然可以从外部丝印看出来&#xff0c;但是运行在内部的软件如何知道呢&#xff1f; ST为我们提供了一个接口&#xff0c;对于STM32的所有MCU&#x…

xshell链接不上hadoop虚拟机

输入ifconfig查看是否有ens33 没有的话解决方案如下&#xff1a; systemctl stop NetworkManager systemctl restart network.service service network restartsys 依次输入以上命令 如果报错或者没用的话&#xff0c;进入root重新输入一遍这三个命令 大功告成&#xff01;…

LF-YOLO

LF-YOLO算法解读&#xff0c;针对x射线图像 1、EMF&#xff1a;网络结构的改变&#xff0c;enhanced multiscale feature(增强的多尺度特性)&#xff0c;多尺度融合模块。利用基于参数的方法和无参数的方法&#xff0c;可以同时结合X射线图像的局部和全局上下文&#xff0c;利用…

【C++从练气到飞升】04---拷贝构造函数

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 ⛳️推荐 一、拷贝构造函数的引入 1. 以日期类为例:进行的值拷贝是不会发生错误的 2. 以栈类为例:进行的值拷贝会发现发…

【一竞技CS2】pasha将骑行前往哥本哈根Major

1、传奇老将pasha最近发文表示&#xff1a;自己将在3月23日&#xff0c;从华沙的西吉斯蒙德圆柱出发&#xff0c;开始了前往哥本哈根Major的旅程。 去年pasha于当地时间5月12日清晨出发&#xff0c;并一路开启直播记录自己骑行前往巴黎的旅程。最终他于5月19日抵达埃菲尔铁塔。…

基于python+vue智慧农业小程序flask-django-php-nodejs

传统智慧农业采取了人工的管理方法&#xff0c;但这种管理方法存在着许多弊端&#xff0c;比如效率低下、安全性低以及信息传输的不准确等&#xff0c;同时由于智慧农业中会形成众多的个人文档和信息系统数据&#xff0c;通过人工方法对知识科普、土壤信息、水质信息、购物商城…

AVL树的实现

概念 1.为了解决二叉搜索树有序插入&#xff0c;会退化成链表&#xff0c;导致效率低下。 AVL树的左右子树高度差不超过1&#xff0c;所以AVL树的查找效率为logn。 2.在左子树高度增加&#xff0c;平衡因子减一&#xff0c;在右子树高度增加&#xff0c;平衡因子加一。 节点…

C# winform修改背景图 控件双向绑定 拖拽打开图片

修改背景图 说明 这里我准备基于百度飞桨PaddleSeg项目的人像分割模块做一个人像抠图&#xff0c;这里顺便用上了双向绑定和图片拖拽打开。 下面就是示例&#xff1a; 用颜色替换 用背景图替换 保存成功后的图片 一、使用百度飞桨PaddleSeg //初始化 引擎engine new Padd…

如何配置VS Code环境

一、下载 Visual Studio Code - Code Editing. Redefined 二、傻瓜式安装 如果出现没有安装路径选择&#xff0c;则看下面图片 经过上面操作后&#xff0c;可以修改路径 三、按照下面步骤配置环境变量即可 Visual Studio Code 中的 C 和 MinGW-w64 入门

UE5 C++增强输入

一.创建charactor&#xff0c;并且包含增强输入相关的头文件 1.项目名.build.cs。添加模块“EnhancedInput”&#xff0c;方便找到头文件和映射的一些文件。 PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine&q…

在基于Android相机预览的CV应用程序中使用 OpenCL

查看&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0在Android 开发简介 下一篇&#xff1a;在 MacOS 中安装 本指南旨在帮助您在基于 Android 相机预览的 CV 应用程序中使用 OpenCL ™。教程是为 Android Studio 20…

用图解说明mysql 行锁加锁规则

加锁原则 原则 1&#xff1a;加锁的基本单位是 next-key lock。希望你还记得&#xff0c;next-key lock 是前开后闭区间。原则 2&#xff1a;查找过程中访问到的对象才会加锁。优化 1&#xff1a;索引上的等值查询&#xff0c;给唯一索引加锁的时候&#xff0c;next-key lock …

【Java】Oracle发布Java22最新版本

甲骨文&#xff08;ORACLE&#xff09;已经于2023年3月19日正式发布了最新版本的JDK&#xff0c;版本号&#xff1a;22 根据官方声明&#xff0c;Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进&#xff0c;包括对Java 语言、其API 和性能&#xff0c;以…

基于stable diffusion的IP海报生成

【AIGC】只要10秒&#xff0c;AI生成IP海报&#xff0c;解放双手&#xff01;&#xff01;&#xff01;在AIGC市场发展的趋势下&#xff0c;如何帮助设计工作者解放双手。本文将从图像生成方向切入&#xff0c;帮助大家体系化的学习Stable diffusion的使用&#xff0c;完成自有…

php 对接IronSource海外广告平台收益接口Reporting API

今天对接的是IronSource广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到IronSource后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://developers.is.com/ironsource-mobile/air/reporting/ 在这里插…

基于Python3的数据结构与算法 - 16 链表

目录 链表 1. 创建链表 2. 链表的插入和删除 3. 双链表 4. 链表总结 链表 链表是由一系列节点组成的元素集合。每个节点包含两部分&#xff0c;数据域item和指向下一个节点得指针next。通过节点之间的相互连接&#xff0c;最终串联成一个链表。 class Node:def __init…