计算机是如何工作的(简单介绍)

目录

一、冯诺依曼体系

二、CPU基本流程工作

逻辑⻔

电⼦开关——机械继电器(Mechanical Relay)

⻔电路(Gate Circuit)

算术逻辑单元 ALU(Arithmetic & Logic Unit)

算术单元(ArithmeticUnit)

逻辑单元(Logic Unit)

ALU 符号

寄存器(Register) 和内存(RAM)

控制单元 CU(Control Unit)

指令(Instruction)

三、CPU的基本工作流程

总结:

四、操作系统

五、进程 / 任务(Process / Task)

操作系统的进程管理

PCB的一些核心属性

pid

内存指针

文件描述符表

CPU在pcb中的体现

并发和并行:

状态

优先级:

记账信息:

上下文:

进程的内存分配:

进程间的通信:

都看到这了,点个赞再走吧,谢谢谢谢谢!!!


一、冯诺依曼体系

现代的计算机,大多是遵守冯诺依曼体系结构

如图:

各个部分的分工:

• CPU中央处理器:进⾏算术运算和逻辑判断。
• 存储器:分为外存和内存,⽤于存储数据(使⽤⼆进制⽅式存储)。
• 输⼊设备:⽤⼾给计算机发号施令的设备。
• 输出设备:计算机个⽤⼾汇报结果的设备。


针对存储空间进行比较:

硬盘 > 内存 >> CPU

针对数据访问速度进行比较:

CPU >> 内存 > 硬盘


二、CPU基本流程工作

门电路 => 半加器 => 全加器 => 加法器 => ALU运算器 => 差不多构成CPU

逻辑⻔

电⼦开关——机械继电器(Mechanical Relay)

通过电⼦开关,我们可以实现 1 位(bit)的看似⽆⽤的逻辑运算,但⾄少它⼯作起来了,不是么。怎么使⽤电⼦开关组合出真正有⽤的逻辑组件。
以后的真空管、晶体管的实质也是完成类似的⼯作,只是物理原理更加复杂,就做深⼊解读了。

⻔电路(Gate Circuit)

接下来,我们学习如何使⽤电⼦开关构建⼀些有⽤的部件——⻔电路。可以实现 1 位(bit)的基本逻辑运算。

算术逻辑单元 ALU(Arithmetic & Logic Unit)

ALU 是计算机中进⾏算数、逻辑运算的核⼼部件,是计算机的数学⼤脑。接下来,我们⽤上⼀节构建的逻辑⻔来完成⾃⼰的⼀个 ALU,去学习理解它的⼯作模式,以便作为我们进⼀步理解现代计算机⼯作原理的基⽯。

算术单元(ArithmeticUnit)

算数单元,负责计算机⾥的所有数字操作,⽐如四则运算,当然它能做的远远不⽌这些。接下来我们会带着⼤家实现⼀个 8 位(bits)的加法器(adder)来,以演⽰整个过程,其他的运算器就不再详细讲解了。

⾄此,⼀个 8 位(bits) 加法器就被我们从⽆到有制作了出来。算术单元⽀持的操作当然远不⽌这些,通过继续组合逻辑⻔,算数单元可以做到加减乘除甚⾄更多的算术运算,但⼀个加法器作为演⽰已经⾜够了。实际上,乘法器和除法器的制作难度是要⾼于加、减法器的,有兴趣的同学可以尝试做更多的了解。
 

逻辑单元(Logic Unit)

逻辑单元主要⽤来进⾏逻辑操作,最基本的操作就是 与、或、⾮操作,但不只是⼀位(bit)数的⽐较。

ALU 符号

