认识计算机-JavaEE初阶
文章目录
- 一、计算机的发展史
- 二、冯诺依曼体系(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世纪初的一系列重要发明和创新。以下是一些关键的里程碑事件:
-
1837年,英国数学家查尔斯·巴贝奇设计了一台名为分析引擎(Analytical Engine)的机械计算器,被视为世界上第一台计算机的雏形。
-
1936年,数学家阿兰·图灵提出了通用图灵机的概念,奠定了计算机理论的基础,并对计算机科学做出了重大贡献。
-
1940年代中期,康奈尔大学的维尔纳·冯·布劳恩(Von Neumann)教授提出了存储程序原理,即将指令和数据存储在同一内存中,这成为现代计算机架构的基础。
-
1946年,世界上第一台电子管计算机ENIAC诞生于美国宾夕法尼亚大学,它是一个巨大的机器,主要用于军事计算。
-
1951年,第一台商业计算机UNIVAC I问世,成为世界上第一台投入商业应用的计算机。
-
1960年代,计算机开始出现集成电路技术的应用,这使得计算机变得更小、更快、更强大,并且成本更低。
-
1970年代,个人计算机(PC)开始出现,苹果公司和微软成为该领域的主要开拓者。
-
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靠背后⼀个时钟来进⾏周期驱动。
小结:
- CPU中的PC寄存器,是决定执行那条指令的关键
- 指令由 操作码(动作) + 操作数(操作对象)组成
- 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系列、鸿蒙等。
操作系统由两个基本功能:
- 对下管理所有的硬件设备
- 对上,要给软件提供稳定的运行环境
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 进程间的通信
通过上述方式,将进程之间隔离开,但现代的应⽤,要完成⼀个复杂的业务需求,往往⽆法通过⼀个进程独⽴完成,总是需要进程之间相互配合地达到应⽤的⽬的,此时,就需要进程之间进行通信。
通信实现方式有很多:
- 管道
- 共享内存
- ⽂件
- ⽹络
- 信号量
- 信号
但都有共同的核心思想:都要借助一个公共空间,完成数据的交互。
其中,⽹络是⼀种相对特殊的IPC机制,它除了⽀持同主机两个进程间通信,还⽀持同⼀⽹络内部⾮同⼀主机上的进程间进⾏通信。
相关文章:

认识计算机-JavaEE初阶
文章目录 一、计算机的发展史二、冯诺依曼体系(Von Neumann Architecture)三、CPU基本工作流程3.1 算术逻辑单元(ALU)3.2 寄存器(Register)和内存(RAM)3.3 控制单元(CU)3…...
you-get - 使用代码下载视频
文章目录 关于 you-get代码调用报错处理 源码简单分析 关于 you-get github : https://github.com/soimort/you-get you-get 是一个有名的开源视频下载工具包,这里不赘述。 代码调用 you-get 提供了命令行的方式下载视频,这里介绍使用 Python 调用源代…...

【Proteus仿真】【51单片机】汽车尾灯控制设计
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用按键、LED模块等。 主要功能: 系统运行后,系统运行后,系统开始运行,K1键控制左转向灯;…...

浙大恩特客户资源管理系统任意文件上传漏洞复现
0x01 产品简介 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源,提升销售和市场营销的效果。 0x02 漏洞概述 浙大恩特客户资源管理系统中fileupload.jsp接口处存在文件上传漏洞,未经身份认…...

史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)
ASFP Study 史上第一款AOSP开发的IDE (支持Java/Kotlin/C/Jni/Native/Shell/Python) 类似于Android Studio,可用于开发Android系统源码。 Android studio for platform,简称asfp(爱上富婆)。 背景&下载&使用 背景 由…...

GCC + Vscode 搭建 nRF52xxx 开发环境
在 Windows 下使用 GCC Vscode 搭建 nRF52xxx 开发环境 ...... by 矜辰所致前言 最近有遇到项目需求,需要使用到 Nordic 的 nRF52xxx 芯片,还记得当初刚开始写博文的时候的写的 nRF52832 学习笔记,现在看当时笔记毫无逻辑可言,…...

Linux应用开发基础知识——Framebuffer 应用编程(四)
前言: 在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意 思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着 一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设…...

