【Java EE初阶】计算机是如何⼯作的

article/2025/7/15 4:48:41

计算机是如何⼯作的

  • 计算机发展史
  • 冯诺依曼体系(Von Neumann Architecture)
  • CPU
    • 指令(Instruction)
    • CPU 是如何执行指令的(重点)
  • 操作系统(Operating System)
    • 进程(process)
  • 进程 PCB 中的关键属性
    • 1.PID (进程 id)
    • 2.内存指针
    • 3. 文件描述符表
  • PCB 中支持进程调度的几个属性
    • 1.状态
    • 2.优先级
    • 3.上下文
    • 4. 记账信息
  • 小结

JavaEE==网站开发
学习⽬标
这阶段的学习中,我们会从软件⼯程师的⻆度解释计算机是如何⼯作的,我们的主要⽬标既不是期待⼤家可以造出⾃⼰的计算机,也不是介绍如何编程,⽽是希望让⼤家了解计算机的核⼼⼯作机制后,打破计算机的神秘感,并且有利于理解我们平时编程时的⼀些⾏为、动作的历史渊源。
⼤家可以配合 Crash Course Computer Science 视频做更详尽的学习和了解。

计算机是啥?
在这里插入图片描述

一个计算机(电脑)分成几个部分??
在这里插入图片描述

计算机发展史

计算的需求在⼈类的历史中是⼴泛存在的,发展⼤体经历了从⼀般计算⼯具到机械计算机到⽬前的电⼦计算机的发展历程。
在这里插入图片描述
⼈类对计算的需求,驱动我们不断的发明、改善计算机。⽬前这个时代是“电⼦计算机”的时代,发展的潮流是:更快速、更稳定、更微型。计算机的以后将如何发展,期待⼤家的努⼒。
推荐书籍: 《计算机简史》
Java发展史
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java 在后面又抓住了两波机会.

  1. 后端开发
    在这里插入图片描述
  2. 移动端开发
    在这里插入图片描述
    这两波机会,使 Java 始终在人们的视线中,始终是最流行的编程语言之一

美好的时光,短暂的.新的挑战又会出现

  1. 后端
    后端这里,随着网站规模变大,越来越复杂,PHP 这种网站开发的形式, 逐渐难以胜任了
    JSP 也同样收到影响~(Spring 也有了)
  2. 移动端
    2008 年,乔布斯发布苹果手机~标志着移动互联网时代开启了.手机功能机 =>智能机.
    在这里插入图片描述
    在这里插入图片描述
    这双重加持,就在 2010 之后, 连续好几年 Java 都霸榜 编程语言排行榜第一把交椅~
    (从这开始,谈到入行 程序猿,很多人都会推荐 java)
    Java 就是最流行的编程语言,没有之一了

Java 看起来稳坐第一,实际上也面临很多挑战~
2023 Java虽然还是最主流的编程语言(不是第一,Python 和 C 偶尔会反超)

  1. 后端
    在这里插入图片描述
    字节(Go+Python)
    还有B站 知乎 腾讯/腾讯云……都在使用Go
  2. 移动端
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
上面的东西面试都用得到 其实面试呢不仅仅是一问一答 而且要学会去和面试官聊天
聊什么呢 上面的这些东西都是可以和面试官聊的东西

冯诺依曼体系(Von Neumann Architecture)

现代的计算机, ⼤多遵守 冯诺依曼体系结构在这里插入图片描述
• CPU 中央处理器: 进⾏算术运算和逻辑判断.
• 存储器: 分为外存和内存, ⽤于存储数据(使⽤⼆进制⽅式存储)
• 输⼊设备: ⽤⼾给计算机发号施令的设备.
• 输出设备: 计算机个⽤⼾汇报结果的设备.
在这里插入图片描述
针对存储空间
硬盘 > 内存 >> CPU
针对数据访问速度
CPU >> 内存 > 硬盘

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

CPU

