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

目录

前言:

一、冯诺依曼体系

二、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.rhkb.cn/news/321964.html

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

相关文章

区块链 | NFT 水印:Review on Watermarking Techniques(二)

🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 半脆弱和可逆水印 鲁棒性好的水印技术通常会产生非常低透明度。正如前面所述,由于透明度在处理数字…

冯喜运:5.8黄金原油今日行情走势及最新操作建议

【黄金消息面分析】:金价周三(5月8日)亚市小幅走弱,现货黄金一度下跌0.3%至2306.94美元/盎司附近,市场参与者在等待美联储官员提供新的线索,以进一步明确潜在的降息时间表,同样在黄金日线图中&a…

vue3专栏项目 -- 项目介绍以及准备工作

这是vue3TS的项目,是一个类似知乎的网站,可以展示专栏和文章的详情,可以登录、注册用户,可以创建、删除、修改文章,可以上传图片等等。 这个项目全部采用Composition API 编写,并且使用了TypeScript&#…

使用Docker安装MySQL5.7.36

拉取镜像并查看 docker pull mysql:5.7.36拉取成功后查看(非必须) docker images创建并设置宿主机 mysql 配置文件目录和数据文件目录 创建相关文件夹将容器中的mysql数据保存到本地,这样即使容器被删除,数据也不会丢失。 mkd…

洛谷 P4148:简单题 ← KD-Tree模板题

【题目来源】https://www.luogu.com.cn/problem/P4148【题目描述】 你有一个 NN 的棋盘,每个格子内有一个整数,初始时的时候全部为 0,现在需要维护两种操作: ● 1 x y A → 1≤x,y≤N,A 是正整数。将格子 (x,y) 里的数…

Linux 第二十三章

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目: XX市机场停放了多架飞机,每架飞机都有自己的航班号CA3385, CZ6678, SC6508 等,航班号的前2个大写字母(或数字)代表航空公司的缩写,后面4个数字代表航班信息。 但是XX市机场只有一条起飞用跑道&am…

链舞算法谱---链表经典题剖析

前言:探究链表算法的奥秘,解锁编程新世界! 欢迎来到我的链表算法博客,这将是您深入了解链表算法,提升编程技能的绝佳机会。链表作为数据结构的重要成员之一,其动态性和灵活性在实现某些功能上发挥不可替代的…

Android广播机制简介

文章目录 Android广播机制简介广播的基本概念广播的类型广播的使用场景Android广播的优缺点优点缺点 使用Android广播的一些最佳实践: Android广播机制简介 Android广播是一种轻量级的消息传递机制,用于应用程序之间或系统与应用程序之间进行通信。它类似于订阅-发…

缓存淘汰算法中的LRU(Least Recently Used)算法

缓存淘汰算法中,LRU(Least Recently Used)算法是一种常见的算法。它的基本思想是根据最近的访问情况来决定哪些数据被保留在缓存中,哪些数据被淘汰出去。 具体来说,当需要从缓存中淘汰数据时,LRU算法会选择…

OpenAI 高管:一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕|TodayAI

OpenAI 的首席运营官 Brad Lightcap 表示,一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕。未来的 ChatGPT 版本将会有重大升级。他还讨论了 AI 取代人类工作和对电网的压力的可能性。 虽然我们不知道 OpenAI 何时会推出 GPT-5,但公司高管已…

【小黑送书—第二十期】>>K邻算法:在风险传导中的创新应用与实践价值(文末送书)

01 前言 在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考,不仅促进业界爱好者之间的交流,更期望从技术层面为企业在图数…

ADOP带你了解:长距离 PoE 交换机

您是否知道当今的企业需要的网络连接超出了传统交换机所能容纳的长度?这就是我们在长距离 PoE 交换机方面的专业化变得重要的地方。我们了解扩展网络覆盖范围的挑战,无论是在广阔的园区还是在多栋建筑之间。使用这些可靠的交换机,我们不仅可以…

二叉树的基础遍历2.0

1.0入口:二叉树的基础遍历-CSDN博客 在1.0中使用的是简单的结构体建树,本文注重用二维vector建树。 前序,中序和后序的分析1.0已给出,本文不做过多介绍,本文重点讲二叉树的层序遍历。 先奉上前中后序的代码&#xf…

算法提高之能量项链

算法提高之能量项链 核心思想&#xff1a;区间dp 通过观察发现可以将n个珠子最后的n1个数看作石子 合并石子 在l~r的范围内 找k作隔断 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N 110,M N<<…

VMware导入ova/ovf虚拟机文件

1.文件-打开-ova文件 2.为新虚拟机起名称 3.等待导入 4.导入完成&#xff0c;可以开始使用 参考链接&#xff1a;VMware导入ova/ovf虚拟机文件

中国家装水管十大品牌排行榜:联塑、日丰、金牛、美尔固、弗锐德等品牌上榜

水管作为家居装修中至关重要的一环&#xff0c;其质量直接关系到我们日常生活的安全和舒适。面对市场上琳琅满目的家装水管品牌&#xff0c;选择一款质量可靠、性能优越的产品成为了许多家庭装修的重要课题。为了助你选购时不踩坑&#xff0c;下面就为大家介绍一下中国家装水管…

vue2 Avoided redundant navigation to current location

再次点击同一个链接会报错 每次使用 push 方法时带上两个回调函数 this.$router.push({name: item.name}, ()>{}, ()>{}) //第二、第三个参数分别为成功和失败的回调函数重写 Vue-router 原型对象上的 push 函数不行 https://blog.csdn.net/weixin_43615570/article/d…

PPPoE实验新手必备:从0到1的网络配置指南!

5月18日&#xff0c;思科华为初级网工课程&#xff0c;等你免费试听 V&#xff1a;glab-mary 今天带大家学习一下华为PPPoE实验配置 01、实验拓扑 02、实验需求 1.完成PPP封装 2.完成PPP的PAP验证 3.完成PPP的CHAP验证 4.完成R1和R2之间的PPPOE 03、实验步骤 a . PPP封…

实测幻方新出的超强AI大模型,中文能力对比GPT4.0不落下风

目前从网上的消息来看&#xff0c;DeepSeek中文综合能力&#xff08;AlignBench&#xff09;开源模型中最强&#xff0c;与GPT-4-Turbo&#xff0c;文心4.0等闭源模型在评测中处于同一梯队。 话不多说&#xff0c;我们开测&#xff01; 1.首先我们来让他直接来一段逻辑推理【并…