经过我们的努⼒,通过基本的逻辑⻔电路,我们⼀步步地做出了⼀个 8 位(bits) ALU,甚⾄⽐ Intel 74181 还要强⼤,Intel 74181 只是⼀个 4 位(bits) ALU。当然现代的计算机中的 ALU 部件⾮常强⼤,复杂度远远超过了我们的想象,32 位 甚⾄ 64 位基本已经普及全球了。但⽆论如何,再复杂的 ALU 也是芯⽚⼯程师像我们这样,⼀层⼜⼀层,⼀步⼜⼀步地将其抽象出来的。ALU 是第⼀次将⼈类历史上的数学和逻辑学学科有机地结合起来,可以视为⼈类智慧发展的现代巅峰。

寄存器(Register) 和内存(RAM)

光有 ALU 还是远远不够的,我们⽆法为 ALU 提供存储的部件,所以接来下,我们利⽤⻔电路简单说明下存储的制作。注意,虽然图中没有明显的表⽰出来,但这些存储都是要求必须保持通电状态的,也就是这些存储都是易失的(volatile)。

中间我们隐藏了⼀些实现细节,最后的效果就是:使能线置位时,输⼊为 1,保存 1;输⼊为 0,保存 0。使能线不置位时,则写⼊⽆效。我们可以利⽤⻔锁,构建我们需要的寄存器和内存。

内存的构建要⽐这个复杂⼀点,但基本原理⼀致。如此构建的内存被称为 RAM(Random Access Memory),可以⽀持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1) 的硬件⽀持。

控制单元 CU(Control Unit)

我们现在有 ALU、存储了,但这还是不⾜以让我们的计算机⼯作起来,我们需要有⼀个部件来指挥 ALU 进⾏何种的运算,⽽这个部件就是控制单元(CU)。

指令(Instruction)

⾸先,我们先介绍下我们需要到的指令(instruction)。
所谓指令,即指 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成。
其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中

三、CPU的基本工作流程

上面这一段的指令,其实就是内存中的一段数据

第一步:

第二步:

第三步:

第四部:

再往下就是0地址了,说明指令已经执行完了。

总结:

1、CPU要执行的指令,是在内存中的(冯诺依曼体系结构,基本设定,执行单元(CPU)和存储单元(内存)是分开的,让执行单元和存储单元解耦合)

2、CPU要想执行指令,就需要先取指令,再解析指令,然后才能执行指令。

3、取指令需要从内存中读取指令到CPU的寄存器中,取指令的操作,其实是非常耗时的(读取内存操作相对于CPU执行计算,开销要大很多)。因此CPU中通过“缓存”、“流水线”等技术,来优化这里的效率。

4、CPU解析指令的时候,需要用到“指令表”,不同架构的CPU支持的指令表不同(x86和arm等都是不同的),指令表细节,已经写死到CPU中了,CPU是可以很容易识别的。

5、指令在执行过程中,可能会带有一些操作数,不同指令、操作数的个数含义都有所不同。

6、CPU重要的参数,主频:主频表示的含义,近似看成是一秒钟以内,CPU能够执行的指令个数。


四、操作系统

操作系统是一个软件,有代码构成的程序

主要职责:

1、管理各种硬件设备

2、给其他软件提供稳定的运行环境

上面这两种职责类似抽象、封装。我们的电脑有很多硬件,如显示器、鼠标、内存、硬盘等等,

这些硬件的生产厂商都不同,所提供的的API也会不同,那么一个电脑是怎么兼容那么多不同的硬件设备呢?很显然,是Windows操作系统,统一管理这么多硬件设备,给软件统一API。


五、进程 / 任务(Process / Task)

进程就是操作系统提供的一种软件资源,我们现在的电脑所用的就是多任务操作系统,可以同时运行多个任务,如:edge,QQ,IDEA等等,而单任务操作系统一次只能运行一个任务,如:老年机。

操作系统的进程管理

1、先描述,用类 / 结构体这样的的方式,把实体属性表示出来,我们给表示进程的结构体统称为PCB。

2、再组织,用一定的数据结构,把这些结构体给组织起来,在Linux中,使用链表的这种数据结构将这些结构体给组织起来。

PCB的一些核心属性

pid