在这里插入图片描述
CPU是怎么构成的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于 CPU 重点关注两个参数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
咱们后面进行并发编程的时候,cpu 的核心数,就是一个非常重要的参考依据~
(软件很多时候都是跟着硬件走的,硬件有啥特性,软件,把这些特性充分的利用起来,扬长避短)

英特尔最近几年还搞了大小核 从 12 代 intel cpu 开始有大小核
大核一个顶俩,小核一个还是顶一个(功耗更低)
amd 的CPU都是大核.
哪种更好呢?
各有各的好。大小核就是更适合笔记本,能剩电. 但是要追求极致算力,就得是全大核的好
在这里插入图片描述

指令(Instruction)

指令就可以认为是 CPU 被设计的时候,给程序猿提供的一些"编程接口" => 近似理解成 cpu 提供给程序猿的 API
不同的 cpu, 提供哪些指令, 是不一样的.
在这里插入图片描述
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
在这里插入图片描述

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

所谓的指令,都是要先加载到内存中,然后才能被 cpu 读取,并执行
在这里插入图片描述
通过一个例子~ 搞一个简化版本的机器语言
简单模拟一下CPU执行指令的过程
在这里插入图片描述
在这里插入图片描述

虽然咱们可以不用理解 cpu 具体的构造,但是需要理解,cpu 是怎么执行代码的~
在这里插入图片描述
默认情况下,cpu 执行内存中的指令是"顺序执行"的~
当然,也可能会遇到一些 跳转 类的指令(代码中的 if, while, for, throw,函数调用……)
当前指令表中没这些,,默认还是按照顺序来执行~
在这里插入图片描述
当前的计算机, 在 cpu 执行指令的时候,要经历从内存读取数据这样的操作的!!!
这个事情其实放在今天,非常不科学了
在这里插入图片描述
cpu 就设计了很多的机制,来解决上述问题~
在这里插入图片描述
在这里插入图片描述
接下来在这里插入图片描述
然后接下来到地址4了 数据显示00000000,结束!
其实上述就是CPU是如何计算4+14的

具体步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在上面的过程中,就有以下几个结论:
在这里插入图片描述
在这里插入图片描述
上述内容,是计算机执行程序的基本过程 (基本盘)
对于理解计算机非常有意义的~~(面试一般不会直接考这个)
虽然,作为一个 java 程序猿,日常开发中不太会直接和 cpu 打交道,(JVM 都封装好了) 不太需要了解硬件的细节
但是实际上有些技术场景,还是和上述内容直接相关的.多少还是得知道一点~
在这里插入图片描述
在这里插入图片描述

操作系统(Operating System)

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
在这里插入图片描述
软件工程的本质,就是针对"复杂程度"的管理。 人脑,能够处理的复杂程度是有限的~
如何管理"复杂程度"核心就是"抽象封装。 同一时刻,只关注其中的一个部分~来降低思考的成本
这也是操作系统所做的事
在这里插入图片描述
在这里插入图片描述
操作系统,本身是一个很大的话题,在此处就不展开其他的.
操作系统里的知识,很多面试中不太涉及到,只需要掌握一些和工作密切相关的即可. 网络和数据结构是面试中更高频的话题
此处重点讨论操作系统中,非常核心的(和咱们 Java 程序猿息息相关的)
进程~

进程(process)

重要结论:进程是操作系统进行资源分配的基本单位(重点)
在这里插入图片描述
在这里插入图片描述
进程在系统中是如何管理的??
操作系统的进程管理
1.先描述
在这里插入图片描述
2.再组织
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

进程 PCB 中的关键属性

PCB 这个结构体,是一个非常庞大的结构体~ (有上百个属性)

1.PID (进程 id)

在这里插入图片描述

2.内存指针

在这里插入图片描述
在这里插入图片描述

3. 文件描述符表

在这里插入图片描述

PCB 中支持进程调度的几个属性

1.状态

在这里插入图片描述

2.优先级

在这里插入图片描述
在这里插入图片描述

3.上下文

在这里插入图片描述

4. 记账信息

