【JavaEE精炼宝库】计算机是如何工作的

news2024/11/25 19:49:08

目录

前言:

一、冯诺依曼体系

二、CPU基本知识

2.1 硬盘|内存|CPU关系:

2.2 指令:

2.3 CPU是如何执行指令的(重点):

2.4 小结:

三、编程语言

3.1 程序:

3.2 编程语言发展(了解):

四、操作系统

五、进程

5.1 进程的概念:

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

5.2.1 PCB的核心属性:

5.2.2 操作系统管理进程:

5.3 并行与并发的区别:

六、总结


前言:

今天我们终于来到了JavaEE的舞台,在这之前我们学习了JavaSE,数据结构和数据库。接下来的JavaEE就正式宣告我们对后端的学习踏出了一大步,计算机是如何工作的内容是学习JavaEE的内功也可是说是前置知识,学习它有利用我们后续的学习,所以写下了这篇博客希望可以帮助到您。

现在的计算机大体分成以下几个大类:

• 终端设备(笔记本,台式机,手机.....)

• 服务器

• 嵌入式设备

上面的三个大类都遵守冯诺依曼体系结构

一、冯诺依曼体系

现代的计算机,基本都遵守冯诺依曼体系结构。

• CPU中央处理器:进行算术运算逻辑判断

• 存储器:分为外存和内存,用于存储数据(使用二进制方式存储)。

• 输入设备:用户给计算机发号施令的设备。

• 输出设备:计算机给用户汇报结果的设备。

二、CPU基本知识

2.1 硬盘|内存|CPU关系:

• 针对存储空间:

硬盘 > 内存 >> CPU

• 针对数据访问速度:

CPU >> 内存 > 硬盘

• 针对价格:

CPU >> 内存 > 硬盘

2.2 指令:

• 指令概念:指导CPU进行工作的命令(可以近似理解成CPU提供给程序员的API),主要有操作码+被操作数组成。

其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。

指令本身也是⼀个数字,用二进制形式保存在内存的某个区域中。

下面我将给出一张简单的指令表(大体都是这样的),如下图:

2.3 CPU是如何执行指令的(重点):

所谓的指令都是要先加载到内存中,然后才能被CPU读取并执行。比如一个Java 程序写出来就是一个.java源代码文件。编译得到.class 二进制文件(此时还是在硬盘上),运行程序的时候,jvm 就会把这个.class 加载到内存中,再进一步的翻译成 CPU 能识别的二进制指令。

冯诺依曼体系结构规定:

一个程序中指令和依赖的数据都是要在存储器中保存的,CPU 如果需要执行都是要自动的从存储器中读取到对应的指令的。

• 寄存器:是 CPU 上的一个模块。

• 存储器:是 内存 + 硬盘。

因此 CPU 执行程序大致经历下面三个阶段:

• 读指令:把内存中的指令数据,读取到 CPU 的寄存器(CPU上也能存储数据,存储数据的模块称为 ”寄存器“ 速度比内存更快,但是存储空间跟小且更贵)中。

• 解析指令:理解当前指令要做啥。

• 执行指令:运行指令。

上述的这三个阶段是”简化版“,实际的 CPU 会更复杂。这些内容是计算机执行程序的基本过程,对于理解计算机可以说是非常有意义,虽然面试一般不会直接考这个。

2.4 小结:

• CPU中的PC寄存器,是决定CPU要执行哪条指令的关键。

• 指令是由动作 + 操作对象组成。

• CPU眼中只有指令,没有其他的概念。

三、编程语言

3.1 程序:

所谓程序,就是⼀组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。

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

3.2 编程语言发展(了解):

为了提升编程效率,最早创造了汇编语言的概念。其实汇编语言和机器语言(也就是指令)直接是完全⼀⼀对应的,只是相对于0、1这些数字,发明了⼀些帮助人类记忆和理解的符号将其对应起来,也就是我们上⾯看到的类似LOAD_A、LOAD_B等。程序员完成编程之后,需要使用汇编器 (assembler)将汇编语言翻译成机器语言。

虽然汇编降低了程序员的记忆成本,但要求程序还是必须掌握计算机硬件的所有知识,而且随着计算机厂商越来越多,⼀次编写的程序往往只使用于⼀类计算机。这个是远远不够的,所以更为高级的语言诞生了,高级语言屏蔽了硬件细节,让程序员可以站在更高的层面上思考自己的业务。这里以C语言为例,程序员完成程序的编写之后,需要使用编译器(compiler)和连接器(linker)将程序翻译成汇编语言,再借助汇编器变成最终的机器语言。

借助封装的思想,我们学习编程变得越来越容易。不过有利则有弊,高度的抽象,导致很多的程序员把计算机视为⼀个黑箱,完全无法理解自己的程序是如何工作起来的,希望我们大家不要做这种程序员。

