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

news2024/11/14 14:15:06

前言:

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

🌈上期博客在这里:【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的相关知识,以及操作系统中最主要的进程控制块和进程的相关知识如状态,通信等问题。

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


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

                                                                 😊😊  期待你的关注~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解ConcurrentHashMap

HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作,调用了HashMap的putVal(),具体原因: 1、假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的; 当线程A执行完第六行由于时间…

基于milvus数据库的RAG-Demo

1.上传文本并将文本向量化 import os from django.conf import settings from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter from langchain.vectorstores import Chroma from l…

数据结构-2.7.单链表的查找与长度计算

注&#xff1a;本文只探讨"带头结点"的情况(查找思路类似循环找到第i-1 个结点的代码) 一.按位查找&#xff1a; 1.代码演示&#xff1a; 版本一&#xff1a; #include<stdio.h> #include<stdlib.h> ​ ​ //定义单链表结点类型 typedef struct LNo…

契约锁与您相约2024新疆数字经济创新大会暨新疆数字丝路博览会

9月20日&#xff0c;由新疆数字经济联合会主办&#xff0c;多家行业协会及企业共同承办的“2024(第一届)新疆数字经济创新发展大会暨新疆数字丝路博览会”在新疆国际会展中心盛大开幕&#xff0c;活动期间&#xff0c;契约锁作为电子签章行业领先的服务商携数字可信系列产品亮相…

自然语言处理-基于注意力机制的文本匹配

背景&#xff1a; 任务三&#xff1a;基于注意力机制的文本匹配 输入两个句子判断&#xff0c;判断它们之间的关系。参考ESIM&#xff08;可以只用LSTM&#xff0c;忽略Tree-LSTM&#xff09;&#xff0c;用双向的注意力机制实现。 参考 《神经网络与深度学习》 第7章 Reaso…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

统一网关--gateway(仅供自己参考)

1、网关的概念&#xff1a; 2、网关的功能&#xff1a; &#xff08;1&#xff09;&#xff1a;身份认证和权限校验 &#xff08;2&#xff09;&#xff1a;服务路由&#xff08;具体的业务路由到具体的服务&#xff09;&#xff0c;负载均衡&#xff08;多台服务的话&#xff…

【用Java学习数据结构系列】对象的比较(Priority Queue实现的前提)

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study 专栏&#xff1a;用Java学习数据结构系列 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff…

鸿蒙OpenHarmony【轻量系统内核通信机制(消息队列)】子系统开发

消息队列 基本概念 消息队列又称队列&#xff0c;是一种任务间通信的机制。消息队列接收来自任务或中断的不固定长度消息&#xff0c;并根据不同的接口确定传递的消息是否存放在队列空间中。 任务能够从队列里面读取消息&#xff0c;当队列中的消息为空时&#xff0c;挂起读…

英飞凌 PSoC6 评估板 CAPSENSE 触摸滑条应用示例

PSoC™ 62 with CAPSENSE™ evaluation kit 开发板&#xff08;以下简称 PSoC 6 RTT 开发板&#xff09;是英飞凌&#xff08;Infineon&#xff09;联合 RT-Thread 发布一款面向物联网开发者的 32 位双核 MCU 开发套件&#xff0c;其默认内置 RT-Thread 物联网操作系统。本文主…

EasyExcel的基本使用——Java导入Excel数据

使用EasyExcel导入Excel数据有两种方式 无论哪种方式我们都需要建立Excel表格和Java对象的绑定 首先我们需要根据Excel表头定义一个对应的类 excel表示例&#xff1a; 对应的类&#xff1a; 使用ExcelProperty将excel列名和字段名绑定&#xff0c;括号里面填列名 package co…

【Node.js Vue】还在为选什么乐器发愁?乐器推荐系统帮你解决难题,基于用户行为分析的智能推荐,让你不再为音乐器材烦恼

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

家庭聚餐:用白酒传递亲情与温暖

在这个快节奏的社会里&#xff0c;家庭聚餐成为了一种难得的团聚时光。在这样的场合&#xff0c;一杯豪迈白酒&#xff08;HOMANLISM&#xff09;往往能够成为亲情的纽带&#xff0c;传递着温暖与爱意。今天&#xff0c;我们就来谈谈在家庭聚餐中&#xff0c;如何通过豪迈白酒来…

docker部署mybatis在线生成(网页版)

使用docker下载镜像 docker pull tanghc2020/gen启动命令 docker run --name gen --restartalways -p 6969:6969 -d tanghc2020/gen启动后页面 请求地址 http://localhost:6969/#/dashboard sql 脚本 CREATE DATABASE IF NOT EXISTS gen DEFAULT CHARACTER SET utf8 D…

TPDO触发条件如何满足?

在上一期中&#xff0c;我们了解到TPDO&#xff08;传输过程数据对象&#xff09;的传输类型有很多种&#xff1a;同步周期性传输、RTR&#xff08;远程传输请求&#xff09;以及异步制造商特定事件等。这些类型的触发条件主要分为三种&#xff1a;同步&#xff08;SYNC&#x…

PCL 读取txt格式点云并可视化

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 1.1原理 TXT格式的点云文…

高德地图JS API AMap.MouseTool绘制

fang &#x1f916; 作者简介&#xff1a;水煮白菜王 &#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 高德AMap专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧✍。 感谢支持&#x1f495;&#x1f495;&#…

基于SpringBoot的校园二手商品交易平台的设计与实现

文未可获取一份本项目的java源码和数据库参考。 一、课题研究背景意义及现状 1.课题背景 随着社会的发展&#xff0c;低碳经济生活已成为当今世界发展的主题&#xff0c;物品循环利用、回收再造成为了社会关注的焦点。调查发现&#xff0c;随着大学生购买力的增强&#xff0…

李宏毅结构化学习 02

文章目录 一、上篇博文复习二、Separable Case三、Non-separable Case四、Considering Errors五、Regularization六、Structured SVM七、Cutting Plane Algorithm for Structured SVM八、Multi-class and binary SVM九、Beyond Structured SVM 一、上篇博文复习 图中x表示输入的…

CSS 复合选择器简单学习

目录 1. Emmet 语法 1.1 快速生成 HTML 结构语法 1.2 快速生成 CSS 样式 1.3 格式化工具 2. 调试 2.1 打开调试工具 2.2 使用调试工具 3. 复合选择器 3.1 后代选择器 3.2 子选择器 3.3 并集选择器 3.4 伪类选择器 3.3.1 链接伪类选择器 3.3.2 :focus 伪类选择器 …