并发编程所需的底层基础

news2024/9/25 15:24:27

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

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.coloradmin.cn/o/1533800.html

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

相关文章

微火共享wifi贴如何加盟?

最近看到有多人在求助&#xff0c;微火共享wifi贴码如何加盟&#xff0c;所以&#xff0c;小编特意整理了一下&#xff0c;将想加入的具体办法都写了出来&#xff0c;以供大家参考。 首先&#xff0c;要想加入微火共享wifi&#xff0c;可以先进入其官网&#xff0c;方法有两种&…

力扣---括号生成---回溯---dfs/二进制

暴力--二进制 采用与&#xff1a;力扣---子集---回溯&#xff08;子集型回溯&#xff09;---递归-CSDN博客 中二进制求解一样的思路&#xff0c;即遍历0~-1&#xff08;从二进制去考虑&#xff09;&#xff0c;如果这个数的第 i 位为0&#xff0c;则括号的第 i 位为‘&#xff…

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

文章目录 HTTP缓存强缓存协商缓存状态码区别缓存优先级如何设置强缓存和协商缓存使用场景 HTTP缓存 HTTP缓存时利用HTTP响应头将所请求的资源在浏览器进行缓存&#xff0c;缓存方式分两种&#xff1a;强缓存和协商缓存。 浏览器缓存是指将之前请求过的资源在浏览器进行缓存&am…

鸿蒙Harmony应用开发—ArkTS-全局UI方法(日历选择器弹窗)

点击日期弹出日历选择器弹窗&#xff0c;可选择弹窗内任意日期。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 本模块功能依赖UI的执行上下文&#xff0c;不可在UI上下文不明确的地方使用&…

第3章 数据治理

思维导图 数据治理的定义&#xff1a;是在管理数据资产过程中行使权力和管控&#xff0c;包括计划、监控、和实施。 职能&#xff1a;指导所有其他数据管理领域的活动。目的&#xff1a;确保根据数据管理制度和最佳实践正确地管理数据。整体驱动力&#xff1a;确保组织可以从其…

hashmap专题

hashmap专题 常见maphashMapjdk1.8HashMap新变化hashmap源码中重要的常量存储结构put 存入数据过程取数据过程get()扩容hashmap 树化/链化hashmap的容量 桶的数量为什么要是2的n次方&#xff1f;hashmap为什么线程不安全 常见map hashtable线程安全&#xff0c;但效率太低。ha…

《深入Linux内核架构》第2章 进程管理和调度 (6)

目录 2.8 调度器增强 2.8.1 SMP调度 2.8.2 调度域和控制组 2.8.3 内核抢占和低延迟相关工作 2.9 小结 2.8 调度器增强 2.8.1 SMP调度 进程迁移&#xff1a; 含义&#xff1a;把进程从一个CPU就绪队列迁移至另一个CPU就绪队列。 作用&#xff1a;CPU负荷均衡。 缺点&…

【评分标准】【网络系统管理】2019年全国职业技能大赛高职组计算机网络应用赛项H卷 无线网络勘测设计

第一部分&#xff1a;无线网络勘测设计评分标准 序号评分项评分细项评分点说明评分方式分值1点位设计图AP编号AP编号符合“AP型号位置编号”完全匹配5AP型号独立办公室、小型会议室选用WALL AP110完全匹配5员工寝室选用智分&#xff0c;其他用放装完全匹配5其它区域选用放装AP…

【原创】JDK17获取CPU占用率、内存占用率以及堆内存使用情况

前言 我之前一篇文章&#xff1a; 【原创】Java获取CPU占用率、内存占用率最简单的方式_java获取cpu使用率-CSDN博客 这篇文章虽然简单&#xff0c;但是只能针对JDK8&#xff0c;换成现在模块化的JDK后&#xff0c;OperatingSystemMXBean类就无法反射获取其中的信息了&#…

代码随想录 动态规划-股票问题

