javaEE初阶————计算机是如何工作的

今天给大家带来javaEE初阶的知识,相信大家已经学完javaSE了吧,我们从本期博客开始为大家一一讲解,我们现在开始吧

我们作为程序员,大概了解这部分即可嗷

1,计算机的组成

祖师爷提出的:

冯诺依曼体系结构;

1,cpu

2,存储器

3,输入设备

4,输出设备

一台计算机由啥构成:

1,CPU:CPU是人类科技的巅峰制作,是电脑上最核心的部分,也叫中央处理器,计算机上进行各种逻辑判断,算数运算都是由CPU负责的,我们代码里写的内容都是CPU负责的。

2,主板:一个巨大的插座

3,内存:存储数据的主要模块

4,硬盘:存储数据的主要模块

这里玩意有啥区别呢,不知道大家学没学过数据库,我们使用数据库的目的是高效的将硬盘中持久化的数据拿出来,“持久化”,这个词描述的就是硬盘,内存的读写速度快,硬盘反之内存的造价也高,硬盘就要便宜很多,内存的存储空间小,硬盘的存储空间大,还有就是内存存储数据不是持久的,断电就没有了,硬盘不一样,断电也在

我们将内存和硬盘统称为存储器

5,电源

6,散热器

7,机箱

8,显卡

9,GPU

10,键盘.....................

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

CPU是“通用计算器”,而GPU是“专用计算器”,可能一些CPU能算的东西GPU不能算,但是GPU专用计算的赛道,就远远比CPU要快了。GPU就是用来处理,运算虽然简单,但是运算量非常大的场景比如:

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

2,挖矿(加密货币)

不知道大家听没听过比特币这个东西,一个可贵了,还有以太坊,和狗狗币等。挖矿就是赚佣金,比特币这样的区块链网络能够运行需要一些系统来辅助,你的电脑参与辅助工作,就能分一些比特币,区块链给你出题,你如果有好的显卡你就能抢到这个任务,赚取到佣金。

说完这些,冯诺依曼体结构中的输入设备和输出设备是啥呢,我们是在CPU视角上来讨论的,数据来到CPU我们叫做输入,从CPU走我们叫做输出。

触摸屏既是输入设备也是输出设备,还有网卡,上网的时候和网线连接的部分对应的硬件,也是集成在主板上的,下载数据的时候是输入,上传数据的时候是输出;

2,CPU

1>   cpu关心的指标

1,我们下面来讲讲现代CPU关心的指标,我们打开任务管理器,

看到这有一个速度和,基准速度,

基准速度也叫基频,默频,G是10亿,HZ是一秒钟多少次,3.20GHZ就是一秒能进行32亿次计算

速度又叫睿频和加速频率(有加速上限)

现代CPU的特性,动态的根据任务量变更自己的频率,

2>   cpu和核心

2,CPU和核心数

CPU核心数越多,CPU就越牛,(CPU干活效率越高)

我们通常说的8核,16线程,就8个物理核心,16个逻辑核心(能同时干16个活)

这里还有大小核,超线程的概念;

3>   CPU执行指令的过程

编程语言分为3大类

1,机器语言(二进制形式)

2,汇编语言

3,高级语言(java......)

CPU上都支持那些指令,每个指令怎么表示,有那些意义,在CPU被设计的时候就确定了;

我们可以根据指令表来查看CPU的每一步操作

这里是咱们简化的指令表,正常的指令表是64个bit,8个字节,

一条指令 = 4位操作码 + 4位操作数   (简化版);

RAM是内存,LOAD_A指令的功能是把内存数据提取到CPU寄存器A中,STORE_A指令是把A寄存器的数据写入到内存中,ADD指令是将两个寄存器的数据的和相加放到第二个寄存器中,内存地址就理解为指针;

寄存器:

存储数据的模块,长在CPU身上的,CPU的寄存器,访问速度比内存还要快,存储空间也更小,造价也更高,寄存器主要在CPU执行指令进行各种运算的时候存储临时数据,起到一定的辅助作用;

 

CPU执行指令的过程

1,读取指令

2,解析指令(对照指令表,理解指令的含义)

3,执行指令

开始了嗷,

1)读取指令(从0地址开始执行)

00101110

2)解析指令

0010(opcode)     1110(操作数)

我们看到LOAD_A的opcode是0010,所以我们这一步的操作是将操作数读取到寄存器中,1110是14,14地址上的数是3

3)执行指令

此时CPU中的A寄存器就出现了数据3;

我们假设CPU是顺序执行指令表的

1)读取指令

00011111

2)解析指令

0001(opcode)       1111(操作数)

LOAD_B的opcode是0001,将操作数15的地址上的数读取到寄存器B中

3)执行指令

CPU

寄存器A:3

寄存器B:14

1)读取指令

10000100

2)解析指令

1000(opcode)        0100(操作数)

