从软件工程师看计算机是如何工作的

🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗

🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹

🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀

🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢

🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞

文章目录


大家好~ 今天给大家分享一下在软件工程师的视角上计算机是怎样工作的,这对我们后面分享的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

相关推荐
callJJ1 小时前
Spring AI Tool Calling(工具调用)详解——让大模型拥有“动手能力“
java·人工智能·spring·spring ai·tool calling
南部余额1 小时前
SpringBoot文件上传全攻略
java·spring boot·后端·文件上传·multipartfile
java1234_小锋2 小时前
Java高频面试题:什么是Redis哨兵机制?
java·redis·面试
苦学编程的谢2 小时前
好运buff机 ------ 测试报告
java·开发语言·功能测试
智慧地球(AI·Earth)2 小时前
在Windows上使用Claude Code并集成到PyCharm IDE的完整指南
ide·人工智能·windows·python·pycharm·claude code
汤姆yu2 小时前
基于springboot的智能民宿预定与游玩系统
java·spring boot·后端
黎雁·泠崖2 小时前
Java常用类核心精讲 · 七篇精华总结
java·开发语言
逆境不可逃2 小时前
【从零入门23种设计模式01】创建型之工厂模式(简单工厂+工厂方法+抽象工厂)
java·spring·设计模式·简单工厂模式·工厂方法模式·抽象工厂模式·工厂模式
重生之后端学习3 小时前
208. 实现 Trie (前缀树)
java·开发语言·数据结构·算法·职场和发展·深度优先