【后端开发】JavaEE初阶——计算机是如何工作的???

前言:

🌟🌟本期讲解计算机工作原理,希望能帮到屏幕前的你。

🌈上期博客在这里: 【MySQL】MySQL中JDBC编程------MySQL驱动包安装------(超详解)

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

目录

📚️1.引言

📚️2冯诺依曼体系

📚️3.CPU

3.1CPU的组成

3.2多核CPU

3.3指令

3.4缓存和流水线

1.缓存

2.流水线

3.5总结

📚️4.操作系统

4.1进程、任务

4.2进程的管理

1.先描述

2.再组织

4.3PCB的核心属性

1.pid进程标识

2.内存指针

3.文件描述附表

4.4进程的调度

1.状态

2.优先级

3.记账信息

4.上下文

4.5内存的分配-内存的管理

4.6进程间通信

4.7缺点

📚️5.总结

📚️1.引言

Hello!!!家人们,小编又回来啦,上期讲解了关于JDBC编程,那么mysql部分就基本上结束撒花咯🎉🎉🎉接下来,就开启后端开发JavaEE初阶的学习了,本期就开始基础的计算机是如何工作的,开始发车了。加油加油~~~🥳🥳🥳

且听小编讲解,包你学会!!!

📚️2冯诺依曼体系

图片展示:

很明显可以看出:

**CPU:**是进行数据的算术运算和逻辑运算

**存储器:**由外存和内存组成,主要是用来进行数据的存储(这数据以二进制的方式进行存储)

**输入设备:**顾名思义即用户给计算机发送指令的部分

**输出设备:**顾名思义就是计算机进行数据处理后返回展示给用户的部分

按照内存大小:硬盘>内存>>CPU

运行速度:CPU>>内存>硬盘

📚️3.CPU

3.1CPU的组成

CPU是由:

门电路=>半加器=>全加器=>加法器=>ALU运算器=>构成了CPU

虽然后端开发不用全部了解每个部分的工作原理,但是计算机的重要部分例如:内存,硬盘,CPU这些重要的部分还是要了解到的;

门电路是由晶体管构成,这是一个非常小的单元,级别为nm级别;CPU能无限小吗???

答案是不能,太小了经典物理学就不管用了,还有制作工艺大大增加,过大也不行:太大了会造成良品率大幅度下降;

此时就有了多核CPU的概念

3.2多核CPU

即软件将任务分成部分小块,合理的分给多个CPU(即一个活有多个人来干)(并发编程),那么此时的效率就大大提升了,那么还有一种情况,就是一个CPU可以干两个人的活那么就有了(超线程技术)

即4个CPU可以干8个人的活;4:为物理核心;8:为逻辑核心;

其实我们的电脑即时运用了超线程技术的:打开任务管理器;

打开性能栏目:可以看到小编这个电脑是内核为6(物理核心),逻辑处理器为12(逻辑核心)这就运用了超线程技术;

当然不是核心越多越好,像有的CPU核心很多,但是单核的频率不高,也是不行的;

频率:描述CPU核心工作的速度

例如:小编这里的速度:3.01GHz表示的是一秒钟执行30.1亿次;

这里的单位换算:

1KHz=1024Hz 1MHz=1024KHz 1GHz=1024MHz

注意描述一个CPU的性能好坏是看最低执行频率(基础频率)和上限(最大睿频);

3.3指令

指令表:

这里的RAM即是:内存

所谓的寄存器就是由于CPU的存储数据少,而为了支持CPU的计算,而保存中间结果的一个空间

下面小编就来模拟一下程序的执行过程

3.4缓存和流水线

随着啥时间的发展,cpu执行的速度越来越快,而CPU的执行需要从内存中读取数据,那么就会发现内存读取跟不上CPU的执行速度了;

1.缓存

例如:在表演的时候,演员家里表演的地方很远时,隔天表演,那么演员就会在附近的宾馆住宿,那么就不会回自己的家,而CPU执行也是一样的;

那么需要用的数据存储在一个空间(集成在CPU上),虽然空间不大,但是里CPU近。就解决了从内存中读取数据太慢的问题;

2.流水线

例如:一次表演,当A上台进行表演时,就要把接下来表演的B接到舞台附近,依次进行;

同理:当CPU在执行的时候,就将内存中的数据读出来,准备下一个数据的执行;

3.5总结

1.CPU执行的指令都存储在内存中

2.要想执行指令,就要从内存中取出指令,解析只能,最后执行指令

3.取指令需要从内存中读取指令到CPU寄存器中,由于取指令这一步很消耗时间,引入了流水线和缓存机制

4.CPU解析指令时要用到指令表,不同CPU架构的指令表是不同的

5.指令在执行过程中带有的操作数,不同的操作数的作用是不同的

6.CPU主要的参数是主频,代表这CPU一秒中执行的次数

📚️4.操作系统

目前的操作系统:Windows,Linux,iOS,Android,Mac;

操作系统是一个软件~~~(由程序编写而成)

作用:

1.管理各种硬件设备

2.为软件提供稳定的运行环境

而JVM又是对其系统进行封装,所以我们JAVA程序员,就只用掌握JVM提供的API就可以实现各个操作系统的操作;

为啥我们要有操作系统???

