JavaEE初阶 01 计算机是如何工作的

news2025/1/11 22:46:11

前言

今天开始进行对JavaEE的一些基本总结,希望大家能在阅读中有所收获,如有错误还望多多指正.

1.冯诺依曼体系结构

 这个体系结构相信学计算机的同学都不陌生,但是你真的知道这个体系结构说的是什么嘛?请听我娓娓道来.首先我先给出一张冯诺依曼体系结构的简图

你可以理解为当前的计算机就是五大结构组成的,它们分别是:输入设备,输出设备,存储器,运算器和控制器(cpu)组成

可能你并不理解,下面我举一些你知道的例子

输入设备:键盘,鼠标..

输出设备:音响..

存储器:usb,软盘,硬盘...(二进制存储)

cpu相信大家都不会过于陌生,不做过多介绍

下面介绍它们的容量和访问速度

容量:硬盘 > 内存 >> CPU

访问速度:CPU >> 内存 > 硬盘

2.cpu基本情况 

我们都知道cpu是一个计算机的灵魂,下面我们也来介绍一点点关于cpu的知识

一谈到cpu,可能有些男同胞就要坐不住了

A:小米今年又首发了8gen3,我直接冲

B:我都用上4090了,怎么说开一把

很多同学都对这些cpu"很有见解",那么它们有什么区别呢,为什么手机和电脑的cpu不能使用一样的呢??

首先,家用pc或者是服务器大家熟知的肯定是amd,intel

手机上大家熟知的可能就是苹果,高通等等

这里家用pc和服务器使用的cpu就是x86架构的,性能就强一点

这里手机使用的就是ARM架构的,为了节省电量,保持续航,性能就没那么强

不同的cpu它们的架构就可能不同,架构不同支持的指令集可能就不同,指令集不同,支持的机器语言/汇编语言可能就不同,这样就可能导致不兼容问题,比如苹果刚出来那会很多从Windos转mac机器的就会发现很多东西不兼容导致很多问题.

小例子

这里很多人可能好奇这里的cpu指令是啥,咱们可以暂时理解为是一些二进制的指令,后续再做介绍,我们这里可以跟大家掰扯掰扯外挂式怎么操作的,其实外挂的原理也是一个程序,需要通过这个程序对游戏的那个程序产生一些影响.假设你现在正在运行csgo游戏程序,在运行加载的过程中,很多应用数据和逻辑代码就会被加载到内存中,这个时候外挂程序就将逻辑给修改了,比如修改了光线的逻辑判定,这里你就可以透视了等等...

cpu是怎么构成的?

门电路 -- 半加器 -- 全加器 -- 加法器 -- ALU计算器 -- CPU

即使你不了解这些设备,你也要知道这些内存硬盘这些重要的设备是由门电路所构成的

而门电路又是由一个一个晶体管构成的,之所以现在这些设备那么厉害,也是因为现在的工艺能使得这些东西足够小,比如现在的4nm工艺,其实这个东西越小,就说明它的集成程度也就越高,对应的算力也就越来越强.

但是这个cpu能无限小吗???

答案是否定的,因为当一个物体足够小的时候,经典物理学就已经失效了,我们这个时候就要考虑量子力学的维度了!

那么能不能把cpu搞大一点??

其实也做不到,因为一旦把cpu搞大了,这样良品率就会降低,这样加工的经济损失也就会很大.

如何解决??

这里intel给出了一个解决方案,"多核cpu",相信大家并不陌生,你们的电脑手机等都是多核的cpu.相当于本来一个人也一个人干,现在好多人一起干活,也就更快了(前提是软件得配合)

现在劳动力也有了,也需要软件将任务合理分配给多个cpu,这就引入了并发编程的概念.

.

能不能让一个cpu核心当成两个用??(我们的这个信息可以在任务管理器里查看到)

现在也可以,有一个超线程技术,就可以让cpu一个顶俩

那有人说了,我的为啥不是两倍的关系呢??

这是因为intel在后面引入了大小核的技术,大核带有超线程技术,小核就没有了

但是这也不是评判cpu的好坏的唯一参数,有可能你核心确实很多,但是单核频率并不高,性能也就没那么强.

同架构下,cpu频率越高越好

这里我们还注意到一个参数:cpu的速度

其实就是cpu核心工作的速度,1GHZ大概就是十亿次"时钟周期",我们也可以近似的认为一秒钟cpu执行了十亿次指令,像这里一秒钟就是执行25.7亿次指令..

除此之外,睿频也可以体现一个cpu的综合实力

CPU的频率会随着任务的多少动态分配资源从而发生变化