智安网络|数据库入门秘籍:通俗易懂,轻松掌握与实践
在现代信息化时代,数据库已成为我们日常生活和工作中不可或缺的一部分。然而,对于非专业人士来说,数据库这个概念可能很抽象,难以理解。 一、什么是数据库? 简单来说,数据库是一个存储和管理数据的系统。它…...
EXCEL中安装多个vsto插件,插件之间互相影响功能,怎么解决
在 Excel 中安装多个 VSTO 插件,并且这些插件之间存在互相影响的情况下,可以采取以下措施来解决问题: 1. **隔离插件功能:** - 确保每个 VSTO 插件都有清晰的功能和责任范围,避免不同插件之间的功能重叠。这可以通…...
Java枚举
枚举类 概念 Java中的枚举(Enumeration)是一种特殊的数据类型,它是一种包含固定常量的类型。枚举是一种更加类型安全和更易维护的方式来定义常量,它包含了一组命名的值。 enum Weekday {MONDAY, TUESDAY, WEDNESDAY, THURSDAY,…...

基于MATLAB的关节型六轴机械臂轨迹规划仿真
笛卡尔空间下的轨迹规划,分为直线轨迹规划和圆弧轨迹规划,本文为笛卡尔空间下圆弧插值法的matlab仿真分析 目录 1 实验目的 2 实验内容 2.1标准D-H参数法 2.2实验中使用的Matlab函数 3 全部代码 4 仿真结果 1 实验目的 基于机器人学理论知识&…...

双11狂欢最后一天
大家好,本年度双11即将到来,为了答谢大家多年来的支持及更广泛的推广VBA的应用,“VBA语言専功”在此期间推出巨大优惠:此期间打包购买VBA技术资料实行半价优惠。 1:面向对象:学员及非学员 2:打…...

YOLOX: Exceeding YOLO Series in 2021(2021.8)
文章目录 AbstractIntroduction介绍前人的工作提出问题解决 YOLOXYOLOX-DarkNet53Implementation detailsYOLOv3 baselineDecoupled headStrong data augmentationAnchor-freeMulti positivesSimOTAEnd-to-end YOLOOther BackbonesModified CSPNet in YOLOv5Tiny and Nano dete…...

HBuilderX 运行Android App项目至雷电模拟器
一、下载安装HBuilderX HBuildeX官网 安装最新的正式版,或者点击历史版本查看更多版本;【ps:Alpha版本为开发版,功能更多,但是也不稳定,属于测试版本】 直接将压缩包解压,运行HBuildeX即可。 二…...

Java进阶(JVM调优)——阿里云的Arthas的使用 安装和使用 死锁查找案例,重新加载案例,慢调用分析
前言 JVM作为Java进阶的知识,是需要Java程序员不断深度和理解的。 本篇博客介绍JVM调优的工具阿里云的Arthas的使用,安装和使用,命令的使用案例;死锁查询的案例;重新加载一个类信息的案例;调用慢的分析案…...

续:将基于Nasm汇编的打字小游戏,移植到DOSBox
续:将基于Nasm汇编的打字小游戏,移植到DOSBox 文章目录 续:将基于Nasm汇编的打字小游戏,移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇:【编程实践】黑框框里的打字小游戏,但…...

外部访问K8S集群内部的kafka集群服务
不许转载 kafka 部署 把 kafka 部署到 k8s 后,我们肯定是通过 service 从 k8s 外部访问 kafaka。这里的 service 要么是 NodePort, 要么是 LoadBalancer 类型。我们使用的方式是 LoadBalancer。 我们先看下面这张图,这是 kafka 在集群中的网…...
AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘解决办法
在TensorFlow2环境下执行1.X版本的代码时报错: AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘ 当然第一时间想到的是利用 如下代码 来解决问题(大部分情况都是这样), tf.compat.v1但是又出现以下报错 Att…...
物奇平台耳机恢复出厂设置功能实现
是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙音频,DSP音频项目核心开发资料, 物奇平台耳机恢复出厂设置功能实现 一 需求 1 耳机接收到充电盒长按12S指令后触发, 2 接收到…...

RFID携手制造业升级,为锂电池生产带来前所未有的可靠性
应用背景 随着科技的发展和全球化的推进,产品的生产过程越来越复杂,且对品质的要求也越来越高。在锂电池生产领域,由于其高能量密度、长寿命和环保特性,已被广泛应用于电动汽车、储能系统等领域。然而,锂电池的安全性和…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...