PCB 会统计该进程在 CPU 过去一共执行了多久/多少条指令~ 针对每个进程,统计占据了多少 cpu 时间,可以用来识别出,某个进程是不是太久没有在 cpu 上执行了~
会根据这个统计结果来在下一个轮次进行调整,确保每个进程都不至于出现完全捞不着CPU 的情况的~ 如果发现某个进程,好久没有吃到 cpu 资源了,就会给这个进程倾斜一些资源

小结

在这里插入图片描述
在这里插入图片描述


http://www.hkcw.cn/article/gUSLliXLlQ.shtml

相关文章

【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素

使用正则表达式提取HTTP元素 1.正则表达式2.正则库的使用3.使用正则表达式提取HTTP请求行 1.正则表达式 正则表达式它其实是描述了一种字符串匹配的模式,它可以用来在一个字符串中检测一个特定格式的字串,以及可以将符合特定规则的字串进行替换或者提取…

力扣刷题Day 68:搜索插入位置(35)

1.题目描述 2.思路 方法1:回溯的二分查找。 方法2:看到了一个佬很简洁的写法,代码贴在下面了。 3.代码(Python3) 方法1: class Solution:def searchInsert(self, nums: List[int], target: int) ->…

23. Merge k Sorted Lists

目录 题目描述 方法一、k-1次两两合并 方法二、分治法合并 方法三、使用优先队列 题目描述 23. Merge k Sorted Lists 方法一、k-1次两两合并 选第一个链表作为结果链表,每次将后面未合并的链表合并到结果链表中,经过k-1次合并,即可得到…

docker-部署Nginx以及Tomcat

一、docker 部署Nginx 1、搜索镜像(nginx) [rootlocalhost /]# docker search nginx Error response from daemon: Get "https://index.docker.io/v1/search?qnginx&n25": dial tcp 192.133.77.133:443: connect: connection refused 简…

【dshow】VIDEOINFOHEADER2 头文件

VIDEOINFOHEADER2 是用于描述视频流格式的结构体&#xff0c;常用于 Windows 平台的 DirectShow 或 Media Foundation 编程中。 它的定义在以下头文件中&#xff1a; ✅ 所在头文件&#xff1a; #include <dvdmedia.h>&#x1f4cc; 前置说明&#xff1a; VIDEOINFOHEA…

CentOS8.3+Kubernetes1.32.5+Docker28.2.2高可用集群二进制部署

一、准备工作 1.1 主机列表 HostnameHost IPDocker IPRolek8s31.vm.com192.168.26.3110.26.31.1/24master&worker、etcd、dockerk8s32.vm.com192.168.26.3210.26.32.1/24master&worker、etcd、dockerk8s33.vm.com192.168.26.3310.26.33.1/24master&worker、etcd、…

Python----目标检测(Ultralytics安装和YOLO-V8快速上手)

一、Ultralytics安装 网址&#xff1a;主页 -Ultralytics YOLO 文档 Ultralytics提供了各种安装方法&#xff0c;包括pip、conda和Docker。通过 ultralytics pip包安装最新稳定版本的YOLOv8&#xff0c;或克隆Ultralytics GitHub 存储库以获取最新版本。可以使用Docker在隔离的…

Git实战--基于已有分支克隆进行项目开发的完整流程

Git克隆项目开发流程 ✅ 一、完整流程概述✅ 二、详细操作步骤Step 1&#xff1a;克隆仓库&#xff08;如果尚未克隆&#xff09;Step 2&#xff1a;获取远程分支信息并切换到 feature/ 获取所有远程分支Step 3&#xff1a;创建并切换到你的新分支Step 4&#xff1a;开始开发新…

FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复

新的月份已经到来&#xff0c;FreeBSD 14.3 候选发布版 1 现已开放测试&#xff0c;它带来了一些您可能会觉得有用的更新&#xff0c;特别是如果您对Docker容器感兴趣的话。RC1 版本中一个非常受欢迎的改进是&#xff0c;FreeBSD 项目已开始将官方开放容器计划 (OCI) 镜像发布到…

界面分析 - 上

