【JavaEE】计算机是怎样工作的,五分钟带你理解计算机!!!

news2024/12/27 4:19:58

作者:学Java的冬瓜
博客主页:☀学瓜的主页🌙
专栏:JavaEE
分享:一、让你知道我的存在;二、让你存在下去,对我来说都是危险的,都违反第一条公理。
——《三体》
主要内容:对冯诺依曼体系结构的认识,CPU的组成,操作系统的功能,进程的调度,管理内存等

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

文章目录

  • 一、冯诺依曼体系
    • 1、冯诺依曼体系结构
    • 2、详解
    • 3、《三体》人体计算机分析
  • 二、CPU的构造
    • 1、ALU
    • 2、CU/寄存器/时钟
  • 三、操作系统
    • 1、什么是操作系统
    • 2、操作系统的定位
    • 3、什么是进程/任务?
    • 4、进程,PCB,CPU分配-进程调度
    • 5、内存管理
    • 6、进程间通信

一、冯诺依曼体系

1、冯诺依曼体系结构

CPU 中央处理器:进行算数运算和逻辑运算
存储器:分为内存和外存,用于存储数据(使用二进制的方式)
输入设备: 如键盘,鼠标,麦克风,摄像头
输出设备: 如显示器,音箱等
注意:有的设备既可以输入,又可以输出,比如触摸屏、网卡(既可以上传也可以下载)

在这里插入图片描述

2、详解

1> 主频:CPU最重要的指标
如我的电脑主频为2.1Ghz,描述了CPU的运算速度。本质上是2.1G个时钟周期,可以近似的看成每秒能执行2.1G条指令,即21亿条指令(因为对于一条指令,大部分都能在一个时钟周期内完成)。

2> 显卡(GPU),显卡和CUP类似,区别在于:
CPU是通用计算机芯片,GPU是专用计算机芯片 通俗来讲,CPU属于六边形战士各方面功能都强,而GPU专用于某一个方面。

3> 存储器详解: 存储器又包括内存和外存内存又包括随机存取存储器RAM(集成到CPU里,用于和CPU交换高速缓存数据) 和只读存储器ROM。外存如硬盘,U盘等等。
4> 寄存器CPU内部用来存放数据的一些小型存储区域。

3、《三体》人体计算机分析

分析:在《三体》中,用三个人实现最基本的与门、或门、与非门、或非门、异或门等,用两个人实现非门,然后组合实现半加器、全加器,加法器等等。最终用三千万人组成CPU、存储器、输入和输出的计算机结构的人列计算机。(以后学深后专门出一篇博客来研究介绍)

二、CPU的构造

ALU+CU+寄存器+时钟 组成CPU

1、ALU

ALU是计算机进行算数、逻辑运算的核心部件,是计算机的数学大脑,下面就来制造一个ALU加法器。

1> 从逻辑门到加法器:
在这里插入图片描述
2> 图示:
异或:
在这里插入图片描述
半加器:
在这里插入图片描述
全加器:
在这里插入图片描述
加法器:
在这里插入图片描述

2、CU/寄存器/时钟

1> CU为 Cintrol Unit(控制单元)缩写: 作为CPU的一部分,基本功能是从内存存取指令,分析指令和执行指令。

我们现在有 ALU、存储(RAM和寄存器)了,但这还是不足以让我们的计算机工作起来,我们需要有一个部件来指挥 ALU进行何种的运算,而这个部件就是控制单元(CU)

在这里插入图片描述
2> 时钟

就是一的2中提到的CPU主频,为时钟震荡每秒的次数,可以近似看作每秒执行的指令数。

三、操作系统

1、什么是操作系统

1> 首先,什么是操作系统,它的作用是什么?

操作系统:搞管理的系统软件

  • 对下,管理硬件设备
  • 对上,给软件提供稳定的运行环境

操作系统是软件 硬件 用户之间交互的媒介

2> 知道了操作系统是什么,功能是啥,那么有哪些操作系统呢?

Windows
Linux(特别适合开发和部署)
Mac(苹果电脑的系统,和Linux很相似)
Android(安卓,本质上也是Linux)
IOS(苹果)

2、操作系统的定位

在这里插入图片描述

3、什么是进程/任务?

1> 什么是进程?

进程是操作系统对正在运行的程序的一种抽象,也就是说,跑起来的程序叫进程,没跑起来的还是程序。可以把进程看作程序一次运行过程。
在操作系统内部,进程是操作系统进行资源分配的基本单位。
电脑卡不卡,和你的硬盘上的东西无关,取决于你开的进程多不多。

2> 什么是句柄?

系统中有很多的软件资源,进程就是其中一种,写代码时就需要用到一些软件资源。
软件资源是在操作系统内核里,在引用程序的代码中,不方便直接操作资源。
句柄(handler),可以想象成C语言里的指针,可以拿来标识资源。有了句柄,系统调用就可以借助句柄操作,操作系统内核的软件资源了

