JavaEE知识点总结详细版(一)计算机是如何进行工作的

目录

0、概述

1、计算机的发展史

2、冯诺依曼体系(Von Neumann Architecture)

3、CPU 基本工作流程

逻辑门

门电路(Gate Circuit)

4、算术逻辑单元 ALU(Arithmetic & Logic Unit)

1、进制的理解

2、算术单元(Arithmetic Unit)

3、逻辑单元(Logic Unit)

5、寄存器(Register) 和内存(RAM)

6、控制单元 CU(Control Unit)

7、 指令(Instruction)

8、CPU 的基本工作流程

~ CPU的中断模式(Interrupt Mode)

~ 重要观点总结

9、编程语言(Program Language)

程序(Program)

编程语言发展

高级语言特性对应指令

顺序执行

条件分支

函数/方法(Function/Method)

操作系统(Operating System)

操作系统的定位

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

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

CPU 分配 —— 进程调度(Process Scheduling)

内存分配 —— 内存管理(Memory Manage)

进程间通信(Inter Process Communication)


0、概述

Java EE (Java Enterprice Edition)  Java  企业版
Java EE中提供了很多用于企业级开发需要的类(接口),这些类一 般在安装JDK的时候是不含的以第三方库的形式来提供的。很多时候,官方的角色是只指定标准(只提供了接口、抽象类) ,具体的实现则交给其他厂商完成(实现类)
JavaEE大致分为以下两个板块
1. JavaSE 下的复杂的知识,例如多线程、IO
2. Java Web 业务的开发
   (1). Servlet标准的解决方案一生产中实际使用的场景不多 了
   (2). Spring下的Web开发

1、计算机的发展史

人类对计算的需求是从古至今一直存在的一条主脉络。 (信息化改革)
人均算力在不断地攀升。
第一阶段: 一个国家组织共同使用一台计算机
第二阶段: 一个商业组织共同使用一、多台计算机
第三阶段: PC (Personal Computer) 以家庭为单位开始使用计算机了
第四阶段:以个人为单位开始使用计算机
未来: 一个人会有很多计算机

