【JavaEE初阶 -- 计算机核心工作机制】

news/2024/4/13 11:28:36/文章来源:https://blog.csdn.net/m0_63440113/article/details/136508556

这里写目录标题

  • 1.冯诺依曼体系
  • 2.CPU是怎么构成的
  • 3.指令表
  • 4.CPU执行代码的方式
  • 5.CPU小结:
  • 6.编程语言和操作系统
  • 7. 进程/任务(Process/Task)
  • 8.进程在系统中是如何管理的
  • 9. CPU分配 -- 进程调度
  • 10.内存分配 -- 内存管理
  • 11.进程间通信

1.冯诺依曼体系

  • CPU中央处理器:进行算术运算和逻辑判断。
  • 存储器:分为外存和内存,用于存储数据(二进制存储)
  • 输入设备:用户给计算机发送指令的设备
  • 输出设备:计算机给用户汇报结果的设备
    在这里插入图片描述针对存储空间访问速度:硬盘>内存>>CPU
    针对数据访问速度:CPU>>内存>硬盘

2.CPU是怎么构成的

门电路 => 半加速 => 全加速 => 加法器 => ALU运算器(ALU是计算机中进行算数,逻辑运算的核心部件,是计算机的数学大脑)。
CPU以及其他的内存、硬盘等重要的设备都是由 门电路构成的。

3.指令表

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

寄存器:是CPU上存储数据的单元。CPU上能直接存的数据比较少,这些寄存器主要是为了支持CPU完成一些计算,保存中间结果的。

4.CPU执行代码的方式

在这里插入图片描述
上面一段指令,其实就是内存中的一段数据;写好的代码最终要运行的话都需要让操作系统,先把写好并编译好的指令加载到内存中,然后CPU才能执行

  1. 假如从0号地址开始执行程序:CPU就会从0号地址读取数据,到CPU寄存器里,并且对这个指令进行解析(即查指令表,看指令的具体操作)
    在这里插入图片描述前4位(0010)是opcode参数(即查指令表):LOAD A:从内存中读取数据到A寄存器中。后4位(1110)是内存地址,十进制的14。

  2. CPU 接着从内存中,读取指令并解析:

在这里插入图片描述0001:LOAD B,1111:就是15号内存地址。
在这里插入图片描述

  1. CPU接着从3地址读取指令:在这里插入图片描述1000:为add,01为B,00为A,A寄存器的编号是00,B的编号是01,而这些都是指令表里提前约定好的。把**这两个寄存器的内容进行相加,结果保存到第二个操作数(A)的寄存器中
    在这里插入图片描述
  2. CPU接着读取3号地址的指令,在这里插入图片描述** 0100:STORE A,1101:13地址;把A寄存器中的值,写入到13这个地址上。**

