认识计算机-JavaEE初阶

news2024/11/28 4:40:09

文章目录

  • 一、计算机的发展史
  • 二、冯诺依曼体系(Von Neumann Architecture)
  • 三、CPU基本工作流程
    • 3.1 算术逻辑单元(ALU)
    • 3.2 寄存器(Register)和内存(RAM)
    • 3.3 控制单元(CU)
    • 3.4 CPU基本工作流程
  • 四、编程语言(Program Language)
    • 4.1 程序(Program)
    • 4.2 编程语言的发展
  • 五、操作系统(Operating System)
    • 5.1 操作系统的概念
    • 5.2 什么是进程 / 任务(Process / Task)
    • 5.3 CPU分配----进程调度(Process Scheduling)
    • 5.4 内存分配-----内存管理(Memory Manage)
    • 5.5 进程间的通信

前言:
随着时代发展,互联网的兴起,计算机已经普及到了家家户户,可以说每个人都对计算机并不陌生,但我们是否真正了解计算机呢?接下来简单介绍一下有关计算机的知识。

一、计算机的发展史

计算的需求在⼈类的历史中是⼴泛存在的,发展⼤体经历了从⼀般计算⼯具到机械计算机到⽬前的电⼦计算机的发展历程。
计算机的发展史可以追溯到古代使用计算工具时期。然而,现代计算机的起源可以追溯到20世纪初的一系列重要发明和创新。以下是一些关键的里程碑事件:

  1. 1837年,英国数学家查尔斯·巴贝奇设计了一台名为分析引擎(Analytical Engine)的机械计算器,被视为世界上第一台计算机的雏形。

  2. 1936年,数学家阿兰·图灵提出了通用图灵机的概念,奠定了计算机理论的基础,并对计算机科学做出了重大贡献。

  3. 1940年代中期,康奈尔大学的维尔纳·冯·布劳恩(Von Neumann)教授提出了存储程序原理,即将指令和数据存储在同一内存中,这成为现代计算机架构的基础。

  4. 1946年,世界上第一台电子管计算机ENIAC诞生于美国宾夕法尼亚大学,它是一个巨大的机器,主要用于军事计算。

  5. 1951年,第一台商业计算机UNIVAC I问世,成为世界上第一台投入商业应用的计算机。

  6. 1960年代,计算机开始出现集成电路技术的应用,这使得计算机变得更小、更快、更强大,并且成本更低。

  7. 1970年代,个人计算机(PC)开始出现,苹果公司和微软成为该领域的主要开拓者。

  8. 1980年代和1990年代,计算机网络和因特网的发展使得计算机得以连接并共享资源,促进了信息时代的到来。

在过去几十年里,计算机技术迅速发展,从大型机、小型机、个人计算机到移动设备和云计算等新兴领域的不断创新。
⼈类对计算的需求,驱动我们不断的发明、改善计算机。⽬前这个时代是“电⼦计算机”的时代,发展的潮流是:更快速、更稳定、更微型。

二、冯诺依曼体系(Von Neumann Architecture)

现代的计算机,⼤多遵守冯诺依曼体系结构:
在这里插入图片描述

  • CPU 中央处理器:进行算术运算和逻辑判断
  • 存储器:分为外存和内存,用于存储数据(用二进制方式存储)
  • 输入设备:用户给计算机发号施令的设备
  • 输出设备:计算机向用户汇报结果的设备

对于存储空间大小:硬盘 > 内存 >> CPU
对于数据访问速度:CPU > 内存 > 硬盘

认识计算机之父–冯诺依曼
冯·诺依曼(John von Neumann,1903年12⽉28⽇-1957年2⽉8⽇),美籍匈⽛利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之⼀。冯·诺依曼是布达佩斯⼤学数学博⼠,在现代计算机、博弈论、核武器和⽣化武器等领域内的科学全才之⼀,被后⼈称为“现代计算机之⽗”、“博弈论之⽗”。

三、CPU基本工作流程

CPU(中央处理器Center Process Unit)由运算器(ALU)、控制器(CU)、寄存器、时钟组成。
在这里插入图片描述

3.1 算术逻辑单元(ALU)

