【后端开发】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的相关知识,以及操作系统中最主要的进程控制块和进程的相关知识如状态,通信等问题。

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


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

                                                                 😊😊  期待你的关注~~~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 (SCA) 工具,可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 (CPE) 标识符来实现此目的。如果找到,它…

Java线程的三大特性

原子性: 线程任务不可再分。 int i 1; i; 原子类 AtomicXXX 可见性: 线程之间的操作是互相不可见的。 volatile //线程A如果,flag为true,就运行打印语句 A: trueThread t1 new Thread(() -> {while (true) {if (flag) {System.out.println(&q…

【数据结构】AVL树相关知识详细梳理

1. AVL树的概念 AVL的全称是Adelson-Velsky-Landis,其名称来源于其发明者Adelson、Velsky和Landis, 是平衡二叉树搜索树。 它的出现是由于二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找…

【数据结构】栈和队列(Stack Queue)

引言 在对顺序表,链表有了充分的理解之后,现在让我们学习栈和队列!!! 【链表】 👈链表 【顺序表】👈顺序表 目录 💯栈 1.栈的概念及结构 2.栈的实现 ⭐初始化栈 ⭐入栈 ⭐…

Vue引入js脚本问题记录(附解决办法)

目录 一、需求 二、import引入问题记录 三、解决方式 一、需求 我想在我的Vue项目中引入jquery.js和bootstrap.js这种脚本文件,但发现不能单纯的import引入,问题如下。 二、import引入问题记录 我直接这么引入,发现控制台报错TypeError: …

POI操作EXCEL增加下拉框

文章目录 POI操作EXCEL增加下拉框 POI操作EXCEL增加下拉框 有时候通过excel将数据批量导入到系统,而业务操作人员对于一些列不想手动输入,而是采用下拉框的方式来进行选择 采用隐藏sheet页的方式来进行操作 String sheetName "supplier_hidden_s…

MedPrompt:基于提示工程的医学诊断准确率优化方法

Medprompt:基于提示工程的医学诊断准确率优化方法 秒懂大纲解法拆解MedPrompt 提示词全流程分析总结创意视角 论文:Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine 秒懂大纲 ├── 1 研究背景【描述背…

vue.js——“微商城”后台管理系统

1. 需求背景: 先创建运行环境,“微商城”后台管理系统是一种后台管理系统平台,旨在提供一个便捷、安全和高效的管 理和操作各类数据的平台。系统将涵盖用户登录、商品管理、分类管理、新增分类和个人中 心等功能,以满足用户高效数据管理的各…

一窥AI大模型奥秘:技术前沿与产业应用双轮驱动

在科技日新月异的今天,人工智能(AI)正以前所未有的速度重塑着我们的生活与工作方式。其中,AI大模型作为技术的最前沿,不仅引领着技术体系的革新,更是产业实践与未来趋势的关键所在。 近期,有幸…

P335_0334韩顺平Java_零钱通介绍

目录 P335_0334韩顺平Java_零钱通介绍代码过程编程OOP(Object-Oriented Project) 参考资料 P335_0334韩顺平Java_零钱通介绍 先完成显示菜单,并可以选择。完成零钱通明细。完成收益入账。消费。退出。 PS:判断时尽量用不正确的条…

甘蔗茎节检测系统源码分享

甘蔗茎节检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【小程序】微信小程序课程 -2 快速上手

目录 1、快速上手基本概念 1.1 小程序常用组件 1.2 tabbar配置 1.3 尺寸单位 1.4 样式 1.4.1 全局样式 app.wxss 1.4.2 局部样式 xx.wxss 2、首页案例 2.1 button组件使用 2.2 swiper swiper-item 2.3 tips效果 2.4 引入矢量图 2.5 flex(布局&#…

LeetCode: 1971. 寻找图中是否存在路径

寻找图中是否存在路径 原题 有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0 到 n - 1(包含 0 和 n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点…

『功能项目』按钮的打开关闭功能【73】

本章项目成果展示 我们打开上一篇72QFrameWork制作背包界面UGUI的项目, 本章要做的事情是制作打开背包与修改器的打开关闭按钮 首先打开UGUICanvas复制button按钮 重命名为ReviseBtn 修改脚本:UIManager.cs 将修改器UI在UGUICanvas预制体中设置为隐藏 运…

Python--操作列表

1.for循环 1.1 for循环的基本语法 for variable in iterable: # 执行循环体 # 这里可以是任何有效的Python代码块这里的variable是一个变量名,用于在每次循环迭代时临时存储iterable中的下一个元素。 iterable是一个可迭代对象,比如列表(…

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统,基于最新的YOLOv8注意力机制训练的玉米病害检测模型,和基于PyQt5制作的可视玉米病害系统,包含登陆页面和检测页面,该系统可自动检测和识别图片或视频当中出现的七类玉米病害:矮花叶病…

Maya没有Arnold材质球

MAYA 没有Arnold材质球_哔哩哔哩_bilibili

软件测试基础篇

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 “尽早的介入测试,遇到问题的解决成本就越低” 随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,…

2024.9.26 作业 +思维导图

一、作业 1、什么是虚函数?什么是纯虚函数 虚函数:函数前加关键字virtual,就定义为虚函数,虚函数能够被子类中相同函数名的函数重写 纯虚函数:把虚函数的函数体去掉然后加0;就能定义出一个纯虚函数。 2、基…

前端——实现时钟 附带小例子

创建日期对象 toLocaleDateString() 获取日期 console.log(date.toLocaleDateString()) toLocaleTimeString() 获取时间 console.log(date.toLocaleTimeString()) toLocaleString() 获取日期和时间 console.log(date.toLocaleString()) date.getDay() 获取星期几 周日为…