JavaEE——计算机工作原理

冯诺依曼体系(VonNeumannArchitecture)

现代计算机,大多遵守冯诺依曼体系结构

CPU中央处理器:进行算术运算与逻辑判断

存储器:分为外存和内存,用于存储数据(使用二进制存储)

输入设备:用户给计算机发号施令的设备

输出设备:计算机给用户汇报结果的设备

针对存储空间:硬盘 > 内存 >> CPU

针对数据访问速度:CPU >> 内存 > 硬盘

CPU基本工作流程

指令(Instruction)

主要有操作码 + 操作数组成,其中操作码用来表示要做什么动作,操作数是本条指定要操作的数据,可能是内存地址,也可能是寄存器编号等

一个CPU能执行哪些指定,可以认为是CPU最初设计的时候,就已经确定好了,存在一个“表格”描述了都有哪些指令

下面是一个简化的指令表(Instruction Table):

指令(instruction)功能说明4位 opcode操作的地址或者寄存器
LOAD_A从 RAM 的指定地址,将数据加载到 A 寄存器00104 位 RAM 地址
LOAD_B从 RAM 的指定地址,将数据加载到 B寄存器00014 位 RAM 地址
STORE_A将数据从 A 寄存器写入RAM 的指定地址01004 位 RAM 地址
ADD计算两个指定寄存器的数据的和,并将结果放入第二个寄存器10002 位的寄存器 ID
2 位的寄存器 ID

tips:

AB名字是虚拟的,真实的cpu寄存器的名字,如:eax、ebx、esp、ebp....)

此处假设每个指令只有 8 bit ,实际一个指定很长

8 bit 的指令,分成两部分,前4 bit 是操作码表示指定是干啥的;后4 bit 是操作数(类似于参数)

执行指令的三个重要阶段

1. 取指令:cpu从内存中读取到指令内容到cpu内部(有专门的寄存器保存读到的指令)

2. 解析指令:识别出这个指令是干啥的,以及对应的功能和操作数

3. 执行指令

执行示例:

给一段内存空间,以及里面的数据

cpu中存在一个特殊的寄存器“程序计数器”,保存了接下来要从哪个内存位置来执行指令,本例可以认为程序计数器被设为0,接下来从0号内存地址开始执行指令,同时随着指令的执行,该处的值会自增更新(这是顺序执行的情况,若遇到“跳转类语句”(if、while、for、函数调用...)会被设为其他的值,本例不考虑)


1. 初始情况下,程序计数器是0值

a. 读取指令:00101110

b. 解析指令:

c. 执行指令:把14地址的内存数据读出来,放到寄存器A中

第一条指令执行完毕,系统自动将程序计数器中的值++,从0 -> 1


2. 执行地址为1的指令

a. 读取指令:00011111

b. 解析指令:0001    1111

查看指令表可知,该指令是LOAD_B,把1111地址上的数据读取到寄存器B中

c. 执行指令:把15地址的内存数据读取出来,放到寄存器B中

第二条指令执行完毕,系统自动将程序计数器中的值++,从1 -> 2


3. 执行地址为2的指令

a. 读取指令:100000100

b. 解析指令:

c. 执行指令:

将17的二进制存储到寄存器A中

第三条指令执行完毕,系统自动将程序计数器中的值++,从2 -> 3


4. 执行地址为3的指令

a. 读取指令:01001101

b. 解析指令:

查看指令表可知,该指令是STORE_A,将数据从A寄存器写入1101地址的内存中

c. 执行指令:

第四条指令执行完毕,系统自动将程序计数器中的值++,从3 -> 4


5. 执行地址为4的指令

a. 读取指令:00000000

b. 解析指令:程序执行结束

上例就是CPU完成 3 + 14 的过程

操作系统(OperatingSystem)

操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有:Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。

一个操作系统要做很多事,其中最重要的就是“管理”:

1. 管理不同的硬件设备:键盘、显示器、打印机、医疗设备...

2. 给软件提供稳定的运行环境,现代操作系统上要同时运行很多程序,希望这些程序之间不能相互干扰

操作系统 = 内核 + 配套的应用程序

对于操作系统内核来说,其包含的功能是非常多的,其中有一个功能和日常开发息息相关,那就是进程管理

进程/任务(Process/Task)

进程就是正在执行的应用程序,进程是操作系统进行资源分配的基本单位

由于一个系统上进程比较多,需要管理,分为两部分:

