
🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗
🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹
🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢
🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞
文章目录
- [一 、 根基-->冯诺依曼架构](#一 、 根基-->冯诺依曼架构)
- 二、cpu常见参数与缓存层级
- 四、操作系统简述
- 总结
大家好~ 今天给大家分享一下在软件工程师的视角上计算机是怎样工作的,这对我们后面分享的JAVAEE知识的学习很有帮助~
会解答每天写的
SpringBoot ,SpringCloud ,写的CURD接口,线程池的吞吐量设置,背后的知识.
一 、 根基-->冯诺依曼架构

说到冯诺依曼 我们学习计算机的或多或少的了解,他是计算机之父.虽然现在的计算机技术怎么迭代,这个70多年年前的架构依然被使用,这是所有计算机工作的底层共识.
冯诺依曼核心思想
- 用二进制作为数据与指令的表达方式.
- 存储程序原理 : 程序与数据都存放在寄存器中,计算机从储存器中读取指令执行.
- 计算机由中央处理器(运算器&寄存器),存储器 (内存与外存区别请点击),输入设备,输出设备构成
- 各个部件与常见场景的对应.
| 部件 | 场景 |
|---|---|
| 中央处理器 | 业务的逻辑,循环,判断,数学计算,最终交给Cup进行处理 |
| 存储器 | 内存 :jvm运行时数据区(栈,堆,方法),Redis缓存数据 ------ 外存:jar包,数据库文件,日志文件,外置文件 |
| 输入 | 网卡: 前端http请求,rpc调用 ----------------- 磁盘控制器 : 读取jar包.数据库文件 |
| 输出 | 一些写入,显示器 |
上面我有一个词多次加粗,那就是指令 ,它存放在储存器中,我们写代码最终会落到指令与数据放在内存中,cpu会自动,连续是执行指令,在这其中的执行什么说法,原则是我们下面详细讨论的,这也是程序运行的本质~~
二、cpu常见参数与缓存层级
CPU


在图2中每一个core就是逻辑核心,逻辑 CPU 指的是每个核心同时做 2 个或更多任务的能力,这是通过在核心上启用超线程来实现的,每个物理核心可以通过启用超线程来划分为多个逻辑核心。
-
上图中,虽然只有 4 个物理核心,但通过在每个核心上启用超线程,系统会将其看成 8 个逻辑 CPU。
-
重点是内存与逻辑处理器的概念
- 内存就像公司里的独立办公室,每个办公室里有一张办公桌(物理核心),同一时间只能有一个人在办公。
- 就像给每个办公室配了两套或者多套办公设备(键盘、鼠标、显示器),虽然同一时间只有一个人在办公,但可以快速切换,让办公室的利用率更高。
| 概念 | 角色 | 与其他概念的关系 |
|---|---|---|
| 物理内核 | 硬件计算单元 | 是逻辑处理器的基础,一个物理内核可模拟多个逻辑处理器 |
| 逻辑处理器 | 操作系统调度单元 | 是线程执行的载体,线程被调度到逻辑处理器上 |
| 线程 | CPU 调度最小单位 | 是进程内的执行流,一个进程可包含多个线程 |
| 进程 | 资源分配最小单位 | 是线程的容器,拥有独立的资源空间 |
至于进程与线程,在后面的javaEE专辑中会详细分享~
缓存层级
内存中通过读存速度分成好几个等级 ,如下图
| 存储类型 | 容量 | 速度 | 成本 | 掉电保存 |
|---|---|---|---|---|
| CPU寄存器 | 极小 | 最快 | 最高 | ❌ |
| 缓存(L1/L2/L3) | 小 | 很快 | 高 | ❌ |
| 内存(RAM) | 中 | 快 | 中 | ❌ |
| 硬盘(SSD/HDD) | 大 | 慢 | 低 | ✅ |
- 可以看到cpu寄存器是最快速的,也是指令执行的地方,下面呢我们来看看一个指令执行的过程.
三、简单例子--->指令的执行过程
下面就举一个简单的例子,看一下指令是怎么执行呢~在执行之前一定是要读懂,上面我们说指令是在cpu寄存器中执行的,什么语言是指令知道的呢?
机械语言
- 机械语言是cpu唯一读懂的二进制语言,我们写的像java这种高级语言通过---->汇编语言------>机械语言.有这样的一个过程~
- 机械语言本质上就是一串二进制数,一般分成两个部分
- 操作码:要做什么(读写,加减...)
- 操作数:对那个数据进行操作,确定地址~
这里我们不是要背操作码,操作数的,介绍这些是让更好的理解~
实例
比如我们编写一个最简单的代码在这里插入代码片
java
int a = 1 + 2 ;
最后会被才分成三个指令~
- 把常量1,2加载到cpu寄存器中
- 运算器执行加法操作
- 把结果写会内存变量a对应的地址中
每一个指令呢又都会走一遍取指,译码,执行,写会 ,这成为指令执行周期 .像这样的一个周期,计算机每秒可以进行几十亿次 ,这就是计算机业务告诉运转的秘密~

至于进程与线程后面的视频会和大家慢慢分享~
四、操作系统简述

操作系统(OS)是用户与底层硬件中间层.
- OS 的核心职责,就是把 CPU、内存、磁盘、IO 设备等物理硬件,封装成统一、安全、易用的抽象接口,让上层应用无需关心硬件细节,同时保证多个应用之间互不干扰、高效运行,而进程就是 OS 实现这一切的核心载体 。
从某种意义说进程就是构成的OS.
进程的概念
简单说,在电脑上的客户端运行起来,就可以认为进程连续执行的效果.
一个客户端软件的快捷方式一般是exe文件,这是一个二进制文件,安装的时候放在磁盘上,也就是硬盘生,在运行时,OS就会加载可执行文件、创建进程的完整流程.所以一般也说
- 进程是操作系统中资源分配的基本单位.
- 二进制文件---------->通过OS---------->多个执行指令------->实现业务功能.
PCB(进程控制块):OS 管理进程的核心数据结构
- PCB 是 OS 内核中定义的核心结构体,每个进程唯一对应一个 PCB,OS 内核完全通过 PCB 感知、识别、管理进程 ------ 内核中,进程的本质就是 PCB,没有 PCB,OS 就不承认该进程的存在。
- PCB是管理进程,那是什么啥结构的呢?
- 队列链表:按进程状态,分别组织成就绪队列、阻塞队列、运行队列,调度时直接遍历对应队列,效率极高;
- 哈希表 / 索引表:通过 PID 快速查找对应 PCB,避免遍历全量链表,Linux 等现代 OS 均采用该方式;
- 树形结构:维护进程的父子关系.
并行与并发
- 并行:同一时刻,多个 CPU 核心上同时执行不同进程的指令,是物理层面的同时运行,依赖多核 CPU 硬件;OS 的核心作用是将进程分配到不同核心,实现 CPU 负载均衡。
- 并发:同一时间段内,宏观上多个进程看起来同时运行,微观上单个 CPU 核心在多个进程之间极速切换(时间片轮转);切换频率达到毫秒 / 微秒级,用户完全感知不到停顿,OS 就是图中所说的 "时间管理大师"。
核心概念了解
- 进程状态 : 阻塞与就绪
- 进程的上下文 : 进程调度到cpu上,离开cpu, 过一会在返回到cpu上.cpu内部有很多寄存器,用于保存进程运行的中间状态,进程在执行的时候,寄存器的值不停地变化.当进程结束时,cpu寄存器的值就会拷贝的内存的pcb结构体中.再次恢复进程,在重新写入CPU寄存器中.
- 进程独立性 : 确保每个进程有独立的内存空间.
- 进程优先级 : 先后执行问题.
- 进程记账信息: 记忆功能,合理分配资源.
总结
这篇文章就先分享到这里了,希望对你有帮助~
我是Dylan,下次见~
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=er945ocem4c