5.CPU小结:

  1. CPU要执行的指令,是在内存中的(冯诺依曼结构的基本设定让执行单元和存储单元进行了 解耦合
  2. ** CPU想要执行指令,必须先读取指令,再解析指令,然后才能执行指令**
  3. 取指令需要从内存中读取指令到CPU的寄存器中(上面CPU读取解析和执行指令没有体现出存储指令的寄存器,只体现了AB用来计算数据的寄存器);因为读取内存操作相对于CPU执行计算,开销大很多,所以读取指令的操作,是非常耗时的,因此,CPU通过缓存,流水线等技术来优化这里的效率。
  4. CPU解析指令的时候,需要用到指令表,而不同架构的CPU支持的指令表不同(x86和arm等是不同的);指令表细节已经写死到CPU中了,CPU是可以很容易识别的
  5. 指令在执行过程中,可能会带有一些操作数,不同的指令,操作数的个数含义都有所不同
  6. CPU重要的参数,主频:表示的含义就可以近似看成一秒中之内,CPU能够执行的指令个数

6.编程语言和操作系统

  • 编程语言:高级语言经过编译、链接 =》汇编语言 经过汇编 =》机器语言

高级语言的一条语句往往对应多条指令才能完成

  • 操作系统:是一组做计算机资源管理的软件的统称。
  • 计算机系统的分层视图:

在这里插入图片描述

7. 进程/任务(Process/Task)

  • 进程就是操作系统提供的一种“软件资源”比如我们电脑正在运行的程序,就可以称为是”任务“,也叫进程,而我们现在所用的系统,都属于多任务操作系统,即同一时刻可以运行多个任务。
  • 而单任务操作系统,同一时刻只能运行一个程序,比如以前的山寨机,单任务系统就是没有后台运行,要执行另一个程序,就需要先退出前一个程序
  • 每个任务在执行过程中,都需要消耗一定的硬件资源,计算机中的每个进程在运行的时候,都需要给他分配一定的系统资源进程是系统分配资源的基本单位

8.进程在系统中是如何管理的

操作系统的进程管理:

  1. 先描述,即使用类/结构体这样的方式,把实体属性给列出来,表进程信息的结构体,PCB(进程控制块,Process Control Block),PCB是操作系统中的通用概念,比如Windows上表进程的结构和Linux也都可以称为PCB。
  2. 再组织,即使用一定的数据结构,把这些结构体/对象串到一起。在Linux中,使用链表这样的数据结构来把若干个task_struct串起来。

PCB中的一些核心属性

  1. pid,进程的身份标识。此处通过一个简单的不重复的整数来进行区分的,系统会保证,同一个机器上,同一个时刻,每个进程pid都是唯一的。
  2. 内存指针,描述了进程使用,内存资源的详细情况。进程运行过程中,需要消耗一些系统资源的,其中内存就是一种重要的资源。而整个系统中,内存这么多,并不是可以随意使用的,只有先从系统这里申请,系统给你分配一块才能使用。每个内存,都必须使用自己申请到的内存
  3. 列如双击一个exe,就会运行进程,这个过程中,就是系统先把exe这个文件的内容(包含了指令和数据,先加载到内存中)然后再创建进程,让进程开始执行。
  4. 文件描述符表:描述了这个进程所涉及的硬盘相关的资源。存储器 = 内存+外存(硬盘、软盘、光盘、U盘。。),操作系统,不管什么盘都是按照”文件“的方式来进行操作的。一个进程想要操作文件,需要先打开文件,即让进程在文件描述符表中分配一个表项(构造一个结构体)表示这个文件的相关信息

注意:进程,是系统分配资源的基本单位
一个进程,消耗CPU资源:就好比CPU是个大舞台,进程要执行的指令,就是演员;一个CPU可能有一个核心,也可能有多个核心,每个核心都是舞台,演员进行表演登上舞台才能表演,同一时刻,一个舞台,只能有一个演员,让多个演员轮流登台,即引出分时复用。即某电脑的CPU有16个逻辑核心,系统上的进程不止16个,其他进程分不到CPU资源,通过分时复用(并发)

  • 分时复用当CPU核心只有一个,先执行进程1的代码,执行一会后,让进程1下来,执行进程2的代码,以此类推
  • 并发:多核CPU下,四个不同的进程在各自舞台上执行,同时执行,称为并行执行。每个核心仍要分时复发。当代的计算机执行过程中,往往是并行+并发同时存在。而两个进程是并发执行还是并行执行要看系统的调度。

9. CPU分配 – 进程调度

PCB中就需要提供一些属性来支持系统完成对这些进程的调度。

  • 状态:描述进程的是否能够去CPU上执行 。有时候某个进程不方便,比如通过Scanner等待用户输入内容。
    1.就绪状态:随时准备好去CPU上执行。2,阻塞状态:这个进程不方便去CPU上执行,调度不了该进程(如进程等待IO,来自控制台等设备的输入输出),。
  • 优先级多个进程等待系统调度,调度的先后不一样。如电脑运行了游戏和qq,此时游戏的优先级大于qq。
  • 记账信息针对每个进程,占据了多少CPU的时间,进行一个统计,会根据这个统计结果来进一步的调整调度的策略。因此需要在下一轮的调度下进行调整,确保每个进程都不至于出现完全捞不着CPU的情况。
  • 上下文支撑进程调度的重要属性,相当于游戏里面的存档和读档。每个进程在运行过程中,就会有很多的中间结果,在CPU的寄存器中。1.存档因此,就需要在进程调度出CPU之前,把当前寄存器中的这些信息,给单独保存到一个地方。2.存档在该进程下次去CPU执行的时候,再把这些寄存器里的信息给恢复回来
  • 所谓的保存上下文就是:把CPU的关键寄存器中的数据,保存到内存中(PCB的上下文属性中)
  • 恢复上下文把内存中的关键寄存器中的数据,加载到CPU的对应寄存器

10.内存分配 – 内存管理

每个进程的内存,是彼此独立的,互不干扰的

  • 通常情况下,进程A不能直接访问进程B的内存;为了系统的稳定性,如果某个进程代码出bug出错的,只是影响到自己这个进程,不会影响到其他进程,这种情况也称为进程的独立性。而如果系统上的一个进程崩溃,会影响了其他进程,那将非常恐怖。

11.进程间通信

虽然有进程的独立性,但是有时候也需要,多个进程相互配合,完成某个工作

  • 进程间通信和进程的‘独立性’ 并不冲突,系统提供一些 公共的空间(多个进程可以访问到的),让两个进程借助这个公共空间来交互数据
  • 进程通信的方式
  1. 管道
  2. 共享内存
  3. 文件
  4. 网络
  5. 信号量
  6. 信号
    其中,在Java中主要使用的进程通信方式:文件和网络。网络,是可以支持同一个主机的不同进程,也能支持不同主机的不同进程适用性更高

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

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

相关文章

SpringBoot【问题 05】PostgreSQL数据库启用SSL后使用默认配置进行数据库连接(Navicat工具与Java程序)

官网SSL说明:https://www.postgresql.org/docs/9.1/libpq-ssl.html 1.配置 1.1 文件 使用SSL需要的4个文件,名称要一致: 客户端密钥:postgresql.keyJava客户端密钥:postgresql.pk8客户端证书:postgresq…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统(DNS)三、文本传输协议(FTP)四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统(DNS) 我们知道,随着人们建立一个网站…

【软件测试】上岗第一天,组长就要我做自动化测试?我该咋办?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 如果你恰好刚刚进…

探讨倒排索引Elasticsearch面试与实战:从理论到实践

在当前大数据时代,Elasticsearch(以下简称为ES)作为一种强大的搜索和分析引擎,受到了越来越多企业的青睐。因此,对于工程师来说,掌握ES的面试准备和实战经验成为了必备技能之一。本文将从ES的面试准备和实际…

玩转安卓之配置gradle-8.2.1

概述:看了一下,由于gradle是国外的,所以下载速度很慢,这个老师又是很菜的类型,同学又不会,于是曹某就写这一篇文章,教大家学会简单的为安卓配置gradle-8.2.1。 第一步:下载gradle-8…

高级控件

1.下拉列表 package com.tiger.chapter08;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner;public class Spi…

Vue2+3

vue相关介绍 Vue的两种使用方式: 1、vue核心包开发 场景:局部模块改造 2、vue核心包&vue插件工程化开发 场景:整站开发 概念:vue是用于构建用户界面的渐进式框架 创建vue实例 创建Vue实例,初始化渲染步骤&am…

第五十一天| 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

第四十八天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II-CSDN博客 第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV-CSDN博客 Leetcode 309.最佳买卖股票时机含冷冻期 题目链接:309 最佳买卖股票时机含冷冻期 题干:给定一个…

[项目设计] 从零实现的高并发内存池(五)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 8 使用定长内存池脱离new 9. 释放对象时不传大小 10.性能优化 10.1…

强大的ps 命令 -o 自定义输出内容选项

强大的ps 命令 -o 自定义输出内容选项 1、ps命令介绍和作用2、问题描述 1、ps命令介绍和作用 ps 是一个 Unix 和类 Unix 操作系统中常用的命令,用于显示当前运行的进程信息。ps 命令的作用包括: 查看进程信息: ps 命令可以列出当前系统中正…

SL1585 24V降压5V电源芯片 24V降压3.3V电源芯片

SL1585 24V降压5V电源芯片与24V降压3.3V电源芯片是两款广泛应用于电子设备中的电源管理芯片。它们的主要功能是将较高的输入电压(通常为24V)降至更低的输出电压(分别为5V和3.3V),以满足各种电子元器件的供电需求。在深…

Redis中的RDB和AOF持久化机制(一)

Redis持久化 RDB快照(snapshot). 在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中.Redis可以进行设置,让它在"N秒内数据集至少有M个改动"这一条件被满足时,自动保存一次数据集。比如说,以下设置会让Redis…

ZYNQ--MIG核配置

文章目录 MIG核配置界面多通道AXI读写DDR3MIG核配置界面 Clock Period: DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型以及具体类型的速度等级有关。本实验选择 1250ps,对应 800M,这是本次实验所采用芯片可选的最大频率。注意这个时钟是 MIG IP 核产生,并输出给…

手写分布式配置中心(二)实现分布式配置中心的简单版本

这一篇文章比较简单,就是一个增删改查的服务端和一个获取配置的客户端,旨在搭建一个简单的配置中心架构,代码在 https://gitee.com/summer-cat001/config-center 服务端 服务端选择用springboot 2.7.14搭建,设计了4个接口/confi…

<网络安全>《61 微课堂<第1课 南北向流量是什么?>》

1 形象化解释 在网络安全中,经常听到南北向流量这个词。那究竟是什么意思呢? 这里的南北,就是地图上的东西南北,是方向。我们在画网络架构图时,往往是由上到下依次是web层、应用层、数据层,流量从web层到…

coqui-ai/TTS 安装使用

Coqui AI的TTS是一款开源深度学习文本转语音工具,以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库,能够轻松集成到各种应用中,并允许用户通过简单API进行个性化声音训练与微调。其技术亮点包括但不限于低资源适应性&#xff0…

企业IPv6网关负载分担方案的设计与实现

背景需求 (1)随着企业业务数量大幅增加,以及网络应用的高速发展,现有IPv4地址已不能满足需求,根据通信架构合理规划IPv6网络,对企业网络进行构建及扩充。 (2)企业业务量上升网络主…

Linux--Redis 群集

9.1.1 关系型数据库与非关系型数据库 数据库按照其结构可以分为关系型数据库与其他数据库,而这些其他数据库我们将其统称为非 关系型数据库。Redis数据库是一个非关系型数据库。 1、关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型基础上…

Seata 2.x 系列【2】数据库事务

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Seata 版本 2.0.0 源码地址:https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. ACID 模型2.1 原子性2.2 一致性2.3 隔离性2…

ChatGPT如何干涉教育?

OpenAI又整大活儿了。 他们在ChatGPT引入了自定义指令,什么是自定义指令呢,我截图了他们在推特上发布的解释,比较让人期待的是,现在ChatGPT能够更好地为小说和编剧们服务了,以及,它可以模仿你的语言风格&a…