【JavaEE】-- 计算机是如何工作的

ops/2025/2/1 19:03:00/

文章目录

  • 1. 冯诺依曼体系(VonNeumann Architecture)
  • 2. CPU 基本工作流程
    • 2.1 寄存器(Register)和 内存(RAM)
    • 2.2 控制单元 CU(ControlUnit)
    • 2.3 指令(Instruction)
  • 3. 操作系统(OperatingSystem)
    • 3.1 操作系统的定位
    • 3.2 什么是进程/任务(Process/Task)
    • 3.3 进程控制块抽象(PCB Process Control Block)
    • 3.4 内存分配-内存管理(Memory Manage)
    • 3.5 进程间通信(InterProcessCommunication)

话不多说,我们就不扯什么计算机发展史了,感兴趣的可以自行百度。我们直接进入正题了。
在这里插入图片描述

1. 冯诺依曼体系(VonNeumann Architecture)

在这里插入图片描述
• CPU(中央处理器):由运算器和控制器组成,CPU是电脑最核心的部分。

  1. 运算器:执行指令完成计算工作。
  2. 控制器:协调指令执行顺序。

!
在这里插入图片描述

• 存储器:分为外存和内存,用于存储数据(使用二进制方式存储)

在这里插入图片描述

• 输入设备:用户给计算机发号施令的设备(键盘、鼠标、扫描仪…)

• 输出设备:计算机个用户汇报结果的设备(显示器、音响、打印机).

针对存储空间:硬盘>内存>CPU
针对数据访问速度:CPU>内存>硬盘

拜见两位计算机祖师爷–冯诺依曼 && 图灵

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

2. CPU 基本工作流程

当今两大CPU巨头:英特尔公司和AMD公司。

现代CPU的主要指标:

这是我的电脑CPU,以我的电脑为例。
在这里插入图片描述

我们主要看下面这些部分:

在这里插入图片描述

  1. 基准速度(也叫基频):2.40GHz(G相当于10^9 10亿)表示此时这个CPU每秒进行24亿次计算。
  2. 速度(加速频率):2.42GHz 。
  3. 内核(核心数):CPU 中实际的物理处理单元。每个内核都可以独立地执行指令和处理数据。
  4. 逻辑处理器:辑处理器是操作系统和应用程序所看到的处理单元。在现代 CPU 中,通过超线程(Hyper - Threading)技术可以将一个物理核心模拟成两个逻辑处理器。

逻辑处理器数量 = 内核数量 × 每个内核通过超线程模拟出的逻辑处理器数量。

我的笔记本电脑中的核心数有14个,但是显示我的逻辑处理器不是28个,而是20个。这代表着并不是所有的内核都开启了超线程技术或者超线程技术没有完全将每个内核模拟成两个逻辑处理器。

频率和核心数都是影响CPU性能的重要指标。

2.1 寄存器(Register)和 内存(RAM)

寄存器属于存储器的一部分,只不过是封装到了CPU里面。CPU中使用比较频繁的值,或者运算过程中生成的中间值,都会存放在寄存器中。

硬盘内存寄存器
容量最大最小
速度最慢最快
造价最低最高

CPU 中寄存器的数量因架构、性能需求和应用场景等因素而异,从十几个到几十个不等。

2.2 控制单元 CU(ControlUnit)

控制单元负责指令的调度,哪些应该让CPU执行。负责指挥和协调计算机各个部件之间的工作,确保计算机能够有条不紊地执行指令。

2.3 指令(Instruction)

计算机的主要任务就是执行命令。

电脑中我们安装好的App,其实就是编译好的一堆指令。

指令本身也是一个数字,用二进制的形式保存在内存的某个区域中。

3. 操作系统(OperatingSystem)

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

3.1 操作系统的定位

在这里插入图片描述
操作系统有两个基本功能:
1.防止硬件被时空的应用程序滥用。
2.向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

操作系统如何管理进行中的程序?

  1. 对下(硬件)管理各种计算机设备。
  2. 对上(软件)为软件提供一个稳定的运行环境。

3.2 什么是进程/任务(Process/Task)

进程是操作系统对⼀个正在运⾏的程序的⼀种抽象,换⾔之,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进行资源分配的基本单位。

在这里插入图片描述
*每一个运行的程序在操作系统里都对应着一个进程。*程序安装完之后,在系统中都是静态文件存放在磁盘中,双击之后,从磁盘加载到内存,系统就会创建一个这个程序对应的进程,这时程序就运行起来了。

进程可以分为:前台进程(用户执行的进程);后台进程(系统创建的进程)。操作系统本身也是一个程序,它也创建了很多进程。

3.3 进程控制块抽象(PCB Process Control Block)

在这里插入图片描述
计算机同时可以跑很多个进程(几百个),这时就需要对进程进行管理。

描述
我们使用C语言中的结构体;Java中的类定义进程的核心属性。

  1. PID
    在这里插入图片描述
    PID相当于数据表中的逐渐,也相当于人的身份证号,在操作系统中全局唯一。

  2. 内存指针
    当程序运行时,操作系统从磁盘中加载程序文件到内存中,在程序运行之前就要在内存分配一片有效的空间。在内存中的数据宇指令最终被CPU执行和读取。

  3. 文件描述符表
    当程序运行起来之后需要访问一些文件资源,这时操作系统就负责给程序分配这些资源,程序需要的每个文件就被称为文件描述符,多个文件母爱书复合在一起,就组成了文件描述符表,类似于一个集合。

