当前位置: 首页 > news >正文

JavaEE入门--计算机是怎么工作的

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、计算机的组成
    • 冯诺依曼结构体系
    • 1.现代计算机的组成结构
      • 1.1CPU
    • #1.cpu和核心数
    • #1.3存储器
  • 二、编程语言
  • 三、指令
  • 操作系统
    • 进程
    • 进程调度
  • 总结


前言

在大家的陪伴下,我们成功经历了数据库这一冒险章节,我们就要开启新的冒险篇章。
本节就是新篇章的开端—计算机是怎么工作的!

一、计算机的组成

冯诺依曼结构体系

在这里插入图片描述
我们在上计算机组成原理这门课的时候,对这幅图很熟悉吧!我就不过多赘述了!

1.现代计算机的组成结构

1.1CPU

CPU是电脑上最核心的部分(中央处理器)!
计算机进行的各种算术运算,逻辑判断,都是CPU负责的(代码里写的内容都是CPU运行的!)
虽然CPU表面上小,内部结构非常非常复杂,复杂到“量子力学”尺度,CPU是人类科技的巅峰之作是和氢弹齐名。

#1.cpu和核心数

最开始的CPU(2008之前)
之前的CPU都是单个核心的。
当时研发新的CPU,就是努力提高cpu的频率。
提高到一定程度,就提高不上去了,cpu内部构造非常精密,里面是数不清的小的电路元件 构成的计算单元,计算单元越多,算的越快,一个cpu面积是固定的,要想让计算单元多,单个计算单元就得小。
不可能无限小,超过一定程度就超出经典物理了,步入到量子力学的范畴。
所以单个核心满了,干脆引入两个核心来工作。(多核心技术)
就类似于公司,招聘更多的员工完成工作。
物理核心层面:真实干活的人。
逻辑核心,实际上这些人能同时干几个活。

#1.3存储器

1.内存: 存储数据的最要模块!
2.硬盘:存储数据的主要模块!
二者统称为存储器。
问题:数据库MySQL存储数据是在内存上还是硬盘上呢?
答案:在硬盘上进行存储,这是数据库要满足持久性,而硬盘存储数据是持久的,断电也不会丢失!
内存与硬盘的区别:

1.内存读写速度快,硬盘读写速度慢,相差几千倍,机械硬盘读写速度一般是200MB/s左右;内存速度就快了,在这个的基础上几千倍水平。
2内存存储空间比较小,硬盘存储空间比较大。
3.内存的成本比硬盘更高(贵)。
4.内存存储数据不是持久的,断电就无了,而硬盘存储的数据是持久的,断电也不会丢失!!

科普两个小知识:
1.bit 1个二进制位
Byte 8 个二进制位
KB 1024个Byte
MB 1024个KB
GB 1024个MB
TB 1024个GB
PB 1024个TB
2.在生活中内存这个词存在着歧义的:
比如我的电脑是32G内存
我的手机是128G内存 :无良商家忽悠小白,以讹传讹了,手机的128G指的是硬盘;商家发明新词:运存 12G才是真正的内存。
1.4显卡(GPU)
显卡(GPU)和CPU是很相似的,都能进行算术运算和逻辑判断!
举个栗子:
CPU是一个大学生,能算1+1也能算微积分,“通用计算芯片”
GPU只是小学生,只能算1+1,算不了微积分,但是一组小学生,
虽然算不了微积分,如果是计算1+1,GPU速度比CPU快得多。“专用计算芯片”!
GPU就是用来处理计算虽然简单,但是运算非常大的场景:
1.图形渲染(大型游戏,3D建模)
黑神话,矩阵运算……
2.挖矿(加密货币)
比特币,以太坊,狗狗币……
挖矿收益,就是赚佣金,比特币这种区块链网络,能够运转需要一些系统辅助……
区块链系统给你出题
让我们算一系列1+1,哪个电脑算的快,哪个电脑就能够抢到这个任务,赚到佣金
1BTC = 60000+$
高点70000w,一两个月之前
3.AI人工智能
模型训练,就是在算大量的1+1,使用显卡就非常合适。