PCB是一个非常庞大的结构体(上百个属性),我们要怎么怎么区分这么多的属性呢?

引用pid,进行身份标识,用不同的整数,代表不同的进程,这些整数都是不重复的,用来区分电脑上那么多不同的进程,系统也会保证,每个进程的pid时唯一的。

比如我们在任务管理器结束一个任务,就要在任务管理器中选取到这个pid,然后调用系统api,把pid参数传进去,就能把这个后台杀死。

内存指针

整个系统中,有些人的电脑的内存是16G的或者其他大小的内存,那么我们内存这么多,16G都可以给我们随便调用的吗?显然不是,就好比去旅馆开房,我们要先订房,交钱才能进到指定的房间,但是如果我们直接强行进入某个房间呢,显然是不合法的。内存的调用也是如此,每个进程,都必须自己申请一块内存,申请了这块内存,进程才能使用。

而内存指针,就是用来描述:某些进程能使用哪些内存。内存指针,也是描述某些进程的使用情况。

文件描述符表

文件描述符表,描述了这个进程,所涉及的硬盘相关资源。一个进程想要操作文件,需要先“打开文件”,而打开文件,就是让进程在文件描述符表中分配一个表项(构造一个结构体),表示这个文件的相关信息。

CPU在pcb中的体现

上面的都是内存、硬盘在pcb中的体现,那么在CPU中的体现如何呢?

一个进程消耗CPU资源是啥意思?比如CPU是一个舞台,要执行的指令就是演员,但是同一时刻,一个舞台只能给一个演员表演,CPU可能是单核的,也可能是多核的,这时就涉及到分时复用(并发)。

并发和并行:

单核的cpu:是先处理进程1完,再处理进程2....,依次往后推的,但是处理这些进程的过程是很快的,我们人脑的反应没那么快,只要电脑切换的足够快,我们人感知不到,我们就可以认为同一时刻,在人眼看来就是多个任务 / 进程 “同时进行”。这个就是并发

多核CPU,也就意味着有多个舞台,多个演员可以在舞台上表演,也就是多个进程可以同时执行,只不过是在不同的核心上,这个就是并行,同时也在发送着并发,因为每个核心都在快速的切换不同的进程。

当代计算机执行的过程,是并行和并发同时在发生的,对此,往往就把“并行和并发”统称为并发。

状态

描述某个进程,是否能够在CPU上执行,有的时候会不能执行,比如说Scanner,这个要等用户输入完内容,才能执行下一个指令,而状态分又可以细分,如下。

        就绪状态:

                随时准备好去CPU上执行,操作系统,一打招呼,就立马执行这个指令。

        阻塞状态:

                这个进程,当前不方便去CPU上执行,不应该去调度它,(比如,进程在等待IO,来自控制台的输入/输出)

优先级:

多个进程在等待系统调度,多个进程的调度会有先后关系,不那么平均,比如你在玩cf,打开了cf,同时qq在后台挂着,这时cf的优先级就比qq高,先玩游戏,玩完后才看qq是否有消息。

记账信息:

针对每个进程,占据多少CPU的时间,进行一个统计,会根据这个统计结果来进一步调整调度策略,因此就需要在下一个轮次进行调整,确保每个进程都不至于出现完全捞不着CPU的情况。

上下文:

上下文其实就是一种记录数据和恢复数据的形式,是支撑进程调度的重要属性。

类似游戏中的存档和读档。

存档:就是进程中得出的某些中间结果,把这个中间结果放在内存的某一个地方上。

读档:等进程需要某个中间结果数据的时候,就从内存中调用这个数据,恢复到进程中。

保存上下文:就是把cpu关键寄存器上的数据,保存到内存中。

恢复上下文:就是把保存在内存中的一些关键数据,加载到CPU上的对应寄存器中

进程的内存分配:

核心结论:每个进程都是相互独立的,互不干扰的。具有“独立性”