所以衡量一个CPU性能也可以看基础频率(下限)和最大睿频(上限)...

3.指令  

下面我们再谈谈cpu一秒钟执行的那么多二进制指令,都是些什么

我们可以简单模拟一下cpu执行指令的过程

首先我们引入一个简单的指令表

默认情况下,cpu执行指令是顺序执行的,除非遇到跳转命令...

指令(instruction)功能说明4位 opcode操作的地址或者寄存器
LOAD_A从 RAM 的指定地址,将
数据加载到 A 寄存器
00104 位 RAM 地址
LOAD_B从 RAM 的指定地址,将
数据加载到 B 寄存器
00014 位 RAM 地址
STORE_A将数据从 A 寄存器写入
RAM 的指定地址
01004 位 RAM 地址
ADD计算两个指定寄存器的
数据的和,并将结果放
入第二个寄存器
10002 位的寄存器 ID
2 位的寄存器 ID

假设我们执行这样一段指令

1.00101110

分为opcode和操作的地址

opcode就是0010 也就是 将14号地址的数据加载到a寄存器

此时a里面就存了 00000011

2.00011111

0001 1111

向b寄存器加载15号地址的数据

b:00001110

3.10000100

1000 0100

就是将两个寄存器的和放到后面一个寄存器中

此时a是000000011 b是00001110 加起来就是 00010001

最后放到A寄存器中,因为后面的操作数是0100后面是00,00是A寄存器

4.01001101

0100 1101

就是将a寄存器里的数据写入1101的内存地址处

这里13号地址就写成了 0001 0001

4.CPU小总结

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

2.cpu要想执行指令,就得去没存中取指令,再解析指令,再执行指令

3.取指令需要从内存中读取指令到cpu的寄存器中,取指令相对来说是非常耗时间的,因为读取内存操作相比于cpu执行的操作来说,开销要大得多.(这就引进了流水线,缓存来缓和他们之间的速度差)

4.cpu解析指令的时候,就需要使用'指令表',不同架构的cpu指令表不同,指令表是写死到cpu里的

5.指令在执行的时候,会带有一些操作数,不同的指令,操作数个数的含义都有所不同

6.cpu的主频可以近似看做一秒钟cpu执行的指令条数

5.操作系统 

这里我首先要说明,操作系统是一个软件!!!

操作系统主要负责:

1.给软件一个良好的运行时环境

2.管理好不同的硬件设备

四个字概括他的功能就是:抽象,封装

我们知道JVM又是对操作系统的抽象封装,所以最终的结果就是我们可以使用JVM提供的api来操作不同的系统,来完成编程.

话又说回来,操作系统也是来应对不同的厂商设计的不同的硬件设备,他站出来,管理不同的硬件设备,给软件提供一些系统api,这样我们写的代码也就是无需面向硬件设备来编程,而是直接调用操作系统提供的api即可,我们也能使用这些api来完成(多线程编程,网络编程等等)

6.进程/任务

进程就是操作系统提供的一种"软件资源".

我们现在使用的系统其实就是属于多任务的操作系统

多任务操作系统,也就是同一时刻可以运行多个任务,这里我们可以打开任务管理器看看,就可以看到我们现在正在运行的任务

与之对应的也就是单任务操作系统,,没有后台执行,向执行这个任务就必须退出上一个任务.这样是非常不方便的,所以现在我们使用的就是多任务的系统.

对于多任务的操作系统,进程的概念就显得尤为重要,每个任务在执行的过程中,就会消耗一定的硬件资源,也就是每个进程在运行的时候都是会消耗硬件资源的,换而言之,进程就是操作系统分配资源的基本单位.

以下表述都是简化版本的

操作系统是如何管理进程的??

1.先描述清楚一个进程(使用类/结构体这样的形式来描述)

表示进程的结构体称为PCB(Process Control Block)

PCB是操作系统学科上的通用概念

在linux上PCB表示为一个叫struct task_struct{}的结构体

2.再进行管理(使用一定的数据结构,将这些进程管理起来)

在linux中使用的是链表将这些结构体管理起来的

当我们看到任务管理器这些进程的时候,其实系统内部就在遍历这个链表,并且打印出来每个节点的相关信息.

如果多运行一个进程,就会出现一个新的PCB,添加到链表上,同理退出也需要删除这个PCB,并且释放资源

注:程序崩溃,操作系统并不一定会崩溃,其实是相当于程序执行过程中,抛出了一些异常,通常系统会使用"try-catch"的方式捕获异常.但是有些程序可能是带有驱动的,实在操作系统的内核中运行的,出现问题可能就会导致操作系统直接蓝屏或者卡死