2、冯诺依曼体系(Von Neumann Architecture

现代的计算机, 大多遵守 冯诺依曼体系结构

处理器(CPU) = 运算器 + 控制器
存储器(Memory) = 内存    storage (二 级存储)、memory (内存)
外部数据( 物理数据 )进入到存储器 via 输入设备 (Input Device)
存储器内的数据出来到外部世界 via 输出设备 (Output Device)
运算器+控制器+存储器+输入设备+输出设备
处理器+存储器+输入设备+输出设备
CPU + 内存 + I/0 内部的数据交换通过 总线(BUS) 

CPU 中央处理器 : 进行算术运算和逻辑判断 .
存储器 : 分为外存和内存 , 用于存储数据 ( 使用二进制方式存储 )
输入设备 : 用户给计算机发号施令的设备 .
输出设备 : 计算机个用户汇报结果的设备
针对存储空间   硬盘 > 内存 >> CPU
针对数据访问速度   CPU >> 内存 > 硬盘
eg👇

程序 = 指令 + 数据
程序 = 算法(有特定意义地指令) + 数据结构(有组织的数据)
小明需要先把自己要小计做的事情(指令+数据=程序)按照一定的格式,体现写好 —— 开发阶段
小明把写好程序的纸+箱子交给小计,小计开始按照指令行动 —— 运行阶段
一次开发阶段产性的程序,可以有多次运行阶段。
小明在北京做的开发,小计可以在西安进行的运行。一开发阶段的工作地点, 不定就是运行阶段的工作地点。小明可以是一个人, 小计可以是多个人。

3、CPU 基本工作流程

CPU逻辑算术运算器 (与、或、非、加、减乘、除、取余) ;控制器寄存器 (register)是临时存储数据的存储单元 (每个都只能保存一个整型数、但是不止一一个) 现代的高级CPU为了提升性能,一般都带有缓存(CPU 内缓存)  Level1  Level2  Level3 L1/L2/L3缓存

逻辑门

电子开关 —— 机械继电器 (Mechanical Relay)

门电路(Gate Circuit)

4、算术逻辑单元 ALUArithmetic & Logic Unit

ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。

1、进制的理解

2、算术单元(Arithmetic Unit)

算数单元,负责计算机里的所有数字操作
半加器(Half Adder)进行两个 1 位(bit)数的相加

全加器(Full Adder)  进行三个 1 位(bit) 数的相加

8位数的加法器 = 7 * 全加器 + 1 * 半加器

3、逻辑单元(Logic Unit)

ALU 符号  

5、寄存器(Register) 和内存(RAM)

中间我们隐藏了一些实现细节,最后的效果就是:使能线置位时,输入为 1,保存 1;输入为 0,保存 0。使能线不置位时,则写入无效。

我们可以利用门锁,构建我们需要的寄存器和内存。

内存的构建要比这个复杂一点,但基本原理一致。如此构建的内存被称为 RAM(Random Access
Memory) ,可以支持 O(1) 时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是 O(1) 的硬件支持。

6、控制单元 CU(Control Unit)

 

7、 指令(Instruction

8、CPU 的基本工作流程

1.取码阶段
CU根据PC寄存器的值,去内存的响应位置,把数据(指令)读取到IR寄存器中正常情况下,PC寄存器中的值自动+ 1
2.解码阶段
CU按照预先设定的指令集解读指令数据(opcode +操作数)
例如: 0010 1110
       人为规定: 0010 是opcode
       查询指令表,知道0010代表的意思:从后边地址指定内存处,将数据读取到A寄存器
       地址: 0b1110 —> 14 .
3.执行阶段
LOAD指令应该由CU执行,所以按照规定执行指令:
从内存的14地址处,将数据读取到A寄存器中

 ALU + CU + 寄存器 + 时钟就组成了我们平时经常看到的一个词汇:中央处理器(Center Process

Unit )简称 CPU

~ CPU的中断模式(Interrupt Mode)

正常模式下,CPU可以顺序执行,可以分支执行,只能按照既定顺序去执行。但现实中,很多时候,需要暂时中断CPU的当前执行流,先让CPU去做点其他工作,再回过头来继续原来的执行流。
CPU硬件中提供了一种机制(中断)让CPU停下
1.保存当前的PC的值到内存的某个位置
2.修改PC的值,让执行其他执行流
3.其他执行流执行结束之后,通过将刚才保存的PC值恢复到PC寄存器
4.继续原来的执行流

~ 中断的用途

  1. IO设备的处理: 当有外部数据到达Input设备时,触发某个中断; 让当前正在执行的执行流暂停,切换到Input驱动对应的执行流; 把Input设备中读取到的数据,放到内存的某个位置; 恢复之前的执行流。
  2. 操作系统中用来作进程调度 (线程调度)

~ 重要观点总结

  1. CPU 中的 PC 寄存器,是决定 CPU 要执行哪条指令的关键;
  2. 指令是由动作 + 操作对象组成
  3. CPU 眼中只有指令,没有其他的概念
  4. 程序=指令+数据
  5. 其中指令也可以看作是一种特殊的数据
  6. 任何的数据,基本上都是以整型、浮点型进行表示,以保存到内存中其中,“非数数据” 都会按照一定标准格式编码成整型
  7. CPU = ALU + CU.
    其中ALU负责进行逻辑+算术运算,需要利用寄存器完成中间数据的临时保存
    CU主要负责控制memory <-> register数据传递的指令以及驱动ALU工作
  8. PC寄存器很重要,可以影响当前CPU的执行流,默认情况下是正常顺序走的(自动+1)
    CPU中提供了指令,可以修改PC的值(可以带条件) ,进行产生分支逻辑
  9. CPU的正常工作周期:取码->解码->执行;这个周期一直执行,频率一般就是我们认为的主频
  10. CPU提供了中断模式,可以暂停当前的执行流,先去执行别的执行流,并根据需要,恢复回原来的执行流
  11. CPU视角中只有要执行的下一条指令是什么,根本不知道执行是属于哪个程序,更遑论属于哪个类、方法了 (程序、类、方法等概念都不是为了,计算机硬件准备的。是为了写程序的人准备的)
  12. 代码中的一条语句,很可能要对应多条指令才能完成。

9、编程语言(Program Language

程序(Program

程序 = 指令 + 指令要处理的数据。

编程语言发展

高级语言特性对应指令

接下来,让我们先忘掉文件,假设我们的程序已经全部保存在了内存中,我们分别来学习下高级语言中 的的顺序、分支、循环、函数(方法)调用特性是如何对应到指令层面上的。

顺序执行

 CPU 工作原理中的顺序执行,就是随着 PC 中的地址自增,指令顺序向下执行。
注意:高级语言的一条语句 (Statement) 往往对应很多条指令 (Instruction) 才能完成。

函数/方法(Function/Method

下面,我们看看指令是如何抽象成高级语言中的函数(方法)的。

 

操作系统(Operating System

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

操作系统的定位

 操作系统有两个基本功能:

1 ) 防止硬件被时空的应用程序滥用;
2 ) 向应用程序提供简单一致的机制来控制复杂而又通常大相径庭的低级硬件设备。

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

每个应用程序运行于现代操作系统之上时,操作系统会提供一种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了一个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。
进程是操作系统对一个正在运行的程序的一种抽象,换言之, 可以把进程看做程序的一次运行过程 同时,在 操作系统内部,进程又是操作系统进行资源分配的基本单位。

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

计算机内部要管理任何现实事物,都需要将其抽象成一组有关联的、互为一体的数据。在 Java 语言中,我们可以通过类/ 对象来描述这一特征。
// 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
class PCB {
   // 进程的唯一标识 —— pid;
   // 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
  // 分配给该资源使用的各个资源
   // 进度调度信息(留待下面讲解)
}
这样,每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。
操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作。

CPU 分配 —— 进程调度(Process Scheduling

为了便于讨论和理解,我们大部分的场景下假设是单  CPU  单核的计算机。
操作系统对 CPU 资源的分配,采用的是时间模式 —— 不同的进程在不同的时间段去使用 CPU 资源。

内存分配 —— 内存管理(Memory Manage

操作系统对内存资源的分配,采用的是空间模式 —— 不同进程使用内存中的不同区域,互相之间不会干扰。

进程间通信(Inter Process Communication)

如上所述,进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了 进程之间互相具备“隔离性
Isolation
但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行 信息交换 的需求。进程间通信的需求就应运而生。
进程通信方式:
  1. 管道 (pipe)
  2. 共享内存 (shared memory)
  3. 消息队列 (message queue)
  4. 网络通信 (network)
  5. 信号量 (semaphore)
  6. 信号 (signal)
其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信,例如我们使用的 workbench 和 MySQL 就是通过这种方式完成数据的传递工作的。

本小节完^_^

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王嘻嘻-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值