默认每个程序运行时都会分配三个文件描述符:

  1. 标准输入:System.in
  2. 标准输出:System.out
  3. 标准错误:System.error

进程调度:

  1. 进程状态
  • 运行状态:当前在CPU上,正在执行指令。
  • 就绪状态:排队中,随叫随到,随时可以上CPU运行。

一般将运行状态和就绪状态理解为一个状态。

  • 阻塞状态:当前不适合到CPU上执行。

在这里插入图片描述

在这里插入图片描述

  1. 当前电脑上有百十个进程,但是只有20个逻辑处理器,也就意味着可以通过是处理20个指令。

  2. 一个逻辑处理器,并不是一次把一个进程执行完再去执行另一个进程,而是一个进程执行一会就让它休息一会,再去执行另一个进程,这样不停的轮换着执行,由于CPU的频率很高,轮换的速度也很快,人察觉不到而已。

  3. 并发与并行
    在这里插入图片描述

  1. 进程优先级
    哪个进程有更多机会到CPU上运行,优先级就越高,机会就越大。
  2. 进程的上下文
    进程调度的过程中,进程一会失去了CPU,一会又回到CPU上继续执行,回到CPU之后要沿着上次的状态继续执行,而不是从头开始。

失去CPU时,进程的中间值(当前执行的指令是什么,下一条指令是什么,中间产生的一些变量):从寄存器 —> 内存中。
回到CPU中时,从内存中 —> 寄存器。

保存上下文–读档, 回复上下文–存档。
7. 进程的记账信息
统计功能:统计每个进程在CPU上运行了多久,哪些进程多长时间没有上CPU运行了。

进程的组织方式:
通过一个双向链表组织PCB

  1. 创建一个进程—把PCB加入到链表中。
  2. 销毁一个进程—把PCB从链表中删除。
  3. 查看所有的进程—遍历双向链表。

3.4 内存分配-内存管理(Memory Manage)

在这里插入图片描述
操作系统为了防止野指针,使用了虚拟内存来规避这个现象,通过内存管理单元(MMU)的方式来实现。

在这里插入图片描述

3.5 进程间通信(InterProcessCommunication)

在这里插入图片描述


http://www.ppmy.cn/ops/154825.html

相关文章

Keepalived高可用集群企业应用实例二

一、实现ipvs的高可用性 ipvs相关配置 虚拟服务器配置结构: virtual_server ip port { …… real_server { …… } real_server { …… } } virtual server (虚拟服务器)的定义格式 virtual_server ip port 定义虚拟主机ip地址及其端口 virtual_server …

React Router v6配置路由守卫

首先准备好以下页面 登录页:用户可以在此页面登录。 受保护页:只有登录的用户可以访问,否则会重定向到登录页。 公共页面:不需要鉴权,任何人都可以访问。 1. 安装依赖 首先,我们需要安装 react-router-do…

01-时间与管理

时间与效率 一丶番茄时钟步骤好处 二丶86400s的财富利用时间的方法每天坚持写下一天计划 自我管理体系计划-行动-评价-回顾 一丶番茄时钟 一个计时器 一份任务清单,任务 步骤 每一个25分钟是一个番茄时钟 将工作时间划分为若干个25分钟的工作单元期间只专注于当前任务,遇到…

侯捷 C++ 课程学习笔记:深入理解 C++ 核心技术与实战应用

目录 引言 第一章:C 基础回顾 1.1 C 的历史与发展 1.2 C 的核心特性 1.3 C 的编译与执行 第二章:面向对象编程 2.1 类与对象 2.2 构造函数与析构函数 2.3 继承与多态 第三章:泛型编程与模板 3.1 函数模板 3.2 类模板 3.3 STL 容器…

SpringSecurity:There is no PasswordEncoder mapped for the id “null“

文章目录 一、情景说明二、分析三、解决 一、情景说明 在整合SpringSecurity功能的时候 我先是去实现认证功能 也就是,去数据库比对用户名和密码 相关的类: UserDetailsServiceImpl implements UserDetailsService 用于SpringSecurity查询数据库 Logi…

DeepSeek R1与OpenAI o1深度对比

文章目录 引言技术原理DeepSeek R1OpenAI o1 性能表现官方数据推理任务知识密集型任务通用能力 价格对比应用场景科研与技术开发自然语言处理(NLP)企业智能化升级教育与培训数据分析与智能决策 部署与集成DeepSeek R1OpenAI o1 伦理考量DeepSeek R1OpenA…

英语语法 第一天

I’m a student. 我是个学生 我是个新东方的学生 I’m a student of New Oriental School 我爱你 I love you 我在心中爱你 I love you in my heart. 这是一朵花 This is a flower 这是一朵在公园里的花 This is a flower in the park.(修饰部分在修饰词后面) 主干…

显示当前绑定变量

来自v$sql中的信息 测试两个变量的情况(实际可以看6个,可根据需要修改) DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…