还有电源、散热器、机箱、键盘鼠标、显示器、1.2主板(就是一个大插座)。等就是组成现代的计算机。

二、编程语言

1.机器语言(以二进制 的方式,表示的一种编程语言)
2.汇编语言
3.高级语言(C,Java)

三、指令

⾸先,我们先介绍下我们需要到的指令(instruction)。
所谓指令,即指导 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成。
其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是
寄存器编号等。
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
cpu上面都支持那些指令,每个指令怎么表示,有哪些意义……
都是cpu在设计出来的时候就确定了,可以通过表格,表示出cpu支持哪些指令。
在这里插入图片描述
寄存器,也是存储数据的模块,是长在cpu身上的,cpu存储数据,就是通过寄存器,
cpu的寄存器,访问速度比内存还要快很多,存储空间也比内存小很多,成本也高很多。
断电之后数据也会丢失。
cache是介于寄存器和内存之间存储设施(也是集成在cpu上)
cpu的寄存器主要是在cpu进行执行指令进行各种运算的时候存储临时数据,起到一定的辅助效果。

操作系统

操作系统是计算机中,最重要的“软件”。
如Windows11/10,Linux……
Linux在程序员圈子中是非常重要的,后端开发,服务器程序使用的系统一般是Linux,嵌入式设备Linux也是主力系统!
Windows和Linux最大的区别:
1.这两个系统提供的API(系统函数)截然不同!
比如 我在Windows上写一个程序能运行,放到Linux上就不运行不了。
2.比如一些书写的格式不同,Windows Sleep(ms) = > #include <Windows.h>
Linux sleep(s) => #include <unistd.h>
使用Windows一般都是使用图形化界面操作,
使用Linux一般都是命令行操作(命令)(Linux也有图形化界面开发中一般不会使用)
图形化界面,降低门槛,命令行界面,才是生产力工具。

进程

概括为一句话:进程是一个运行起来的程序!!
现代的计算机同时炮哥百十来个进程,很常见,操作系统就需要能够很好的管理上述的进程(多了就需要谈管理),毕竟多了,就容易乱
为了避免乱套,就需要管理。
站在操作系的视角
1先描述出一个进程啥样的,
使用结构体,描述出进程的核心属性,
进程控制块(PCB) 非常大的结构体,有很多很多的属性

举个栗子:
一个班级,人也不少,学校需要管理好每个班级的同学情况,

  • 能够知道每个同学的各种信息,如学号、姓名……定义一个结构体/对象
    通过对象的各种属性,保存上述信息。
  • .把这些同学对应的对象,组织起来,通过数据结构的方式组织,
    数组、链表、哈希、数据库的表……=>集中存储,便于以后增删改查!
    2.再把多个进程组织起来
    比如,Linux这样的操作系统,使用链表(不一定是一个链表)这样的形式,吧多个PCB串到一起的。
    1)创建一个新的进程
    创建一个PCB,初始化PCB中的各个属性把PCB加到链表上
    2)销毁一个进程
    把这个进程的PCB在链表上找到,并且从链表上删除掉
    3)查看进程列表
    遍历链表,取出链表上的每个元素,把里面的一些关键信息,显示到界面上。
    PCB中的一些关键要点:
    1.pid(进程id),进程的身份标识符

2.内存指针(一组指针)
进程就需要知道要执行的指令在哪里,指令依赖的数据又在哪里。

在这里插入图片描述
双击exe,运行一个程序,创建一个进程,

操作系统加载的过程:
操作系统会把exe中的指令和数据,读取出来加载到内存中,后续进程在运行过程中,就会从指令内存区域里一条一条的取
指令并进行执行。
QQ.exe是可执行文件(保存在硬盘上的一段数据)
1)QQ这个程序运行过程中,都要执行哪些指令(二进制的)
exe是程序员写代码生成的
程序员写的代码最终就会编译成二进制指令包含在上述的exe中了
2)这些指令运行过程中,依赖的数据