4、进程,PCB,CPU分配-进程调度

进程是一个特别重要的资源,由操作系统内核负责管理。

1> 怎么描述和组织进程?
在这里插入图片描述

2> PCB包括进程的哪些属性?

在这里插入图片描述
在这里插入图片描述

3> 想要深刻了解进程调度,要知道什么是并行?什么是并发?

在这里插入图片描述

5、内存管理

1> 理解

虚拟内存:

  • 在程序中获取到的内存地址,并不是真实的物理地址,而是通过转化而来的虚拟内存地址 在C语言中学到的地址就是虚拟地址。

真正的内存:

  • 在真正的内存中,每个空间占1Byte。 每个空间都有一个编号,编号从0开始,这个编号就是内存的物理地址

内存有个特别重要的特性:
支持随机访问,即访问内存上任意地址的数据,耗费时间基本相等。

2> 画图分析

进程直接访问内存的缺陷:
进程之间可能会因为内存越界访问,出现互相影响的情况。
在这里插入图片描述
改进进程互相影响问题:
通过引入虚拟地址的方式,从源头解决(内存冲突)进程互相影响的问题
在这里插入图片描述

6、进程间通信

在上面中,使用MMU硬件设备解决了进程间相互影响的问题,做到了进程与进程间的隔离。但有时候,我们需要进程之间进行交互,所以就在隔离的基础上留了个后门,就是进程间通信。
进程间通信方式有很多,但核心思路是一致的。

进程间通信的核心思路

  • 设计一个多个进程都可以访问到的通信方式/公共空间,在这个公共空间内进行进程之间的数据交互。
  • 之后主要学到两种:基于文件,基于网络

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

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

相关文章

C++11标准模板(STL)- 算法(std::push_heap)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 数据结构的堆物理结构是数…

Linux离线安装RabbitMQ

使用docker离线安装rabbitmq 1.在外网环境下载rabbitmq:management镜像 命令&#xff1a;docker pull rabbitmq:management 启动容器&#xff08;即验证镜像是否有用&#xff09;&#xff1a; 命令&#xff1a;docker run -d --hostname wxrabbit --name rabbitmq -p 15672:15…

【深度学习】学习率预热和学习率衰减 (learning rate warmup decay)

背景 在深度学习中学习率这个超参数&#xff0c;在选取和调整都是有一定策略的&#xff0c;俗称炼丹。有时我们遇到 loss 变成 NaN 的情况大多数是由于学习率选择不当引起的。 神经网络在刚开始训练的时候模型的权重(weights)是随机初始化的&#xff0c;选择一个较大的学习率…

干货 | 浅谈携程大住宿研发效能提升实践

作者简介Mia &#xff0c;携程高级项目经理&#xff0c;负责酒店Devops实践&#xff0c;关注Devops/敏捷等领域。YY&#xff0c;携程敏捷教练&#xff0c;负责团队敏捷转型&#xff0c;研发效能提升实践&#xff0c;关注Agile、Devops、研发效能等领域。一、前言管理大师彼得德…

[ChatGPT为你支招]如何提高博客的质量,找到写作方向,保持动力,增加粉丝数?

0. 引言 作为一个博主&#xff0c;您可能会面临很多挑战&#xff0c;比如如何提高博客的质量&#xff0c;如何找到自己的写作方向&#xff0c;如何保持持续写作的动力&#xff0c;以及如何增加博客的粉丝数量。在这篇文章中&#xff0c;我们将为您提供一些有用的建议&#xff…

Maven打包报错:找不到符号,类BASE64Encoder,程序包sun.misc

背景 一个基于若依单体架构的多模块 Maven 项目的国产化迁移适配&#xff0c;由于是客户的代码&#xff0c;我们不用关心具体的功能实现&#xff0c;直接来做迁移即可。实施时&#xff0c;按照我们总结的整改建议调整源码&#xff0c;具体迁移适配过程可参考本专栏的其他文章。…

ADI Blackfin DSP处理器-BF533的开发详解19:LAN的网口设计

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 BF533说实话用来做LAN的应用有些许勉强&#xff0c;因为他自己不带网口&#xff0c;要做的话&#xff0c;需要在总线上挂&#xff0c;那…

彻底搞懂ESLint与Prettier在vscode中的代码自动格式化

前言 前端代码格式化社区提供了两种比较常用的工具ESLint和Prettier&#xff0c;他们分别提供了对应的vscode的插件&#xff0c;二者在代码格式化方面有重叠的部分&#xff0c;规则不一致时会导致冲突。vscode作为前端开发编辑器已经越来越普遍了&#xff0c;这需要开发者在vs…