1. 描述:通过 结构体/类 ,把进程的各种属性表示出来(对于Linux操作系统来说,使用“PCB(继承控制块)”这样的结构体来描述进程信息

2. 组织:通过数据结构,把多个结构体穿起来,并进行增删查改操作(可以简单的认为,是通过链表的方式,把上述多个PCB串到一起,实际情况会更复杂)


PCB中的关键信息

1. PID进程的标识符

同一时刻,一个机器上的多个进程之间,PID是唯一的,不会重复的,系统内部很多操作都是通过PID找到对应的进程的

2. 内存指针(一组)

描述进程依赖的指令和数据都在内存的哪个区域

操作系统运行exe就会读取exe中的指令和数据,加载到内存中(侧面表示出,进程的执行需要一定的内存资源)

3. 文件描述符表(顺序表/数组)

描述了进程打开了哪些文件(对应到硬盘上的数据,侧面表示出,进程的执行,需要一定的硬盘资源)

进程中,打开了某个文件,就会在顺序表中添加一项


tip:进程的调度

操作系统进程调度的关键:分时复用

并发执行:只有一个核心的cpu,一会运行进程1,一会运行进程2,一会运行进程3...由于cpu运算速度非常快,使得切换速度也非常快,肉眼察觉不到,站在宏观角度(人的角度),同时执行,称为并发执行

并行执行:现在有了多核心的cpu,此时,每个核心和核心之间,微观上也能同时执行不同的进程,称为并行执行

并发和并行都是操作系统内核同意调度的,程序员/普通用户,感知不到

因此,平时把并发和并行统称为“并发”,对应的编程手法也成为并发编程

以下4点均属于进程的调度

4. 进程状态

就绪状态:随时可以被调度到cpu上执行指令

阻塞状态:无法调度到cpu上执行,之所以阻塞,是因为要做一些其他的工作,比如:IO操作(读写硬盘/读写网卡...)

像C中的scanf和Java中的Scanner执行到这样的语句都会发生阻塞

除了上两种状态,进程还有其他的状态,此处不展开

5. 进程优先级

根据进程情况,给与相应的优先级

6. 进程的上下文

分时复用,一个进程执行一会之后,就从cpu上调度走,过一段时间,会调度回cpu,沿着上次执行的结果继续往后执行,将上次执行的中间结果(各种cpu寄存器中的值)保存起来,以备下次使用,此为进程的上下文

7. 进程的记账信息

在优先级的加持下,使得不同进程吃到的资源擦会议越来越大,操作系统统计每个进程在cpu上执行的时间,根据这个来进一步的调整调度的策略

以上7中属性相互配合,共同构成了进程调度的核心逻辑

上述的调度过程均为系统内核负责完成

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

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

相关文章

鸿蒙开发设备管理:【@ohos.account.appAccount (应用帐号管理)】

应用帐号管理 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入模…

景区智慧公厕解决方案,公厕革命新方式

在智慧旅游的浪潮下,景区智慧公厕解决方案正悄然引领着一场公厕革命,不仅革新了传统公厕的管理模式,更以智能化、人性化的服务理念,为游客提供了前所未有的舒适体验。作为智慧城市建设的重要一环,智慧公厕解决方案正逐…

计算机网络之以太网

上文内容:总线局域网以及冲突的解决方法 1.以太网的起源 1.1起源 60年代末期,夏威夷大学Norman Abramson等研制ALOHA无线网络系统,实现Oahu岛上的主机和其它岛及船上的读卡机和终端通信; 出境信道地址:主机到终端&#xff1…

如何利用好用便签提高工作效率?

在忙碌的工作中,我们经常需要记住许多琐碎的任务。如果这些任务被遗忘,可能会对我们的工作产生影响。这时,便签就成为了我们的得力助手。通过合理的使用和管理,便签不仅能帮助我们记住重要的事项,还能提高我们的工作效…

Redis基础教程(十四):Redis连接

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

在Windows可以如此丝滑的测试ios应用

在没有Mac本的时候,又想测试iphone或者ipad该怎么办? 最简单的办法当然是买一个了,如果经济上觉得不划算的话,不妨看看这篇文章,或许能帮到您,有任何问题欢迎一起交流。 原理图 开发环境 操作系统:Windows11 被测设备: iPad mini 15.5 注意事项 一定要安装iTunes!一…

NET程序开发可能会用到的一些资料文档

NET程序开发使用的一些资料文件,NET高级调试,NET关键技术深入解析,WPF专业编程指南,程序员求职攻略,WPF编程宝典等。 下载链接:https://download.csdn.net/download/qq_43307934/89518582

GPT-4o将改变论文学术文风,科学家揭示5年内百万篇论文“is”“are”词频减少10%!

在最近的一项研究中,意大利国际高等研究院(SISSA)的博士生耿明萌量化了 ChatGPT 对学术论文写作的影响。 与以往主要分析 ChatGPT 生成的段落或文章不同,这次研究更关注整体情况。 论文地址:https://arxiv.org/pdf/2…

SpringBoot怎么单独关闭某个类打印出来的日志?

application.yml文件增加以下内容: logging:level:org.springframework.amgp.rabbit: OFF 配置logging:level是配置的什么? 在application.yml文件中配置logging.level是用来设置日志级别的。这是Spring Boot应用中的一个常用配置,它允许您…

Spring AOP实现操作日志记录示例

1. 准备工作 项目环境:jdk8springboot2.6.13mysql8 1.1 MySQL表 /*Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50730Source Host : 127.0.0.1:3306Source Schema …

双扩散金属氧化物半导体(DMOS)应用广泛 超结VDMOS市场需求空间大

双扩散金属氧化物半导体(DMOS)应用广泛 超结VDMOS市场需求空间大 双扩散金属氧化物半导体简称DMOS,是MOS管的一种。MOS管全称为金属氧化物半导体场效应管,又称为MOSFET,是一种利用改变电压来控制电流的半导体器件。  …

《梦醒蝶飞:释放Excel函数与公式的力量》8.8 STDEVP函数

8.8 STDEVP函数 STDEVP函数是Excel中用于计算总体数据的标准偏差的函数。标准偏差是统计学中的一个重要指标,用于衡量数据集中各数值偏离平均值的程度。总体标准偏差考虑了整个数据集,而不是样本。 8.8.1 函数简介 STDEVP函数用于返回总体数据的标准偏…

Redis 中的通用命令(命令的返回值、复杂度、注意事项及操作演示)

Redis 中的通用命令(高频率操作) 文章目录 Redis 中的通用命令(高频率操作)Redis 的数据类型redis-cli 命令Keys 命令Exists 命令Expire 命令Ttl 命令Type命令 Redis 的数据类型 Redis 支持多种数据类型,整体来说,Redis 是一个键值对结构的,…

第N7周:seq2seq翻译实战-pytorch复现-小白版

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 理论基础 seq2seq(Sequence-to-Sequence)模型是一种用于机器翻译、文本摘要等序列转换任务的框架。它由两个主要的递归神经网络&#…

【leetcode】双指针算法题

文章目录 1.算法思想2.移动零3.复写零方法一方法二 4.快乐数5.盛水最多的容器方法一(暴力求解)方法二(左右指针) 6.有效三角形的个数方法一(暴力求解)方法二(左右指针) 7.两数之和8.…

CNN文献综述

卷积神经网络(Convolutional Neural Networks,简称CNN)是深度学习领域中的一种重要模型,主要用于图像识别和计算机视觉任务。其设计灵感来自于生物学中视觉皮层的工作原理,能够高效地处理图像和语音等数据。 基本原理…

UVa1265/LA4848 Tour Belt

UVa1265/LA4848 Tour Belt 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的F题 题意 给出一个有n个结点m条边的加权无向图G(2≤n≤5000,1≤m≤n(n-1)/2),满足如下条件的结点集B(2≤|B|≤n&am…

剪画小程序:手机制作音乐串烧,用它,真的很简单!

Hello,大家好呀,我是不会画画的小画。 相伴关注歌手的小伙伴们,上周五的《歌手 2024》第八期大家看了吧!那期节目里有好几首歌都让我沉醉其中,像汪苏泷的《听见下雨的声音》、谭维维的《兰花花儿》等等。 为了能让大…

c++之旅第十一弹——顺序表

大家好啊,这里是c之旅第十一弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 一,数据结构…

基于docker环境及Harbor部署{很简短一点了,耐心看吧}

用到的环境: docker 、nacos、compose、harbor(自行安装 ,以下连接作为参考) nacos:史上最全整合nacos单机模式整合哈哈哈哈哈_nacos 源码启动 单机模式-CSDN博客 docker、compose、harbor:史上最全的整合Harbor安装教程&#…