3.文件描述符表
进程运行过程中,很多时候,需要和硬盘这个硬件设备,也要进行交互,
硬盘上的数据,就是以文件的形式来组织的。
进程在读写文件的时候,就需要先“打开文件”(fopen)
每次打开一个文件,就会把这个文件的信息,保存到文件描述符表中,
表里的每个项,就对应着一个打开了的文件。
操作系统中,会把很多资源,都抽象成文件来表示,不一定是硬盘上的资源;
还有操作系统中,会把很多资源,都抽象成文件来表示,不一定是硬盘上的资源,
网卡、操作系统管理网卡的时候就是当做"文件"一样来管理。
进程的运行,也会依赖到硬盘,网卡等相关的资源设备。
进程运行,执行指令,都是靠cpu的,进程也需要消耗cpu资源。
进程是操作系统中,资源分配的基本单位!!

进程调度

PCB中的进一步的属性
4.进程状态
5.进程优先级
6.进程的上下文
7.进程的几张信息统称为进程调度
进程调度是操作系统进行进程管理过程中,需要完成的重要工作。
我的电脑上,进程有百八十个,但是电脑cpu的核心数12个,一个cpu逻辑核心,同一时刻,只能执行一个进程的指令,
12个干活的牛马,如何同时进,行一百多个任务的工作?
在早期的计算机,操作系统“单任务”操作系统,同一时刻只能运行一个进程,要想运行下一个进程就得结束上一个进程。
多任务操作系统(在有多核处理器之前,多任务系统就已经有了)即使cpu只有一个核心,也能同时运行多个进程。
分时复用:
把一个单位时间,分成很多份。第一份,运行进程1的指令,第二份,运行进程2的指令……
cpu运行速度足够快,上述的切换过程,也会非常快,快到超出人类的反应时间。
让人看起立好像这些进程在"同时执行"一样.但是如果我们运行的任务实在是太多了,人也是有可能感知到这个卡顿的过程。

把一个CPU核心上,按照分时复用,执行多个进程这样的方式,称为**并行执行!!**雀食就是"同时执行".现代cpu在运行这些进程的时候,并发和并行是同时存在的。
因为程序员在写代码的时候,无法区分当前这些进程是并行执行还是并发执行,所以也会把并行和并发统称为“并发”。
现在我们开始讲解进程调度中四个属性
4.进程状态:
进程有很多状态,其中两个最典型的:

1)就绪状态->随叫随到,进程就可以随时到cpu上进行执行。在操作系统中,一般不区分就绪和执行都是就绪。
2)阻塞状态->进程当前不适合到cpu上执行。
举个例子:我们在餐厅点餐想象一下你在一家餐厅吃饭,餐厅里有一位服务员(相当于CPU),多名顾客(相当于进程)。
就绪状态 :当你已经拿到菜单,考虑好了要点什么菜,并且向服务员举手示意要点餐。这时你就处于"就绪状态"——你已经准备好点餐了,只是在等待服务员过来为你服务。
在计算机中,就绪状态的进程就是已经准备好了所有运行条件,只等待CPU分配时间片来执行它。
阻塞状态 :如果你点了一道菜,但这道菜需要厨师现做,需要等待10分钟。这时候你虽然已经点完餐,但需要等待菜做好才能继续用餐过程。这时你就处于"阻塞状态"——你因为等待某个外部事件(菜做好)而暂停了用餐进程。