注意:高级语言的⼀条语句(Statement)往往对应很多条指令(Instruction)才能完成。

四、操作系统

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

• 操作系统的定位:

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

1. 防止硬件被应用程序滥用。

2. 向应用程序提供简单⼀致的机制来控制复杂而又通常大相径庭的低级硬件设备。

五、进程

5.1 进程的概念:

每个应用程序运行于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运行,所有的硬件资源都被这个程序在使用。这种假象是通过抽象了⼀个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之一。

进程是操作系统对⼀个正在运行的程序的⼀种抽象,换言之,可以把进程看做程序的⼀次运行过程。同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

除了上述自己运行的程序时进程之外,还有一些系统自带的(对于我们系统能够稳定运行有很重要的意义)。

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

简写:PCB

计算机内部要管理任何现实事物,都需要将其抽象成⼀组有关联的、互为⼀体的数据。在Java语言中,我们可以通过类/对象来描述这⼀特征。

// 以下代码是 Java 代码的伪码形式,重在说明,⽆法直接运⾏ 
class PCB {
// 进程的唯⼀标识 —— pid; 
// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等 
// 分配给该资源使⽤的各个资源 
// 进度调度信息(留待下⾯讲解) 
}

在操作系统中,通常使用 PCB 这样的数据结构来描述进程。

5.2.1 PCB的核心属性:

1. pid进程标识符:进程的id / 标识符。

2. 内存指针:该进程依赖的指令和数据都在哪里。

3. 文件描述符表:记录该进程打开了那些文件。

4. 状态,优先级,上下文,记账信息等。

5.2.2 操作系统管理进程:

• 先描述:通过 PCB 结构体来把进程的各种属性都表示出来。

• 再组织:通过链表数据结构把多个 PCB 串起来。

5.3 并行与并发的区别:

• 并行:在宏观时间上是同时执行,在微观时间上也是同时执行。

• 并发:在宏观时间上时同时执行,在微观时间上是串行执行(一条一条执行)。

由于操作系统内核内部管理好了,所以在编写应用程序的时候,无法干预,普通用户也感知不到,因此现在往往把 并行并发 统称为” 并发 “。把编写解决并发问题的程序称为”并发编程“。

六、总结

重点记住指令的操作流程进程的相关内容, 掌握好进程后,在下一章多线程我们会详细讲解进程和线程的区别和各自的优缺点,这也是面试的高频考点。

结语:

其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

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

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

相关文章

IndexedDB解密:打开Web应用的数据存储之门

欢迎来到我的博客,代码的世界里,每一行都是一个故事 IndexedDB解密:打开Web应用的数据存储之门 前言IndexedDB简介数据库操作数据检索与索引异步操作与事件处理 前言 在Web的世界里,数据就像是一群旅行者,它们来自各个…

PHPStudy Apache或者MySQL启动以后自动停止

问题 phpstudy小皮面板中的Apache或MySQL启动以后自动停止 正在启动——已启动——已停止 总结:最主要的原因:端口冲突 端口冲突了,已经有其他程序占用了80、3306端口。 也就是说你的电脑上已经有了一个Apache、MySQL并且正在运行。 解决方案…

「PolarDB-X入门到精通」第六讲:MySQL生态兼容

在上一阶段的课程中,已经和大家一起了解了PolarDB分布式数据库的产品架构,并且带领大家一起分别通过PXD、源码编译完成了PolarDB-X 的安装部署。在接下来的课程中,我们将继续带领大家一起学习PolarDB-X的产品特性。 在本期的课程中&#xff0…

vitis 2020.1 Up date XSA文件后,编译不通过

原来是可以编译通过的,升级XSA文件后,出现各种问题,pmufw没法编译通过 xpfw_config.h:14:10: fatal error: xparameters.h: No such file or directory Vitis 2020.2 - fatal error: xparameters.h: No such file or directory (xilinx.com)…

物流EDI:GEFCO EDI 需求分析

GEFCO专注于汽车物流领域近70年,是欧洲整车市场的物流供应商,也是欧洲十大领先的运输和物流集团之一。GEFCO的业务遍及六大洲,业务覆盖150个国家,在全球拥有庞大的员工队伍,在全球汽车行业的挑战中茁壮成长。为汽车制造…

AR人脸美妆SDK解决方案,让妆容更加贴合个人风格

美妆行业正迎来前所未有的变革,为满足企业对高效、精准、创新的美妆技术需求,美摄科技倾力打造了一款企业级AR人脸美妆SDK解决方案,为企业打开美妆领域的新世界大门。 革命性的人脸美妆技术 美摄科技的AR人脸美妆SDK解决方案,不…

Milvus向量数据库(一)Milvus存储byte[]类型源向量数据