ALU 算术逻辑单元(Arithmetic&logical Unit):是中央处理器(CPU)的执行单元是所有中央处理器的核心组成部分,是计算机的数学大脑,由"And Gate"(与门) 和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行算术运算和逻辑运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。
在这里插入图片描述
在这里插入图片描述

3.2 寄存器(Register)和内存(RAM)

只有ALU还远远不够,⽆法为ALU提供存储的部件,利⽤⻔电路简单说明存储的制作,这些存储都要求必须保持通电状态(容易丢失)。
在这里插入图片描述
可以利⽤⻔锁,构建需要的寄存器和内存
在这里插入图片描述
寄存器是用来暂时保存运算和控制过程中的原始数据,中间结果,最终结果以及控制、状态信息的
内存的构建要⽐这个复杂⼀点,但基本原理⼀致。如此构建的内存被称为RAM(Random Access Memory),可以⽀持O(1)时间复杂度访问任意位置的数据,这也就是我们数组下标访问操作是O(1)的硬件⽀持
在这里插入图片描述

3.3 控制单元(CU)

有ALU、存储了,但这还是不⾜以让我们的计算机⼯作起来,我们需要有⼀个部件来指挥ALU进⾏何种的运算,⽽这个部件就是控制单元(CU)。
在这里插入图片描述

CU 控制单元(Control Unit):负责程序的流程管理。控制单元是整个 CPU 的指挥控制中心,由指令寄存器IR(Instruction Register)、 程序计数器PC(Program Counter)和其他通用的存储器(保存计算的中间结果)等组成,对协调整个电脑有序工作极为重要
在这里插入图片描述

指令(Instrction)指导CPU进行工作的命令,主要由操作码和被操作数组成,是CPU能够执行任务的最小单元。操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等,指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。

3.4 CPU基本工作流程

下面是指令运⾏的⼀个周期的流程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执⾏周期经过的阶段:
在这里插入图片描述
电⼦计算机中的CPU靠背后⼀个时钟来进⾏周期驱动。
在这里插入图片描述
小结:

  1. CPU中的PC寄存器,是决定执行那条指令的关键
  2. 指令由 操作码(动作) + 操作数(操作对象)组成
  3. CPU 眼里只有指令

四、编程语言(Program Language)

4.1 程序(Program)

程序:⼀组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为⼀组⽂件。
程序 = 指令 + 指令要处理的数据
在这里插入图片描述

4.2 编程语言的发展

为了提升编程效率,最早创造了汇编语⾔的概念。其实汇编语⾔和机器语⾔(也就是指令)直接是完全⼀⼀对应的,只是相对于0、1这些数字,发明了⼀些帮助⼈类记忆和理解的符号将其对应起来,也就是我们上⾯看到的类似 LOAD_A、LOAD_B 等。程序员完成编程之后,需要使⽤汇编器(assembler)将汇编语⾔翻译成机器语⾔。虽然汇编降低了程序员的记忆成本,但要求程序还是必须掌握计算机硬件的所有知识,⽽且随着计算机⼚商越来越多,⼀次编写的程序往往只适⽤于⼀类计算机。这个是远远不够的,所以更为⾼级的语⾔诞⽣了,⾼级语⾔屏蔽了硬件细节,让程序员可以站在更⾼的层⾯上思考⾃⼰的业务。这⾥以 C 语⾔为例,程序员完成程序的编写之后,需要使⽤编译器(compiler)和连接器(linker)将程序翻译成
汇编语⾔,再借助汇编器变成最终的机器语⾔。借助封装的思想,我们学习编程变得越来越容易。不过有利则有弊,⾼度的抽象,导致很多的程序员把计算机视为⼀个⿊箱,完全⽆法理解⾃⼰的程序是如何⼯作起来的,希望我们⼤家不要做这种程序员。
我们使⽤的 Java 语⾔相对于 C 语⾔更⾼级⼀点,但基本抽象原理上没有太⼤的差异。
在这里插入图片描述
注意:⾼级语⾔的⼀条语句(Statement)往往对应很多条指令(Instruction)才能完成

五、操作系统(Operating System)