就拿各种硬件设备来看,不同的鼠标有不同的功能,键盘也是一样的,那么程序员需要针对不同的硬件设定不同的代码吗,这样就太麻烦,所以就引入了操作系统,这样就可以管理各种硬件设备,给软件提供统一的API;

图例如下:

此所谓上至软件应用程序,下至各种硬件设备

4.1进程、任务

所谓的进程就是操作系统提供一种软件资源,我们运用的系统就是"多任务操作系统";

这里的每个电脑打开的后台,和最小化就是多个任务,一个任务可以理解为一个进程;

注意:任务在执行的过程会消耗一定的硬件资源,换而言之就是进程执行时都要分配一定的系统资源;进程是系统资源分配的基本单位;

可以猜测这个截图时运用微信进行裁剪的~~~嘿嘿

4.2进程的管理

1.先描述

一般是通过类/结构体这样的方式,将实例所属性描述出来,由于操作系统是c++写的,所以可以使用结构体来表示进程的结构体,叫做PCB(进程控制块)

2.再组织

在使用数据结构将这些类或者结构体串起来;

当我们看到任务管理器里的进程信息的啥时候,就意味着系统内部在进行链表的遍历,并进行每个节点的打印;

若果进行一个新的程序,那么就会创建一个新的进程,那么就要构造一个新的PCB,然后插入到链表上;

若果结束一个程序的运行,那么进程的PCB就要从链表中进行删除,对应的PCB就要进行销毁;

4.3PCB的核心属性

1.pid进程标识

系统会通过简单的不重复整数来进行区分,保证同一时刻,每个进程的pid是不同的;

2.内存指针

所谓的内存指针就是用来描述进程使用,内存的分配问题的;

例如:学校的寝室楼,每个同学都有自己的寝室,内存指针就像是每个学生所对应寝室号,指定这个学生的寝室是哪一个,而不是每个寝室学生都可以使用;

所以:内存指针就是表示进程能够使用哪些内存~~~,而指令和数据都是存在内存中的,进程的也需要知道能够使用哪些数据和指令;

3.文件描述附表

所谓描述了进程所使用的相关硬盘资源,操作系统会对这些硬盘资源封装=>文件;

进程想使用一个文件那么就要先打开文件,所以进程就会在文件描述附表中构建一个结构数据来表示文件的相关信息

4.4进程的调度

1.状态

描述某个进程能否进入CPU进行执行;

就绪状态:随时准备好进入CPU进行执行;

阻塞状态:指某个进程不方便进入CPU,不能进行调度(例如,等待IO,用户的输入与输出)

例如:

Scanner函数执行,就需要用户进行输如数据,否则程序就不会执行;

2.优先级

即指多个进程等待系统的调度,每个进程的被调度的先后顺序是不一样的;

例如:在游戏和QQ同时运行时,很明显游戏的进程优先级肯定大于QQ的优先级;

3.记账信息

即描述每个进程运行占CPU的时间的统计,会根据这个统计来进行调整进程占有CPU的时间;

4.上下文

PCB一种数据结构

1.存档

当要将进程调度出CPU时,那么就要将寄存器中的信息,单独存储在一个空间里(内存中)

2.读档

当该进程再次进入CPU时,就要将寄存器中的信息回复过来,即将内存中寄存器存储的数据加载到CPU中;

4.5内存的分配-内存的管理

对于内存的管理是一个非常复杂的问题,小编这里就不再讲解了(小编没有过多了解~~)

核心思想:每个进程的内存是互不干扰的,通常情况下进程A是不能访问进程B的;

作用:主要是为了当一个进程代码出现Bug的时候,保证其他的进程是不会受到干扰的;这也叫做进程的独立性;

4.6进程间通信

对于一些特殊的情况,需要多个进程相互配合,来合作完成某些工作

进程间通信是与进程独立性是不冲突的,系统会提供公共空间,来供多个进程进行数据之间的交换

4.7缺点

多任务操作系统,即多进程操作系统,希望系统同时进行多个程序的运行;

**但是如果在频繁的创建和销毁进程的时候,多进程编程系统的开销就会很大(主要是在资源的申请和释放上);**此时就要引入多线程编程了,小编下期开始讲解;

📚️5.总结

💬💬小编本期讲解了关于计算机的构成,主要讲解了关于CPU的相关知识,以及操作系统中最主要的进程控制块和进程的相关知识如状态,通信等问题。

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

😊😊 期待你的关注~~~

相关推荐
paopaokaka_luck2 分钟前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
以后不吃煲仔饭15 分钟前
Java基础夯实——2.7 线程上下文切换
java·开发语言
进阶的架构师16 分钟前
2024年Java面试题及答案整理(1000+面试题附答案解析)
java·开发语言
The_Ticker21 分钟前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
大数据编程之光43 分钟前
Flink Standalone集群模式安装部署全攻略
java·大数据·开发语言·面试·flink
爪哇学长1 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法
ExiFengs1 小时前
实际项目Java1.8流处理, Optional常见用法
java·开发语言·spring
paj1234567891 小时前
JDK1.8新增特性
java·开发语言
繁依Fanyi1 小时前
简易安卓句分器实现
java·服务器·开发语言·算法·eclipse
慧都小妮子1 小时前
Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图
java·pdf·.net