如果一个进程崩溃了,也影响到了其他进程崩溃,这种情况,用户的体验是很差的。所以一般情况下,A进程是不能直接访问B进程的内存。

进程间的通信:

虽然进程具有“独立性”,但是进程间的通信和“独立性”是不矛盾的。

当一个任务需要多个进程来协同配合完成,系统就会提供一个公共空间,让不同的进程在这个公共空间进行数据交互。


都看到这了,点个赞再走吧,谢谢谢谢谢!!!

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

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

相关文章

KVM Cloud云平台

项目介绍 KVM Cloud 是一款基于Java实现的轻量级私有云平台,旨在帮助中小企业快速实现计算、存储、网络等资源的管理,让企业拥有自己的云平台,包括但不限于如下功能: 1、基于KVM的VM基础功能(创建、启动、停止、重装、webVNC等功能) 2、使用…

卷积神经网络(CNN)衣服图像分类的实现

文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3.归一化4.调整图片格式5. 可视化 二、构建CNN网络模型三、编译模型四、训练模型五、预测六、模型评估 前期工作 1. 设置GPU(如果使用的是CPU可以…

JVM——运行时数据区(程序计数器+栈)

目录 1.程序计数器2.栈Java虚拟机栈 - 栈帧的组成1.Java虚拟机栈-局部变量表3.Java虚拟机栈-操作数栈3.Java虚拟机栈-帧数据 3.Java虚拟机栈-栈内存溢出4.本地方法栈 ⚫ Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。 ⚫ 《Java虚拟机规范》中…

Unity减少发布打包文件的体积(二)——设置WebGL发布时每张图片的压缩方式

一个项目在发布成WebGL后,其体积至关重要,体积太大,用户加载会经历一个漫长的等待…轻则骂娘,重则用脚把电脑踢烂(扣质保金)… 那么如何减少发布后的体积呢,本文从图片的压缩开始入手。 前传回顾: Unity减…

Linux mmap 的作用是什么?

文章目录 1.简介2.相关函数3.mmap和常规文件操作的区别4.作用参考文献 1.简介 mmap&#xff08;memory map&#xff09;即内存映射&#xff0c;用于将一个文件或设备映射到进程的地址空间。 2.相关函数 创建映射函数&#xff1a; #include <sys/mman.h>void *mmap(v…

Upwork 新手使用指南——如何快速在Upwork上接单

Upwork 这个自由职业平台不知道大家听说过没&#xff0c;在 Upwork&#xff0c;如果你是自由职业者&#xff0c;你可以接单&#xff1b;如果你是客户&#xff0c;你可以找人干活。但对于新手来说&#xff0c;怎么使用 Upwork 并且用好 Upwork 是一大难题。因此今天给大家分享 U…

你好,我叫Python,欢迎你认识派森。(来自关于Python语言的全方位自我介绍。

文章目录 自我简介一、Python的发展历程二、Python的特色1.语言特色2.语法特色 三、Python2与Python3的比较1.print 函数2.Unicode3.除法运算4.异常5.八进制字面量表示6.不等运算符7.python 3.0严格使用tab键进行缩进 四、Python适用开发场景及成果1.应用领域2.Python开发出的应…

python科研绘图:P-P图与Q-Q图

目录 什么是P-P图与Q-Q图 分位数 百分位数 Q-Q图步骤与原理 Shapiro-Wilk检验 绘制Q-Q图 绘制P-P图 什么是P-P图与Q-Q图 P-P图和Q-Q图都是用于检验样本的概率分布是否服从某种理论分布。 P-P图的原理是检验实际累积概率分布与理论累积概率分布是否吻合。若吻合&#xf…

srs webrtc推拉流环境搭建(公网)

本地环境搭建 官方代码https://github.com/ossrs/srs 拉取代码&#xff1a; git clone https://github.com/ossrs/srs.gitcd ./configure make ./objs/srs -c conf/https.rtc.confsrs在公网上&#xff0c;由于srs是lite-ice端&#xff0c;导致他不会主动到srs获取自己的公网i…

MySQL的执行器是怎么工作的

作为优化器后的真正执行语句的层&#xff0c;执行器有三种方式和存储引擎&#xff08;一般是innoDB&#xff09;交互 主键索引查询 查询的条件用到了主键&#xff0c;这个是全表唯一的&#xff0c;优化器会选择const类型来查询&#xff0c;然后while循环去根据主键索引的B树结…

nn.KLDivLoss,nn.CrossEntropyLoss,nn.MSELoss,Focal_Loss

KL loss&#xff1a;https://blog.csdn.net/qq_50001789/article/details/128974654 https://pytorch.org/docs/stable/nn.html 1. nn.L1Loss 1.1 公式 L1Loss: 计算预测 x和 目标y之间的平均绝对值误差MAE, 即L1损失&#xff1a; l o s s 1 n ∑ i 1 , . . . n ∣ x i…

Java 设计模式——桥接模式

目录 1.概述2.结构3.实现3.1.实现化类3.2.具体实现化类3.3.抽象化类3.4.扩展抽象化类3.5.测试 4.优缺点5.使用场景 1.概述 &#xff08;1&#xff09;现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。我们可以利用继承的方式来…

数据结构与算法之美学习笔记:22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用?

目录 前言应用五&#xff1a;负载均衡应用六&#xff1a;数据分片应用七&#xff1a;分布式存储解答开篇 & 内容小结 前言 本节课程思维导图 今天&#xff0c;我们再来看剩余三种应用&#xff1a;负载均衡、数据分片、分布式存储。你可能已经发现&#xff0c;这三个应用都…

详解Java设计模式之职责链模式

原文&#xff1a;详解Java设计模式之职责链模式_java_脚本之家 责任链模式是一种行为设计模式&#xff0c;使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系&#xff0c;文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下 − 目…

直播美颜SDK对比评测:技术原理与应用实践

直播行业蓬勃发展&#xff0c;其中&#xff0c;美颜滤镜技术在直播中扮演着至关重要的角色。本文将深入探讨不同直播美颜SDK的技术原理&#xff0c;并通过对比评测它们在实际应用中的表现&#xff0c;以揭示各SDK的优劣之处。 一、背景 随着直播技术的不断进步&#xff0c;直…

虚幻C++ day5

角色状态的常见机制 创建角色状态设置到UI上 在MainPlayer.h中新建血量&#xff0c;最大血量&#xff0c;耐力&#xff0c;最大耐力&#xff0c;金币变量&#xff0c;作为角色的状态 //主角状态UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category "Playe Stats&…

基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码

基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工水母算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工水母优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Network(三)动态路由与ACL配置

一 三层交换机 1 三层交换机概述 三层交换二层交换三层转发 2 虚拟接口概述 在三层交换机上配置的VLAN接口为虚拟接口&#xff0c;使用Vlanif&#xff08;VLAN虚拟接口&#xff09;实现VLAN间路由&#xff0c;VLAN接口的引入使得应用更加灵活 三层交换机VLAN间通信的转发…

vue3+vite+SQL.js 读取db3文件数据

前言&#xff1a;好久没写博客了&#xff0c;最近一直在忙&#xff0c;没时间梳理。最近遇到一个需求是读取本地SQLite文件&#xff0c;还是花费了点时间才实现&#xff0c;没怎么看到vite方面写这个的文章&#xff0c;现在分享出来完整流程。 1.pnpm下载SQL.js(什么都可以下)…

力扣每日一题-数位和相等数对的最大和-2023.11.18

力扣每日一题&#xff1a;数位和相等数对的最大和 开篇 这道每日一题还是挺需要思考的&#xff0c;我绕晕了好久&#xff0c;根据题解的提示才写出来。 题目链接:2342.数位和相等数对的最大和 题目描述 代码思路 1.创建一个数组存储每个数位的数的最大值&#xff0c;创建一…