两种路线&#xff1a; 第一种是把byte[]转换为List< float >&#xff0c;然后存储到Milvus的floatVector中第二种是把byte[]转换为ByteBuffer&#xff0c;然后存储到Milvus的BinaryVector中 步骤&#xff1a; 我先用的是第一种&#xff0c;但是在转换float过程中&…

Python-VBA函数之旅-repr函数

目录 一、repr函数的常见应用场景 二、repr函数使用注意事项 三、如何用好repr函数&#xff1f; 1、repr函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://blog.csdn.net/ygb_1024?spm1010.2135.…

mvc区域、Html.RenderAction、Html.RenderPartial、 模板、section

根据上图 Html.RenderPartial 与 Html.RenderAction 区别 RenderAction 会把对应的视图结果渲染 RenderPartial 会把html视图直接渲染 模板

十九、分布式数据库MyCat

目录 一、概述 1、MyCat是什么&#xff1f; 2、原理&#xff1a; 3、能干什么 1、读写分离 2、数据分片 3、多数据源整合 4、Mycat监控 4、安装部署 1、环境准备 2、安装 3、Mycat配置详解 1、server.xml user 标签 2、schema.xml schema标签&#xff1a; table标签&…

AI大模型探索之路-训练篇16:大语言模型预训练-微调技术之LoRA

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…

最新闲鱼小众蓝海虚拟资源,单号日入300+,三天必起店,矩阵放大月入1-2W

详情介绍 本项目售卖的虚拟资源非常小众&#xff0c;宅男的最爱&#xff0c;并且市场一片蓝海&#xff01;只需一步手机&#xff0c;随时随地操作项目&#xff0c;流量巨大&#xff0c;安装教程方法操作三天必起店&#xff0c;消息多到回不过来&#xff0c;一天轻松出个大几十单…

封装Springboot基础框架功能-03

在些模块中汇总了一些web开发常用的配置和功能。 模块源码结构 Restful API常用定义 QueryParam请求参数 Data public class QueryParam {private String key;private String value; }RestfulController实现 RestfulController.java&#xff0c;主要汇总一些常用的restful的…

启明智显分享|国产RISC-V@480MHz“邮票孔”工业级HMI核心板,高品质低成本,仅34.9元!

「Model系列」芯片是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片&#xff0c;主要应用于工业自动化、智能终端HMI、车载仪表盘、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点&#xff0c;支持工业宽…

响应式编程Spring Reactor探索

一&#xff0c;介绍 响应式编程&#xff08;Reactive Programming&#xff09;&#xff0c;简单来说是一种生产者只负责生成并发出数据/事件&#xff0c;消费者来监听并负责定义如何处理数据/事件的变化传递方式的编程思想。 响应式编程借鉴了Reactor设计模式&#xff0c;我们…

一文搞懂前端跨页面通信的那些方案们

前端开发逃避不开跨页面通信这项工作&#xff0c;跨页面通信&#xff0c;就好比A页面要和B页面说话&#xff0c;可能只是说一句话&#xff0c;不需要回话&#xff0c;可能是要给一些东西&#xff0c;希望得到回复&#xff0c;并频繁进行沟通&#xff0c;接下来我们说说这些跨页…

图搜索算法 - 拓扑排序

相关文章&#xff1a; 数据结构–图的概念 图搜索算法 - 深度优先搜索法&#xff08;DFS&#xff09; 图搜索算法 - 广度优先搜索法&#xff08;BFS&#xff09; 拓扑排序 概念 几乎所有的工程都可分为若干个称作活动的子工程&#xff0c;而这些子工程之间&#xff0c;通常受…

Figma 高效技巧:设计系统中的图标嵌套

Figma 高效技巧&#xff1a;设计系统中的图标嵌套 在设计中&#xff0c;图标起着不可或缺的作用。一套便捷易用的图标嵌套方法可以有效提高设计效率。 分享一下我在图标嵌套上走过的弯路和经验教训。我的图标嵌套可以分三个阶段&#xff1a; 第一阶段&#xff1a;建立图标库 一…

洛谷官方提单——【入门4】数组——python

洛谷官方提单——【入门4】数组 小鱼比可爱题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示代码 小鱼的数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定 代码 【深基5.例3】冰雹猜想题目描述输入格式输出格式样例 #1样例输入 …

24深圳杯ABCD成品论文47页+各小问代码+图表

A题多个火箭残骸的准确定位&#xff1a; A题已经更新完22页完整版论文&#xff0b;高清无水印照片&#xff0b;Python&#xff08;MATLAB&#xff09;代码简单麦麦https://www.jdmm.cc/file/2710544/ 问题1&#xff1a;单个残骸的音爆位置确定 建模思路&#xff1a; 1. 声波传…