上方&#xff1a;图标&#xff0c;搜索框&#xff0c;功能按钮 左侧&#xff1a;文本显示&#xff0c;自定义按钮&#xff0c;点击自定义按钮的时候&#xff0c;最底下播放条不变&#xff0c;右侧界面随着按钮的改变而改变 右侧&#xff1a;文本信息显示&#xff0c;图片按钮…

电路图识图基础知识-高、低压供配电系统电气系统的继电自动装置(十三)

电气系统的继电自动装置 在供电系统中为保证系统的可靠性&#xff0c;保证重要负荷的不间断供电&#xff0c;常采用自动重合闸装置和备用电源自动投入装置。 1 自动重合闸装置 供配电系统多年运行实践表明&#xff0c;架空线路发生的故障多属于暂时性故障&#xff0c;如雷击…

NVMe协议简介之AXI总线更新

更新AXI4总线知识 AXI4总线协议 AXI4总线协议是由ARM公司提出的一种片内总线协议 &#xff0c;旨在实现SOC中各模块之间的高效可靠的数据传输和管理。AXI4协议具有高性能、高吞吐量和低延迟等优点&#xff0c;在SOC设计中被广泛应用 。随着时间的推移&#xff0c;AXI4的影响不…

机器学习:支持向量机(SVM)原理解析及垃圾邮件过滤实战

一、什么是支持向量机&#xff08;SVM&#xff09; 1. 基本概念 1.1 二分类问题的本质 在机器学习中&#xff0c;分类问题是最常见的任务之一。最简单的情况就是二分类&#xff1a;比如一封邮件是“垃圾邮件”还是“正常邮件”&#xff1f;一个病人是“患病”还是“健康”&a…

数据库系统概论(十二)SQL 基于派生表的查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论&#xff08;十二&#xff09;SQL 基于派生表的查询 超详细讲解&#xff08;附带例题表格对比带你一步步掌握&#xff09; 前言一、什么是派生表&#xff1f;二、派生表的使用示例场景1&#xff1a;分组统计后过滤数据场景2&#xff1a;替代临时表查询 三、SELEC…

二、Sqoop 详细安装部署教程

作者&#xff1a;IvanCodes 日期&#xff1a;2025年6月2日 专栏&#xff1a;Sqoop教程 Apache Sqoop 是一个强大的工具&#xff0c;用于在 Hadoop (HDFS, Hive, HBase) 与关系型数据库 (如 MySQL, PostgreSQL, Oracle) 之间高效传输数据。本教程将详细指导您如何根据官方网站截…

【烧脑算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题

目录 求最长/最大 2730. 找到最长的半重复子字符串 2779. 数组的最大美丽值 1838. 最高频元素的频数 2516. 每种字符至少取 K 个 2831. 找出最长等值子数组 求最短/最小 1234. 替换子串得到平衡字符串 2875. 无限数组的最短子数组 76. 最小覆盖子串 632. 最小区间 …

一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——3. 服务器软件更新,以及常用软件安装

前言 前面&#xff0c;我们已经 安装好了 Ubuntu 服务器系统&#xff0c;并且 配置好了 ssh 免密登录服务器 &#xff0c;现在&#xff0c;我们要来进一步的设置服务器。 那么&#xff0c;本文&#xff0c;就是进行服务器的系统更新&#xff0c;以及常用软件的安装 调整 Ubu…

JSP、HTML和Tomcat

9x9上三角乘法表 乘法表的实现 <% page contentType"text/html;charsetUTF-8" language"java" %> <!DOCTYPE html> <html> <head><title>99 上三角乘法表</title><style>body {font-family: monospace;padding…

概率统计:AI大模型的数学支柱

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…

打造极致计算器:HTML+Tailwind+DaisyUI实战

一、计算器总体描述 创建一个在线计算器来实现基础数学运算功能&#xff0c;通过单一页面集成数字按钮、运算符按钮和显示结果区域&#xff0c;界面采用简洁直观的布局设计&#xff0c;按钮排列合理且提供即时运算反馈&#xff0c;确保计算逻辑准确和良好的按键响应体验&#x…