JavaEE|计算机是如何工作的

通过了解计算机是如何工作可以让我们对于计算机/Java有更清楚的认识(背景介绍)

计算机内部的单位换算

计算机的组成部分

1.CPU电脑上最核心的部分(中央处理器)

计算机进行的各种算术运算,逻辑判断,都是CPU负责的(代码里写的内容都是CPU运行的)

2.主板(就是一个大插座)

3.内存和硬盘

存储数据的主要的模块,二者合称为存储器

内存和硬盘的区别

(1)内存读写速度快,硬盘读写速度慢,能相差几千倍

机械硬盘读写速度一般是200MB/s左右

内存读写速度快,是硬盘基础上几千倍

(2)内存存储空间比较小,硬盘存储空间比较大

(3)内存的成本比硬盘更高

(4)内存存储数据是不持久的,断电就没了

硬盘存储数据是持久的,断电也不会丢失,但是,如果一块硬盘放上几年,数据可能会出现丢失

4.电源

5.散热器

6.机箱

7.显卡(GPU)

显卡和CPU很相似,都能进行算术运算和逻辑判断

CPU也叫做"通用计算机芯片",能进行复杂运算

GPU也叫"专用计算机芯片",虽不能进行复杂运算,但能进行多组简单运算,这时CPU无法实现的

GPU速度比CPU快很多

GPU就是用来处理运算简单,但是运算量非常大的场景,可以在如下场景运用

1.图形渲染(大型游戏,3D建模)

2.挖矿(加密货币)

比特币,以太坊,狗狗币

3.AI人工智能

模型训练~~就是在算大量的1+1

使用显卡就非常合适

冯诺依曼体系

冯诺依曼体系结构~一台计算机:

(1)CPU

(2)存储器---内存和硬盘

(3)输入设备---键盘和鼠标

(4)输出设备---显示器

有的设备,既是输入设备,又是输出设备,例如:

触摸屏

网卡(上网的时候,和网线连接的那个部分对应的硬件设备)集成在主板上~~

下载数据,输入

上传数据,输出

CPU的核心介绍

现代的cpu主要要关心的指标(与日常开发密切相关)

(1)cpu的频率

基频/默频

睿频/加速频率(也是有上限的)

现代cpu的一个特性,动态的根据当前的任务量,频率变更(类似于变频空调)

周围温差大,空调工作效率高,快速降温(耗电量大)

(2)cpu和核心数

cpu的内部构造非常精密,里面是由数不满的小的电路元件构成的计算单元,计算单元越多,算得就越快,但cpu面积有限,计算单元无法无限增加

单个核心既然已经达到瓶颈,于是引入两个核心进行工作(多核心技术)

一个cpu上可以有多个核心

内核,也就是物理核心,类似现实中真正干活的人;逻辑核心,实际上这些人能同时干几个活

我的电脑就是一个16核,24线程(8大核,8小核)

大核,一个顶两

小核,一个顶一个

线程就代表要干的活

CPU核心数越多,CPU运行能力越强(效率越高)

当然cpu往多核心角度发展,也对程序员提出了新的要求,程序员写代码的时候就需要把任务,拆分成多个部分

CPU执行程序(指令)的过程

编程语言可以分成三个大类

1.机器语言(以二进制的形式,表示一种语言)

2.汇编语言

3.高级语言(C,Java)

CPU上面都支持哪些指令,每个指令怎么表示,有哪些意义,都是cpu在设计出来的时候就确定了

可以使用表格,表示出cpu支持哪些指令~~

内存存放着内存地址,如果在C语言中,定义一个变量,保存上述内存地址,这个变量就叫"指针变量"

指令,此处咱们约定,一条指令是8个bit,一个字节

一条指令=4位操作码(opcode)+4位操作数

(函数名) (函数参数)

寄存器,也是存储数据的模块,存在于CPU上,CPU存储数据的部分

寄存器的访问速度比内存更快,但空间更小,成本也更高,掉电之后数据也会丢失

CPU的寄存器主要是在CPU进行执行指令进行的各种运算的时候,临时存储数据,起到一些辅助效果

cache是介于寄存器和内存之间存储设施(也是集成在cpu上的)

指令如何执行

机器语言程序(二进制指令)

假设CPU从0号地址这里开始执行

CPU执行指令的流程

1.读取指令

2.解析指令(对照指令,理解指令)

3.执行指令

(1)从0号地址开始执行

读取指令