目录 121.买卖股票的最佳时机 122买卖股票的最佳时机II 123. 买卖股票的最佳时机III 188.买卖股票的最佳时机IV 309.买卖股票的最佳时机含冷冻期 714.买卖股票的最佳时机含手续费 121.买卖股票的最佳时机 121. 买卖股票的最佳时机 简单 给定一个数组 prices &…

【FLOOD FILL专题】【蓝桥杯备考训练】:扫雷、动态网格、走迷宫、画图、山峰和山谷【已更新完成】

目录 1、扫雷&#xff08;Google Kickstart2014 Round C Problem A&#xff09; 2、动态网格&#xff08;Google Kickstart2015 Round D Problem A&#xff09; 3、走迷宫&#xff08;模板&#xff09; 4、画图&#xff08;第六次CCF计算机软件能力认证&#xff09; 5、山…

Docker 安装 Skywalking以及UI界面

关于Skywalking 在现代分布式系统架构中&#xff0c;应用性能监控&#xff08;Application Performance Monitoring, APM&#xff09;扮演着至关重要的角色。本文将聚焦于一款备受瞩目的开源APM工具——Apache Skywalking&#xff0c;通过对其功能特性和工作原理的详细介绍&am…

cocos(困扰了我一晚上的代码)地图适配不同手机屏幕

Creator 版本&#xff1a;3.8.2 目标平台&#xff1a; 微信小游戏 有人反馈我的小游戏没有做屏幕适配。其实我是做了的。但是在不同手机分辨率的情况下。 适配出了问题。然后我改了一晚上的代码终于做好了。 设计的分辨率是960*640.也就是白色区域。 但是大部分手机是…

2024全国水科技大会:【协办单位】山东文远环保科技股份有限公司

山东文远环保科技股份有限公司坐落于千年古城齐国故都--临淄。初始成立于2011年&#xff0c;是淄博市首批国有资本参股的混合改制企业。 公司着力打造环保设备制造、环保工程及服务、环保水务/固废处理/新能源项目投资及运营管理、固废循环经济产业园等四大板块。是一家集投资、…

【spring】@Conditional注解学习

Conditional介绍 Conditional注解用于按照设定的条件进行判断&#xff0c;从而决定是否将某个bean注册到Spring容器中。 Conditional注解是在Spring 4.0版本中引入的&#xff0c;它提供了一种更加灵活的方式来控制bean的创建和注册。在此之前&#xff0c;开发者通常使用Profi…

【网络原理】HTTP 请求 (Request)详解

文章目录 &#x1f38d;请求格式&#x1f384;认识URL&#x1f338;query string&#x1f338;关于 URL encode &#x1f340;认识 “方法” (method)&#x1f338;GET方法&#x1f338;POST 方法&#x1f338;GET 和 POST 的区别 &#x1f332;认识请求 “报头” (header)&…

cocos控制物体移动轨迹

引擎&#xff1a;CocosCreator 3.8.2 思考了很久决定要不要发这票文章。因为毕竟我也是一个新手。但是这个问题真的困扰了我很久。 特意分享给大家。 如图所示有2个方块。他们可以跟着轨迹移动。 这个轨迹箱子总体来说有以下几个规则。 1.只能沿着轨迹移动。 2.上面只能有一…

[ C++ ] STL---string类的模拟实现

目录 string类的成员变量 构造函数 有参构造函数 无参构造函数 析构函数 拷贝构造函数 赋值运算符重载 string类对象的容量操作 string类对象的遍历与访问 [ ] 下标遍历 迭代器遍历 string类对象的增删查改 string类的成员变量 string类底层为动态开辟的字符数组&a…

提升水库大坝安全与效率:现代技术云平台的应用

在我国&#xff0c;水库大坝的数量居世界之首&#xff0c;它们在推动国民经济发展中扮演着不可或缺的角色。然而&#xff0c;要想让这些水利工程充分发挥其价值&#xff0c;不仅需要精准的调度与高效的管理&#xff0c;更重要的是要确保其安全无虞。一旦发生事故&#xff0c;后…