5.1 操作系统的概念

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
在这里插入图片描述
操作系统由两个基本功能:

  1. 对下管理所有的硬件设备
  2. 对上,要给软件提供稳定的运行环境

5.2 什么是进程 / 任务(Process / Task)

进程是操作系统对⼀个正在运⾏的程序的⼀种抽象,换⾔之,可以把进程看做程序的⼀次运⾏过程;同时,在操作系统内部,进程⼜是操作系统进⾏资源分配的基本单位
在这里插入图片描述
在这里插入图片描述
进程控制块(PCB Process Control Block)抽象:计算机内部要管理任何现实事物,都需要将其抽象成⼀组有关联的、互为⼀体的数据。在 Java 语⾔中,我们可以通过类/对象来描述这⼀特征

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

每⼀个 PCB 对象,就代表着⼀个实实在在运⾏着的程序,也就是进程。操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,⽅便管理时进⾏增删查改的操作。
在这里插入图片描述

5.3 CPU分配----进程调度(Process Scheduling)

单CPU单核的计算机,操作系统对CPU资源的分配,采⽤的是时间模式----不同的进程在不同的时间段去使⽤CPU资源。
在这里插入图片描述

在这里插入图片描述

5.4 内存分配-----内存管理(Memory Manage)

操作系统对内存资源的分配,采⽤的是空间模式-----不同进程使⽤内存中的不同区域,互相之间不会⼲扰,进程之间就具有了隔离性。
在这里插入图片描述

5.5 进程间的通信

通过上述方式,将进程之间隔离开,但现代的应⽤,要完成⼀个复杂的业务需求,往往⽆法通过⼀个进程独⽴完成,总是需要进程之间相互配合地达到应⽤的⽬的,此时,就需要进程之间进行通信。
通信实现方式有很多:

  1. 管道
  2. 共享内存
  3. ⽂件
  4. ⽹络
  5. 信号量
  6. 信号

但都有共同的核心思想:都要借助一个公共空间,完成数据的交互
其中,⽹络是⼀种相对特殊的IPC机制,它除了⽀持同主机两个进程间通信,还⽀持同⼀⽹络内部⾮同⼀主机上的进程间进⾏通信。

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

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

相关文章

Jupyter Notebook 闪退

造成这个的原因非常非常多! 比如什么环境变量没有配置,或者说jupyter和python版本不兼容,库不兼容等等。 但是我呢,以上都不是。 我是因为手残,删掉了不该删的文件: 这个操作就是打开"Anaconda Prom…

【miniconda+jupyter环境安装】

minicondajupyter环境安装 下载miniconda创建第二个环境修改jupyternotebook的默认路径先写到这儿!拜拜~ 下载miniconda 网址:https://docs.conda.io/en/latest/miniconda.html 运行下载安装,安装文件夹要英文名 打开终端:winR&…

软件测试面试会问哪些问题?

软件测试面试,一般会被问到下面这九类问题。 1、基础问题 2、Linux命令 3、数据库 4、功能测试 5、Python基础 6、接口测试 7、自动化测试 8、性能测试 9、人事问题 接下来,以上9类问题,我都会分别结合2个案例,附上答案&#xff0…

【腾讯云 HAI域探秘】借助HAI,轻松部署StableDiffusion环境拿捏AI作画-体验实验赢大奖

爆火的Ai生图你体验到了吗? 没有绘画能力、摄影能力也能随心所欲的创作出自己的作品! 但是很多人因为高昂的硬件和繁琐的安装对它望而却步。 腾讯云的高性能应用服务 HAI (Hyper Application Inventor)是一款专门为AI和科学计算…

产品化的GPT,能否为“百模大战”照亮未来?

这两天,AI圈都处在一种莫名的震撼感当中。 北京时间 11月7日,OpenAI 举办了首次DevDay开发者日活动。活动现场发布了非常多内容,其中有一些按部就班的,比如技术上更新了最新版本的GPT-4 Turbo。也有一些让从业者目瞪口呆&#xff…

时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于BP-Adaboost的BP神经网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于BP-Adaboost的BP神经网络结合AdaB…

苹果CMS首涂第30套可装修DIY主题模板免授权版 苹果v10首涂模板