**5.进程优先级:**这么多进程,他们能够去cpu上运行的机会是均等的吗嘛?
有些进程,就是要优先级更高一些,吃到更多的cpu资源。
比如LOL,同时,电脑上也运行了微信(哪怕微信吃cpu资源少,延迟几秒也能收到消息);
而LOL,卡了一下,团战就输了,伴随着基地也要爆炸。
6.进程的上下文:
进程调度,一个进程执行一会,失去cpu。过了一段时间之后,进程还会回到cpu上执行。
沿着上次执行到的状态,继续往下执行(而不能是重头执行),进程在CPU中运行的过程中,CPU上的各种寄存器,就表示了当前进程运行的“中间状态”。
**保存上下文:**把CPU中的这些寄存器的值,保存到内存中(PCB的对应属性中)。
**恢复上下文:**把PCB中刚才保存属性,填写回对应的寄存器中。多说一点,寄存器,不只是存储中间结果也会存储中间结果,也会存储当前这个进程执行到第几条指令了,以及当前进程中“函数调用关系”。
举个例子:玩过像《模拟人生》这样的多角色游戏吗?

  1. 角色A活动 :你正在控制角色A做饭
  2. 切换角色 :你切换到角色B去花园浇水
  3. 状态保存 :游戏会自动保存角色A的所有状态信息(站在哪里、手里拿什么、做到哪一步)
  4. 角色B活动 :你操作角色B完成浇水任务
  5. 恢复角色A :当你切回角色A时,他还在原地,保持着之前的动作和状态,可以继续做饭。

7.进程的记账信息:统计功能,统计每个进程都在CPU上运行了多久。如果发现某个进程,好久没有吃到CPU资源了,就给这个进程倾斜一些资源。
举个例子:
在RPG游戏中,每个角色都有一个详细的属性面板,这就像进程的记账信息:

  1. 生命值/魔法值 :角色当前的健康状态和能量储备(进程状态信息)
  2. 经验值/等级 :角色的成长进度和能力等级(进程优先级或权限)
  3. 装备栏/背包 :角色占用的道具和装备空间(内存使用情况)
  4. 技能冷却 :每个技能上次使用后经过了多长时间(时间统计信息)
  5. 任务进度 :当前正在执行的任务及其完成情况(进程运行状态)
    游戏系统通过这些信息来管理角色在游戏世界中的存在和行为,决定角色能做什么、能获得什么资源。

总结

上述内容就是我们本节的知识,尤其是进程和cpu这块的知识很重要,可能会有很多,大家要结合例子理解性的记忆和把他们吃透。
下节预告—>JavaEE初阶–Thread类

http://www.dtcms.com/a/598501.html

相关文章:

  • GRPO(Group Relative Policy Optimization)
  • .net空网站做九九乘法表wordpress怎样上传主题
  • 网站建设包括备案吗方象科技服务案例
  • 从 ps -ef 之后怎么获得这个进程的更多信息
  • Tkinter Canvas 方案和OpenCV+PIL 方案的差别
  • 深入解析socket函数:从服务端创建到内核实现原理
  • 吴江住房城乡建设局网站广州专业建网站公司
  • 网站上的美工图片要怎么做做物理的网站
  • 找单位做网站需要注意什么手机建站程序源码
  • 做服务器的网站都有哪些淄博乐达网站建设吧
  • 电子商城网站开发价格江苏网站建设开发
  • 做网站用是内网穿透好美食的网页设计
  • OCR与AI赋能医药资质审核的全流程自动化方案
  • wordpress代码实现头像公众号seo排名
  • docker进阶---docker底层实践2025
  • TCP、UDP 和串口通信-学习笔记
  • 句容市建设工程管理处网站国内p2p网站建设
  • 中国建设银行河南省分行网站抚州市城乡建设局网站
  • 网站建设创业珠海市横琴建设局网站
  • 基于SpringBoot的课程管理系统【智能推荐算法+可视化统计+教师课程报名排行榜】
  • 360网站推广做商务网站需要什么资料
  • 宁波网站建设设计至诚服务wordpress 分类目录下不显示文章
  • 深入解析 IP 协议:从基础核心机制到地址管理、路由选择的全方位指南
  • 邢台网站建设03191688版面设计软件
  • mysql5.7安装教程
  • P1919 【模板】高精度乘法 | A*B Problem 升级版 (FFT)
  • 网页游戏网站开发wordpress5.0.2安装
  • 阜新市建设学校管方网站注册保险代理公司需要什么条件
  • Plant Simulation 双深位立库开发系列教程-出库操作
  • python网站开发的优势wordpress 图集