PCB

这里介绍一下pcb的一些重要的参数

1.pid :此时会通过一个不重复的整数来去问各个进程,系统会保证每个进程的pid都是不同的.

比如要结束一个任务,任务管理器就会获取你选中的pid,调用一个系统api,传入pid为参数,进而杀死进程.

2.内存指针:内存指针是描述说你这个进程都能使用哪些内存的,一个进程跑起来的时候,需要有指令和数据,这些资源都是先加载到内存中去的.进程也需要知道哪里是指令,哪里是数据.指令和数据都是在进程跑起来之间加载到内存中去的.

3.文件操作符表:描述了一个进程所涉及到的硬盘资源

我们的进程其实经常要访问硬盘这样的硬件设备,操作系统对硬盘进行了"封装"操作,使得其是以文件的形式展示的.这里的文件操作符表其实是一个数组,里面存放的是结构体指针,指向对应的需要访问的硬盘资源文件的结构体

这里我们都知道内存硬盘这些在pcb中都好描述,那么CPU呢,下面我们接着说,一个进程消耗CPU资源是什么意思呢?就是一个cpu可能是单核的,也可能是多核的,每个核心同一时间只能执行一个指令,那么假如我是16核的cpu,我现在同时进行20个进程,不能满足一对一的关系了怎么办??

这里其实就引出了分时复用的概念(并发),也就是多个进程分别进行,你执行一下我执行一下,这样只要速度足够快,人眼是分辨不出来是否是"同时的".

再举一个场景,现在有四个核心,4个进程,就可以实现并行执行,这个才是真正意义上的同时进行,现在的计算机往往是分时复用+并行执行一块使用的,主要还是看系统如何调度

4.状态

状态是描述某个进程是否可以在cpu上去执行,有的时候可能是不是不太方便去执行...

这里只说两个状态(其实有很多)

就绪状态:随时准备好去cpu上执行

阻塞状态:此时不应该去调度这个进程(比如此时在进行等待I/O,控制台的输入等等)

5.优先级

多个进程在等待系统调度,其中这些进程调度的先后关系是可以设置的

比如可以通过系统api来设置

6.记账信息

针对每个进程,占用了多少cpu时间进行一个统计,会根据统计来调整调度的策略来避免有进程使用不上cpu的资源

后续还有接着本文的补充,希望大家多多支持 

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

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

相关文章

资深品酒师荆芳老师倾情力作,带你品酒选酒,读懂葡萄酒的世界

在美酒琳琅满目的今天,如何才能挑选到适合自己的葡萄酒?如何品鉴葡萄酒的独特魅力?资深品酒师荆芳老师的最新力作《葡萄酒爱好者》正式上线,带你走进葡萄酒的世界,领略品酒选酒的奥秘。作为一位资深的品酒师和教育工作…

leetcode - 串联所有单词的子串 - 最小覆盖子串 - x 的平方根