ChatGPT与搜索引擎合体,谷歌都不香了,LeCun转发|在线可玩

Alex Pine 发自 凹非寺量子位 | 公众号 QbitAI见惯了列表式搜索引擎&#xff0c;你有没有想过给它换种画风&#xff1f;有人脑洞大开&#xff0c;把艳惊四座的ChatGPT和必应搜索结合起来&#xff0c;搞出了一个智能搜索引擎&#xff1a;既有ChatGPT式的问答&#xff0c;又像普通…

VS——路径说明

$(TargetDir)输出目标的路径 $(TargetPath) 输出文件.exe的路径 $(TargetName) 项目名字 $(TargetFileName) 输出的.exe的名字 $(TargetExt) 文件的扩展名 $(ProjectDir)工程目录 目录根据下面的文件来的 $(IntDir)获取中间文件 $(OutDir)文件输出路径 $(Solu…

神马操作Kafka 竟宣布弃用 Java 8

Kafka 3.0.0 发布了&#xff1a; ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 主要更新如下&#xff1a; The deprecation of support for Java 8 and Scala 2.12 Kafka Raft support for snapshots of the metadata topic and ot…

ADI Blackfin DSP处理器-BF533的开发详解15:RS232串口的实现(含源代码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 实现原理 ADSP-EDU-BF533 开发板上设计了一个 RS232 接口&#xff0c;该接口通过 ADSP-BF53x 上的 UART 接口&#xff0c;扩展 RS232协议的芯片实…

Java学习之Object类——equals方法

Object 类是类层次结构的根类。每个类都使用 Object 作为超类。所有对象&#xff08;包括数组&#xff09;都实现这个类的方法&#xff0c;学习Object 类的六个方法——equals(Object obj)、finalize、toString、hashCode、getClass、clone 目录 和equals的对比 一、的作用 …

ChatGPT惊人语录大赏

文 | 智商掉了一地这几天ChatGPT实在太火了&#xff0c;笔者的朋友圈已经被ChatGPT的各种金句刷屏了&#xff0c;实在忍不住整理下来&#xff0c;分享给大家。ChatGPT惊人语录1&#xff1a;建议娶奶奶为妻注&#xff1a;贾母是贾宝玉的奶奶ChatGPT惊人语录2&#xff1a;角色扮演…

【allegro 17.4软件操作保姆级教程十】文件输出

目录 1.1添加光绘层叠 1.1.1添加线路层 1.1.2添加表底阻焊层 1.1.3添加表底钢网层 1.1.4添加表底丝印层 1.1.5添加钻孔层 ​1.2输出文件 1.2.1输出光绘文件 1.2.2输出钻孔文件 1.2.3输出坐标文件 1.2.4输出文件打包 1.1添加光绘层叠 在输出文件之前需要先添加光绘层…

PyTorch中学习率调度器可视化介绍

神经网络有许多影响模型性能的超参数。一个最基本的超参数是学习率(LR)&#xff0c;它决定了在训练步骤之间模型权重的变化程度。在最简单的情况下&#xff0c;LR值是0到1之间的固定值。 选择正确的LR值是具有挑战性。一方面较大的学习率有助于算法快速收敛&#xff0c;但它也…

【车载开发系列】UDS诊断---输入输出控制($0x2F)

【车载开发系列】UDS诊断—输入输出控制&#xff08;$0x2F&#xff09; UDS诊断---输入输出控制&#xff08;$0x2F&#xff09;【车载开发系列】UDS诊断---输入输出控制&#xff08;$0x2F&#xff09;一.概念定义1&#xff09;与0x31例程控制服务的关系2&#xff09;与0x22读取…

数据传送类指令(PUSH,POP,LEA)

目录 数据传送类指令 堆栈的概念&#xff1a; 进栈指令 &#xff08;PUSH&#xff09; 出栈指令&#xff08;POP&#xff09; 练习 LEA取偏移地址&#xff08;有效地址EA&#xff09;指令&#xff08;去括号&#xff09; LEA和OFFSET区别&#xff1a; 用法注意 LEA和MO…

微服务框架 SpringCloud微服务架构 微服务保护 31 限流规则 31.6 热点参数限流

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护31 限流规则31.6 热点参数限流31.6.1 热点参数限流31.6.2 案例31 限流规则 31.6 热点参数限流 3…

【代码审计-.NET】基于.NET框架开发的基本特征

目录 一、.NET基本架构 1、基本构成 2、可支持语言 3、封装 4、文件 5、指向解析 6、安全认证 二、工具 1、ILSpyi 2、dnSpy 3、Reflector &#xff08;网上找的一张图谱&#xff09; 本博客只面向讲安全相关内容 一、.NET基本架构 1、基本构成 可支持语言&#xf…