这是一款可以装修的主题,类似淘宝店装修一样,可以针对首页、栏目页、详情页、播放页进行自定义装修,内置10个模块自由选择、添加、修改、删除、排序操作,后续升级还会增加更多实用和个性模块供选择,主题内包含的导航、…

CH11_重构API

将查询函数和修改函数分离(Separate Query from Modifier) function getTotalOutstandingAndSendBill() {const result customer.invoices.reduce((total, each) > each.amount total, 0);sendBill();return result; }function totalOutstanding() …

微信公众号H5在手机上分享功能不生效

病情描述: 在代码里配置了分享功能updateAppMessageShareData和updateTimelineShareData,在开发者工具里看log都是成功的,通过手机打开H5链接后,分享的功能不生效,分享出去的是一个链接地址。 在开发者工具里看都是成…

SQL Server SSIS ETL job执行相关操作

创建SSIS项目 Excel导入SQL Server 构建Excel源 配置Excel源信息 配置SQL Server目标 双击“ADO NET目标” job执行 新建job 右键“SQL Server代理”的“作业”,点击“新建作业”,弹出“新建作业”的选项页 首先是“常规”选项页,…

CodeWhisperer--轻松使用一个超级强大的工具!

CodeWhisperer 简介 CodeWhisperer 是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。 CodeWhisperer 有以下几个主要用途: 解决编程问题,提供代码建议,学习编程知识等等,并且 CodeWhisperer 会…

在Node.js中,什么是Promise?如何使用Promise处理异步操作?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【华为】防火墙核心知识梳理

一、概述 在通信领域,防火墙是一种安全设备。它用于保护一个网络区域免受来自另一个网络区域的攻击和入侵,通常被应用于网络边界,例如企业互联网出口、企业内部业务边界、数据中心边界等。 防火墙根据设备形态分为,框式防火墙、盒…

COGI控制删除按钮增强

1、业务需求 COGI在SAP中主要用于解决生产订单异常的问题。通常发生在生产订单执行过程中,当出现了特定的异常情况时,需要进行处理。这些异常情况可能包括物料缺失、数量不匹配、质量问题等等。 当这些异常情况发生时,系统会生成异常记录并…

【计算机网络基础实验】实验二 有线IP互通网络实践

任务一 IP路由协议实现企业路由器通信 目录如下: 任务一 IP路由协议实现企业路由器通信2.1.1 任务描述2.1.2 任务目的2.1.3 任务实施实验需求实验步骤步骤1:更改每台设备的名称步骤2: 给R1接口配置相应IP地址步骤3: 给R2接口配置相…

康耐视VisionPro 9.0 R2破解安装教程

文章目录 说明下载安装VisionPro破解匹配的Visual Studion将VisionPro的控件添加到VS工具箱中 说明 康耐视VisionPro 9.0 R2 破解版仅用于个人学习使用,如企业中需要请自行购买正版哦。 下载 百度网盘链接:https://pan.baidu.com/s/1rreSzpe8r2Gz8qSp…

TSINGSEE青犀AI智能分析网关V4人员离岗识别算法的说明及应用

人员离岗AI识别算法,是基于计算机视觉深度学习神经网络技术,通过配合现场部署的监控摄像头,自动识别人员是否在工位或作业区域内,结合离岗时间的配置,可以触发人员离岗告警。该算法目前可应用在监控室、、值班室、中控…

sqlserver查询表结构

SELECT 表名case when a.colorder1 then d.name else end, 表说明case when a.colorder1 then isnull(f.value,) else end, 字段序号a.colorder, 字段名a.name, 标识case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end, 主键case when exists(SELECT 1…

2023年初中古诗文大会真题分析和备考建议

2023年上海市中学生古诗文大会(初中组)正在如火如荼地进行中,截止时间是本周日(11月12日),还没有参加的孩子请记得准时参加。 这几天有孩子在咨询今年的初中古诗文大会难度怎么样?都有哪些题型&…

会打字就能编程,自动写代码的ai助手 | 通义灵码

通义灵码介绍 通义灵码是一款由阿里云出品的智能编码辅助工具。 它基于通义大模型,可以提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力。 它支持Java、Python、Go、C/C、JavaScript、Type…