I30. 串联所有单词的子串 - 力扣(LeetCode) 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["ab&qu…

卡方检验-python代码

故事背景 问题 卡方检验的结果怎么计算? 方法 python代码 import numpy as np from scipy.stats import chi2_contingency# 观察频数矩阵 observed np.array([[47, 21, 17],[63, 29, 15],[11, 2, 4]])# 进行卡方检验 chi2, p, dof, expected chi2_contingency(o…

电子器件系列44:环形线圈电感

干货!电感最重要、最常见的几个作用_线圈 环形线圈电感的原理: 电感中包含了哪三个物理学定律,为什么它能以磁场形式储能_哔哩哔哩_bilibili 电感的基本原理_哔哩哔哩_bilibili 环形线圈电感的作用: 1.储能器: 环形线圈电感能够…

Neo4j安装(Docker中安装Neo4j)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【漏洞复现】用友U8-Cloud 存在任意文件上传漏洞

漏洞描述 U8 cloud 聚焦成长型、创新型企业的云 ERP,基于全新的企业互联网应用设计理念,为企业提供集人财物客、产供销于一体的云 ERP 整体解决方案,全面支持多组织业务协同、智能财务,人力服务、构建产业链智造平台,融合用友云服务实现企业互联网资源连接、共享、协同。…

Windows 安装 汉化版 burp suite

注:个人笔记,仅供参考。 burpsuite 软件下载链接: https://www.alipan.com/s/cWxMF5S9sq4 提取码: 31ut 注:安装路径不要有中文 安装 配置 Java 环境 因为burpsuite是在JAVA环境下运行的,所以首先应该配置好JAVA环…

浙大恩特客户资源管理系统 SQL注入漏洞复现

0x01 产品简介 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。 0x02 漏洞概述 浙大恩特客户资源管理系统中T0140_editAction.entweb接口处存在SQL注入漏洞,未…

解决Error:java: System Java Compiler was not found in classpath

解决Error:java: System Java Compiler was not found in classpath 一、配置maven 注意:我的C盘比较大直接配置在了C盘,建议配置到其他盘,记得做maven环境变量配置 二、卸载本地JDK,换个版本安装配置环境变量 重启电脑或idea,…

React经典初级错误

文章 前言错误场景问题分析解决方案后言 前言 ✨✨ 他们是天生勇敢的开发者,我们创造bug,传播bug,毫不留情地消灭bug,在这个过程中我们创造了很多bug以供娱乐。 前端bug这里是博主总结的一些前端的bug以及解决方案,感兴…

Linux环境下C++ 接入OpenSSL

接上一篇:Windows环境下C 安装OpenSSL库 源码编译及使用(VS2019)_vs2019安装openssl_肥宝Fable的博客-CSDN博客 解决完本地windows环境,想赶紧在外网环境看看是否也正常。毕竟现在只是HelloWorld级别的,等东西多了&am…

如何在latex中高亮文本

导入soul 包可以使用高亮功能 在文本中插入 \hl{} 即可 导入color 包可以使用颜色功能 color 也可以替换成 xcolor \documentclass{report} \usepackage{xcolor,soul} \begin{document}\textcolor{red}{Text}\hl{Text} \hl{\textbf{Text}} \textbf{\textcolor{red}{\hl{Text}…

PyTorch深度学习原理与实现

PyTorch深度学习原理与实现 1. 引言 深度学习发展历程 感知机网络(解决线性可分问题,20世纪40年代) BP神经网络(解决线性不可分问题,20世纪80年代) 深度神经网络(海量图片分类,2…

Nginx 可视化管理平台:nginx-proxy-manager

本心、输入输出、结果 文章目录 Nginx 可视化管理平台:nginx-proxy-manager前言nginx-proxy-managernginx-proxy-manager 特性快速开始使用 Docker 网络开启 Docker 健康检查相关可视化页面相关链接弘扬爱国精神Nginx 可视化管理平台:nginx-proxy-manager 编辑:简简单单 Onl…

虚拟化热添加技术在数据备份上的应用

虚拟化中的热添加技术主要是指:无需停止或中断虚拟机的情况下,在线添加物理资源(如硬盘、内存、CPU、网卡等)的技术。热添加技术也是相比物理机一个非常巨大的优势,其使得资源分配变得更加灵活。 虚拟化中的热添加技术…

Unity优化(1)——合并Mesh的两种方法

在某些移动端项目中,对于DrawCall的要求是很严格的,我们一般查看DrawCall可以通过Statistics里面的Batches进行查看,一般对于移动设备的Batches要控制在200左右比较合适,所以降低Batches是很重要的。 我们常常会遇到一个物体下挂载…

【AI视野·今日Sound 声学论文速览 第三十五期】Fri, 27 Oct 2023

AI视野今日CS.Sound 声学论文速览 Fri, 27 Oct 2023 Totally 8 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Controllable Generation of Artificial Speaker Embeddings through Discovery of Principal Directions Authors Florian Lux, Pascal T…

kubernetes集群编排——k8s高可用集群

实验环境 主机名 IP 角色 k8s1 192.168.92.11 harbor k8s2 192.168.92.12 control-plane k8s3 192.168.92.13 control-plane k8s4 192.168.92.14 control-plane k8s5 192.168.92.15 haproxy,pacemaker k8s6 192.168.92.16 haproxy,pacemaker k8s7 192.16…

03-瑞吉外卖关于菜品/套餐分类表的增删改查

新增菜品/套餐分类 页面原型 当我们在后台系统中添加菜品/套餐时,需要选择一个菜品/套餐分类,在移动端也会按照菜品分类和套餐分类来展示对应的菜品和套餐 第一步: 用户点击确定按钮执行submitForm函数发送Ajax请求,将新增菜品/套餐表单中输入的数据以json形式提交给服务端,…

(1)(1.16) Maxbotix I2C声纳

文章目录 前言 1 连接到Pixhawk 2 通过Mission Planner进行设置 3 测试传感器 4 参数说明 前言 Maxbotix I2C EZ4 声纳(又称 I2CXL-MaxSonar-EZ4 或 MB1242)是一种相对便宜的短距离(最多 7m)测距仪,主要设计用于…