并发编程所需的底层基础

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

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.高可靠性。需采取冗余措施,双机系统前后台工作,也包括必要的保密措施等。
在这里插入图片描述
主要优点:能够响应一些紧急任务,某些紧急任务不需要排队等待。
在实时操作系统的控制下,计算机系统接收到外部信号后能及时进行处理,并且在严格要求的实现内处理完事件。实时操作系统的主要特点是及时性和可靠性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android VPN TLV协议场景使用

TLV协议格式是一种可变格式&#xff0c; TLV的意思就是&#xff1a;Type类型&#xff0c; Lenght长度&#xff0c;Value值&#xff1b; Type和Length的长度固定&#xff0c;一般那是2、4个字节&#xff1b; Value的长度有Length指定&#xff1b; 解析方法&#xff1a; 1.读取t…

C++ list详解及模拟实现

目录 本节目标 1. list的介绍及使用 1.2 list的使用 2.list的模拟实现 1.对list进行初步的实现 2.头插和任意位置的插入 3.pos节点的删除&#xff0c;头删&#xff0c;尾删 4.销毁list和析构函数 5.const迭代器 6.拷贝构造和赋值操作 3.完整代码 本节目标 1. list的…

Zookeeper的ZAB协议原理详解

Zookeeper的ZAB协议原理详解 如何保证数据一致性。 Paxos&#xff0c; 吸收了主从。 zk 数据模型Watch机制 zab zookeeper原子广播协议。 ZAB概念 ZooKeeper是通过Zab协议来保证分布式事务的最终一致性。 Zab(ZooKeeper Atomic Broadcast,.ZooKeeper原子广播协议)支持…

8 款AI 绘画生成器:从文本创建 AI 艺术图像

人工智能正在影响各行各业&#xff0c;近年来它对创意产业的影响越来越大。由于AI绘画生成器的可操作性&#xff0c;许多人有机会用自己的想法进行艺术创作——即使他们没有接受过系统的专业艺术教育。 最先进的人工智能绘画生成器可能会改变我们未来创作艺术的方式。使用 AI …

pandas中DataFrame用法(python)

简介 DataFrame 一个表格型的数据结构&#xff0c;既有行标签&#xff08;index&#xff09;&#xff0c;又有列标签&#xff08;columns&#xff09;&#xff0c;它也被称异构数据表&#xff0c;所谓异构&#xff0c;指的是表格中每列的数据类型可以不同&#xff0c;比如可以…

【火猫TV】LPL春季赛前瞻:Tabe迎战LNG OMG关键一战!

北京时间3月20日&#xff0c;LPL春季赛今天继续进行&#xff0c;今天将会迎来春季赛常规赛第八周第三个比赛日&#xff0c;今天的两场比赛是LNG战队对阵AL战队以及OMG战队对阵BLG战队&#xff0c;今天的两场比赛对于LNG、AL以及OMG战队都是比较重要的&#xff0c;目前三支战队都…

「Nginx」Nginx配置详解

「Nginx」Nginx配置详解 参考文章1、正向代理和方向代理2、指定域名允许跨域 参考文章 1、Nginx反向代理 2、nginx配置详解 3、Nginx服务器之负载均衡策略&#xff08;6种&#xff09; 1、正向代理和方向代理 2、指定域名允许跨域 map $http_origin $allow_cors {default 1;…

vmare17 安装不可启动的iso镜像系统

由于要测试一个软件&#xff0c;要安装一个Windows11_InsiderPreview_Client_x64_zh-cn_26058.iso 于是在虚拟机里捣鼓一下。但是这个iso好像不能直接启动 这样就无法直接安装了&#xff0c;怎么办呢&#xff0c;可以先用个pe系统引导进去&#xff0c;再在PE系统里安装这个iso…

河北库卡机器人KR500电源模块故障,该如何处理?

库卡机器人KR500电源模块常见故障类型及维修方法 1&#xff09;电源模块故障指示灯亮 故障现象&#xff1a;库卡机器人KR500电源模块上的故障指示灯亮起&#xff0c;机器人不能正常工作。 维修方法&#xff1a;根据故障指示灯的闪烁频率或颜色判断具体的故障类型。然后&#xf…

计算机是如何工作的?CPU、内存、操作系统...

文章目录 前言一、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;二、内存和硬盘区别三、CPU四、操作系统4.1计算机系统的分层视图4.2进程和线程4.3进程控制块&#xff08;PCB&#xff09;4.4进程管理 五、经典面试题 前言 计算的需求在⼈类的历史中是⼴泛存在…

用 ElementPlus的日历组件如何改为中文

文章目录 问题分析 问题 直接引入日历组件后&#xff0c;都是英文&#xff0c;应该如何把头部英文改为中文 <template><el-calendar><template #date-cell"{ data }"><p :class"data.isSelected ? is-selected : ">{{ data.da…

Web and HTTP

Web and HTTP First, a review… ▪ web page consists of objects ▪ object can be HTML file, JPEG image, Java applet, audio file,… ▪ web page consists of base HTML-file which includes several referenced objects ▪ each object is addressable by a URL, e.g.,…

java面向对象进阶---学习第一课

1.static学习&#xff1a; static&#xff0c;是java修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。 注意&#xff1a;&#xff01;&#xff01;&#xff01;共享的情况&#xff0c;就是用static来修饰 类名&#xff1a;1.见名知意。2.私有化构造方法 3.方法定义…

发布 AUR 软件包 (ArchLinux)

首发日期 2024-03-09, 以下为原文内容: 理论上来说, 我们应该平等的对待每一个 GNU/Linux 发行版本. 但是, 因为窝日常使用 ArchLinux, 所以对 ArchLinux 有一些特别的优待, 比如自己做的软件优先为 ArchLinux 打包发布. 本文以软件包 librush-bin 为例, 介绍发布 AUR 软件包的…

LF-YOLO

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

kaggle竞赛宝典 | 时间序列和时空数据大模型综述!(建议收藏!)

本文来源公众号“kaggle竞赛宝典”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;时间序列和时空数据大模型综述&#xff01; 作者&#xff1a;算法进阶 时间序列和时空数据大模型综述&#xff01; 1 前言 大型语言模型&…

short、byte 运算不能赋值给原类型问题分析

一、题目分析 该题目来源于牛客网中的一道选择题 给出如上代码&#xff0c;问你输入结果&#xff0c;但是考试时并不能看出错误原因导致踩坑 &#xff1b; 鼠标指向报错位置&#xff0c;直接给出提示了&#xff0c;两种类型四则运算都会强制转换为int之后进行运算 二、具体原…

演讲嘉宾公布 | 智能家居与会议系统专题论坛将于3月28日举办

一、智能家居与会议系统专题论坛 智能家居通过集成先进的技术和设备&#xff0c;为人们提供了更安全、舒适、高效、便捷且多彩的生活体验。智能会议系统它通过先进的技术手段&#xff0c;提高了会议效率&#xff0c;降低了沟通成本&#xff0c;提升了参会者的会议体验。对于现代…

Linux系统部署SQL Server结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库&#xff0c;并结合cpolar内网穿透工具&#xff0…

使用OpenHarmony如何定制开发一套分布式亲子早教系统

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式益智拼图游戏&#xff0c;可以两台设备同时开启一局拼图游戏&#xff0c;每次点击九宫格内的图片&#xff0c;都会同步更新两台设备的图片位置。效果图如下&#xff1a; 说明&#xff1a; 本示例涉及使用…