ADD的opcode, 01为B,00为A,两个寄存器的编号,数据相加,结果放到00中

3)执行指令

CPU:

A:17

B:14

1)读取指令

01001101

2)解析指令

0100(opcode)     1101(操作数)

0100是STORE_A的opcode,1101是13,

我们就要把寄存器中的数据存到地址为13的数据中

这样就把地址为13的数据改为我们刚刚的17了。

这就是模拟CPU进行加法的过程;

大家有没有听过一个东西,热补丁,这个就是在指令的层面实现的,我们在服务器遇到严重bug的时候,有时候我们有不能重启的需求,我们就需要指令来修复,因为服务器本神也是一段指令;

3,操作系统

1,简介

计算机中最重要的“软件”

不同的操作系统之间是不兼容的,一个软件在Linux能运行但是在Windows就不行了,但是我们java怎么说来着,一次运行,到处运行?还是啥来着,反正因为java的虚拟机,java给各种主流系统都开发了一个虚拟机,jvm牛批(后面再舔)哈哈哈哈哈。

我们来介绍主流的操作系统

Windows

Linux

Mac 

IOS

Android

还有不断完善的鸿蒙操作系统;

大家了解过驱动程序没有,我们有的时候买鼠标,一堆按键,刚拿回来是不生效的,我们会去官方下对应的东西,这个就是驱动程序,操作系统通过驱动程序间接来控制硬件,显卡也是一样;

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

1,管理各种硬件设备

2,为各种应用环境提供各种稳定的运行环境,这里我们就要引出进程了;

操作系统中的一个重要概念:进程(process)

一个运行起来的程序就是进程

这些打开了的,全都是进程

一个计算机可能有上百来个进程,那么操作系统是怎么去管理这些呢,

1,使用结构体来描绘出进程的属性,PCB进程控制块,一个非常大的结构体

2,把多个进程组织起来,用数据结构,比如链表啊之类的,来把进程一个一个串起来;

大概的流程就是

1)创建一个新的进程

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

2)查看进程表

遍历进程链表,取出链表上的每个元素,把关键信息显示到界面是上;

3)销毁进程

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

大家有没有注意到一个问题,操作系统操作CPU来驱动各种程序,但是操作系统本身也是个程序呀,也就是一段指令,CPU不是去执行指令的吗,那到底是CPU操作操作系统还是操作系统操作CPU呢,其实还是操作系统操作CPU,我们的电脑在打开时,CPU醒了运行一些指令来唤醒操作系统,操作系统在操作CPU进行更多的操作;

2,PCB的属性

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

1,pid(进程的ID)

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

3,文件描述符表

进程在运行的过程中会消耗内存分配,同时也会和硬盘去交互,硬盘是上的数据是以文件的形式来组织的,进程读取硬盘的文件的时候就会打开文件,我们会把这个文件的信息保存到文件描述符表中,表里的每一项,对应打开了哪个文件

进程的运行还会依赖到CPU,网卡等资源

4,状态

5,优先级

6,上下文

7,记账信息

我们把4,5,6,7统称为进程的调度

大家思考一个问题,我们早期的计算机是单进程的,在运行一个软件1,在想要运行软件2就要把软件1关掉,我们现在虽然引入了多进程的概念,但是一个电脑可能核心只有12个,那么上百个进程,12个核心怎么做到一起运行的呢,其实并没有,还记得计算机一秒能运算32亿甚至更多次吗,大家学没学过微分,我们在切换软件的时候,其实进程一直在交替的运行,先运行这个在运行那个,只不过是太快太快了,我们无法感知到,我们遇到过的卡顿,就是进程太多了,速度降下来了,我们感知到一点了,这样把单位时间分为很多份,第一份运行进程1的指令,第二份运行进程2的指令,超高速的切换,我们就管他叫分时复用

这里引出两个概念:
1,并发执行:

把一个CPU上,按分时复用,执行多个进程的方式称为“并发执行”

2,并行执行:

在多个CPU上,同时执行多个进程的方式就是“并行执行”

 一般并发执行和并行执行是同时存在的,我们可以把他俩统称为并发执行;

因为需要并发执行,操作系统需要快速的切换进程,也就是进程调度

4,进程状态

两个最典型的

1)就绪状态————CPU上随叫随到

2)阻塞状态————进程不适合在CPU上运行

5,进程的优先级

打游戏的时候,游戏的优先级一定会比qq,微信的高吧,这个后面在讲

6,进程的上下文

我们可能一个进程执行了一会就暂时不用了,那么他就失去了CPU,我们再使用的时候就能沿着上次的状态执行,CPU上的寄存器就存储了进程运行的“中间状态”

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

回复上下文:把PCB中的属性,填回寄存器中

7,进程中的记账信息

记录了你当前进程分配了多少资源,使用了多久,如果你好就没吃到资源了,还会给你这个进程分配一些资源

差不多啦,下期给大家带来多线程的知识!

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值