CPU内部有专门的寄存器负责保存读到的指令

解析指令

把1110地址上的数据,读取到寄存器A中

执行指令

依次执行1,2,3的指令,直到第四条指令

认为程序结束了

像上述这些指令,CPU1s能进行39亿次

操作系统

计算机中,最重要的"软件"

操作系统是一个搞管理的软件

(1)管理各种硬件设备

(2)给应用程序,提供一个稳定的运行环境

这些应用程序,工作过程中是会互不干扰的,即使某个应用程序,有bug(比如,程序崩溃),不会影响到其他的应用程序

1.Windows11/10

2.Linux

后端开发常用,嵌入式设备Linux也是主力系统

3.Mac OS

苹果电脑上面的系统

4.IOS

苹果手机系统,和Mac OS不一样

5.Android

当前市场上最多的系统,包括一些高配置一点的嵌入式系统,也开始使用安卓

上述系统,彼此之间是不兼容的

但在Java中,可以通过虚拟机上实现一份Java代码在不同平台上运行

进程

操作系统中重要的概念:进程

一个运行起来的程序,就称为进程

现代计算机同时能跑百十来个进程很常见

操作系统就需要能够管理好上述进程

管理好进程需要对进程的各类属性做好分类,所以我们就需要结构体/对象,通过对象的各种属性保存上述信息

站在操作系统的视角,如何让管理进程?

1.先描述一个进程是啥样的

使用结构体,描述出进程的核心属性

进程控制块(PCB)

非常大的结构体,有很多很多的属性

2.再把多个进程组织起来

1)创建一个新进程

创建一个PCB,初始化PCB的各个属性,把PCB加载到链表上

2)销毁一个进程

把这个进程的PCB在链表上找到,并且从链表上删除掉

3)查看进程链表

遍历链表,取出链表上的每个元素,把里面的一些关键信息,显示到界面上

PCB的一些关键要点

1.pid(进程id)

进程的标识符

2.内存指针(一组指针)

进程就需要知道执行的指令在哪里,指令依赖的数据又在哪里

进程的运行过程中需要依赖内存,资源

'3.文件描述符

进程在硬盘上读取到的数据就是以文件的形式来组织的,每次打开一个文件,就会把这个文件的信息,保存到文件描述符中,表里的每个向,就对应着打开一个打开了的文件

4.进程状态

进程有很多状态,其中两个最典型

1)就绪状态->随叫随到,进程就可以随时到cpu进行执行

2)阻塞状态->进程当前不适合到cpu上执行

5.进程优先级

这么多进程,能够到cpu上运行的机会是不相等的

有些进程优先级高一些,吃到的cpu资源更多

6.进程上下文

进程在执行过程中失去cpu就需要记录当前状态,方便下次继续运行

保存上下文:把CPU中的这些寄存器的值,保存到内存中(PCB的对应属性中)

恢复上下文:把PCB中刚才保存的属性,填写回对应的寄存器当中去

7.进程的记账信息

统计功能,统计每个进程都在CPU上运行了多久,方便及时的资源倾斜

4,5,6,7统称为进程调度

进程是操作系统中,资源分配的基本单位

相关推荐
AI先驱体验官2 小时前
BotCash:AI智能体变现从小 Demo 到商业产品的距离
大数据·人工智能·深度学习·重构·aigc
輕華2 小时前
OpenCV三大传统人脸识别算法:EigenFace、FisherFace与LBPH实战
人工智能·opencv·算法
平安的平安2 小时前
MCP 协议实战:用 Python 开发你的第一个 AI 工具服务
网络·人工智能·python
许彰午2 小时前
# 政务表单动态建表?运行时DDL引擎,前端拖完字段后端直接建
java·前端·后端·架构·政务
我登哥MVP2 小时前
【Spring6笔记】 - 13 - 面向切面编程(AOP)
java·开发语言·spring boot·笔记·spring·aop
宸津-代码粉碎机2 小时前
Spring Boot 4.0 进阶实战+源码解析系列(持续更新)—— 从落地到源码,搞定面试与工作
java·人工智能·spring boot·后端·python·面试
沐雪轻挽萤2 小时前
2. C++17新特性-结构化绑定 (Structured Bindings)
java·开发语言·c++
java1234_小锋2 小时前
Java高频面试题:Kafka的消费消息是如何传递的?
java·开发语言·mybatis
Z.风止2 小时前
Large Model-learning(4)
人工智能·pytorch·笔记·python·深度学习·机器学习