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

JavaEE---计算机是如何工作的?

1.了解冯诺依曼体系结构

2.CPU的核心概念,CPU的两个重要指标(核心数和频率)

3.CPU执行指令的流程(指令表,一条一条指令,取指令,解析指令,执行指令)

4.操作系统核心概念(管理硬件,给软件提供稳定的运行环境)

5.进程的概念(运行起来的程序和可执行文件的区别)

6.进程的管理(PCB,链表)

7.进程的调度(状态,优先级,上下文,记账信息)==>并发,并行

1.冯诺依曼体系结构

冯诺依曼体系结构由:输入设备,存储器,CPU,输出设备构成

现在的计算机大都遵循冯诺依曼体系结构

CPU中央处理器:进行算术运算和逻辑运算

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

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

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

针对于储存空间来说:

        硬盘>内存>CPU

对于数据访问速度来说:

        CPU>内存>硬盘

对于价格来说:

        CPU>内存>硬盘

对于掉电后数据丢失来说,

        CPU,内存都会丢失

        硬盘不会丢失数据

2.CPU的核心概念

上面我们说了CPU用于算术运算和逻辑判断.

CPU市面上的常见架构有:

        1.X86/X64(桌面端/服务器)

        2.arm(移动端/嵌入式)

        3.Risc-V

CPU的核心参数有核心数和频率

核心数有各种名词,比如大小核,四核八线程(超线程技术)等等

多任务处理能力会随着核心数的数量而提高,随之功耗会提高,对散热有一定的需求

任务管理器中可以查看,图上的一个个小块就是每个核心

频率也可以在上图看出

基准速度就是标准的频率,可以模糊理解为一秒钟可以执行24亿条指令

这个是当前实际的频率

指令可以称为机器语言(二进制语言)也可以称为是汇编语言

不同的CPU支持的指令是不同的,X86上的指令和arm是不互通的(兼容性问题)

(m1后,Mac用的是arm架构,为了更长的续航)

寄存器是CPU内部存储数据的部分

成本高,访问速度比内存快,空间小,断电后会丢失数据

CPU中存在缓存,如果需要用的数据但寄存机空间不够或者常用的数据会存放在缓存中

可以看出缓存是三级结构

L1缓存空间小,读取数据速度最快

L3缓存空间大,读取数据速度最慢

3.CPU执行指令的流程

所谓指令,即指导 CPU 进⾏⼯作的命令,主要有操作码 + 被操作数组成
其中操作码⽤来表⽰要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
指令本⾝也是⼀个数字,⽤⼆进制形式保存在内存的某个区域中。
这里展示的指令为8bit位的
前4bit位为opcode,操作码,后4位为操作数

CPU存在一个特殊的寄存器---"程序计数器"

保存了接下来要从哪个内存位置来执行指令,默认从0开始,一般执行结束会自增(没有循环条件判断等)会自动+1,遇到数据为0000000就停止,这些都是系统自动设置好的

指令集的三过程:

        1.取指令

        2.解析指令

        3.执行指令

这里给大家简单分析下上面图片

第一步:

刚开始,程序计数器默认从0开始读取,读到的数据为00101110(取指令)

0010是将1110这个地址的数据存入A寄存器中(上图有操作数的详情),1110代表的地址是14(解析指令)

而第14的地址数据为00000011,转化为十进制是3,所以是将3存入到A寄存器中(执行指令)

第二步:

程序计数器自增到1,读取的数据为00011111(取指令)

0001是将1111这个地址的数据存入B寄存器中,1111代表的地址是15(解析指令)

而第15的地址数据为00001110,转化为十进制是14,所以是将14存入到B寄存器中(执行指令)

第三步

程序计数器自增到2,读取的指令为10000100(取指令)

1000是将两个寄存器的数据相加,结果放在第二个寄存器中,(解析指令)

0100表示将寄存器A和B的值相加,00表示A,01表示B结果放在A中(执行指令)

第四步程序计数器自增到3,读取的指令为01001101(取指令)

0100表示将数据从A寄存器放入内存地址中(解析指令)

1101的数据是7,也就是将3和14相加的结果放入到7号地址中(执行指令)

第五步,读取到00000000,结束指令

以上的步骤就是很简单的两个数据相加的过程

指令集开发的场景一个是写外挂(违法行为),一个是给程序打"热补丁"

因为程序运行时,除了重启时间,大部分是没法强制重启的,这时候需要打一个热补丁将对程序数值或者错误的地方进行修改

4.操作系统核心概念

操作系统,常见的操作系统有:Windows,Linux,MacOS,Android,Unix,iOS,鸿蒙等

操作系统的分层视图

操作系统的功能:

1.管理不同的硬件

2.为软件提供稳定的运行环境

操作系统通过程序驱动间接的操作硬件

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

操作系统的内核=操作系统核心功能集合

5.进程的概念

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程

在操作系统内部,进程又是操作系统进行资源分配的基本单位

C语言编写的exe文件是可执行文件,当它被打开后被读取到内存中了才被称为进程

6.进程的管理(PCB,链表)

进程控制块抽象(PCB/Process Control Block)

计算机内部要管理任何现实事物,都需要将其抽象成⼀组有关联的、互为⼀体的数据。描述的时候需要有以下信息
进程之间是通过链表结构穿起来的,方便对进程实现增删改查
1.pid进程标识符
同一时刻,应该机器上的多个进程之间,PID唯一的,不会重复,操作系统内部的很多操作都是通过PID找到对应的进程的
2.内存指针(一组)  侧面表示出,进程的执行需要一定的内存资源
描述进程依赖的指令和数据都在内存的哪个区域
操作系统运行exe,就会读取exe中的指令和数据,加载到内存中,(内存地址)
3.文件描述符表(顺序表/数组)    侧面表示出,进程的执行需要一定的硬盘资源
描述了进程打开了哪些文件(对应硬盘上的数据)
进程中打开了某个文件,就会在顺序表中添加一项

7.进程的调度(状态,优先级,上下文,记账信息)==>并发,并行

4.进程的状态

进程状态有就绪状态和阻塞状态等:

1.就绪状态:进程是可以随时被调度到CPU上执行指令的

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

除了上面之外,进程还有其他的状态,此处暂时不展开这么多

已经过的代码中,大部分不会产生阻塞的,有一个典型的代码会引起阻塞

从控制台读取输入(等待IO产生的阻塞),代码执行到这样的语句时,代码就"卡住了"

分时复用:

单核处理器下,这个时候CPU运行进程1,运行一会cpu运行进程2,过一会运行进程3

由于CPU运行的速度非常快,使上述的切换速度也非常快,肉眼察觉不到

站在宏观角度上(人),同时执行,"并发执行"

现在有了多核心CPU,此时每个核心之间,微观上能同时执行不同的进程

"并行执行"

并发/并行,都是操作系统内核统一调度的,程序员/普通用户,站址不到

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

5.进程的优先级

有的进程先执行,有的进行后执行

6.进程的上下文

把之前执行的中间结果(各种CPU寄存器中的值)保存起来,以备下次使用

7.进程的记账信息

操作系统统计每个进程在CPU上执行的时间,根据这个来进一步调整调度的策略

相关文章:

JavaEE---计算机是如何工作的?

1.了解冯诺依曼体系结构 2.CPU的核心概念,CPU的两个重要指标(核心数和频率) 3.CPU执行指令的流程(指令表,一条一条指令,取指令,解析指令,执行指令) 4.操作系统核心概念(管理硬件,给软件提供稳定的运行环境) 5.进程的概念(运行起来的程序和可执行文件的区别) 6.进程的管理(…...

十、Spring Boot集成Spring Security之HTTP请求授权

文章目录 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置 三、测试接口1、测试类2、测试 四、总结 往期回顾…...

C#基础控制台程序

11.有一个54的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 12.从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 13.输入一个数,判断它是奇数还是偶数,如果…...

【网络安全】CSRF

一、什么是CSRF CSRF(Cross-Site Request Forgery)是一种web应用程序安全漏洞,它利用了用户在已登录的状态下的信任,通过欺骗用户发送未经授权的请求来执行恶意操作。这种攻击的危害性取决于受害者在目标网站上的权限。 二、CSR…...

网络原理(一)—— http

什么是 http http 是一个应用层协议,全称为“超文本传输协议”。 http 自 1991 年诞生,目前已经发展为最主流使用的一种应用层协议。 HTTP 往往基于传输层的 TCP 协议实现的,例如 http1.0,http1.0,http2.0 http3 是…...

【实体配置】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列 &#x1f…...

【Zookeeper】四,Zookeeper节点类型、通知、仲裁、会话

文章目录 Zookeeper的架构znode的版本Zookeeper的节点类型层级树状结构znode的不同类型 Zookeeper监视与通知通知的类型 Zookeeper的仲裁Zk的会话会话的生命周期 Zookeeper的架构 Zookeeper的服务器端运行两种模式:独立模式(standalone)和仲…...

【二分查找】力扣 34. 在排序数组中查找元素的第一个和最后一个位置

一、题目 二、思路 将题目转化为求解 target 和 target 1 的查找。分别采用最基础的二分查找即可。 三、题解 class Solution {public int[] searchRange(int[] nums, int target) {int n nums.length;int start lowerBound(nums, target);if (start n || nums[start] !…...

以达梦为数据库底座时部署的微服务页面报乱码,调整兼容模式

1.问题描述 部署微服务,文件、代码是延用的mysql类型的,部署前做了部分适配,但是在使用dm数据库进行安装的服务在页面上查询出的数据却都是乱码 2.查询官网,注意到一个参数COMPATIBLE_MODE兼容模式的配置 考虑是延用mysql&…...

Java设计模式 —— 【创建型模式】工厂模式(简单工厂、工厂方法模式、抽象工厂)详解

文章目录 前言一、简单工厂(静态工厂)1、概述2、代码实现3、优缺点 二、工厂方法模式1、概述2、代码实现3、优缺点 三、抽象工厂模式1、概述2、代码实现3、优缺点 四、总结 前言 先看个案例:【手机和手机店】在没有工厂的时候,手…...

KST-3D01型胎儿超声仿真体模、吸声材料以及超声骨密度仪用定量试件介绍

一、KST-3D01型胎儿超声仿真体模 KST—3D01型胎儿超声体模,采用仿羊水环境中内置胎龄为7个月大仿胎儿设计。用于超声影像系统3D扫描演示装置表面轮廓呈现和3D重建。仿羊水超声影像呈暗回声(无回波)特性,仿胎儿超声影像呈对比明显…...

网络原理->DNS协议和NAT协议解

前言 大家好我是小帅,今天我们来了解应用层的DNS协议和NAT技术 个人主页:再无B~U~G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…...

基于yolov8、yolov5的100种中药材检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下: 算法模型:     yolov8、yolov8 SE注意力机制 或 yolov5、yolov5 SE注意力机制 , 直接提供最少两个训练好的模型。模型十分重要,因为有些同学的电脑没有 GPU&#xff0…...

RuoYi排序

RuoYi框架提供了多种实现排序的方法,以满足不同场景下的需求。这里简要介绍几种常见的排序实现方式: 1. 后端排序 1.1 使用startPagePlus方法 RuoYi框架中,可以通过对BaseController进行扩展来实现更灵活的分页与排序功能。例如&#xff0…...

Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)

我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…...

BASLER工业相机维修不能触发拍照如何处理解决这个问题

BASLER工业相机维修不能触发拍照如何处理解决这个问题?最近遇到挺多工业相机维修咨询这个不能触发拍照的案例,所以今天优米佳维修的技术就抽空整理了这篇关于BASLER相机不能触发拍照的处理方法分享给大家。 当碰到巴斯勒工业相机不能触发拍照的问题&…...

Could not locate device support files.

报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…...

linux系统中常用文件日常使用命令记录

我们办公机是Ubuntu系统; 记录下工作中经常使用的几个文件或命令或一些零碎的知识点: (该文档会持续更新) 查看系统信息: uname -a cat /etc/product-info cat /etc/os-version 存放系统启停脚本 /etc/init.d/ 存放源…...

【C++打怪之路Lv16】-- map set

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...

TPU-MLIR 项目源码结构分析

TPU-MLIR 项目源码结构分析 本文用作学习记录和交流分享,主要内容为 TPU-MLIR 的源码框架分析和构建流程分析。源码地址:https://github.com/sophgo/tpu-mlir 文件结构 从最外层开始分析 envsetup.sh 该脚本用于配置和初始化开发环境,其中…...

IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“

参考文章:https://blog.csdn.net/yueeryuanyi/article/details/14211090 问题:IDEA Maven 打包找不到程序包错误或找不到符号,报错“程序包不存在“编译都没问题 解决思路 – >【清除缓存】 1. 强制刷新Maven缓存 选择 Maven 标签,Exe…...

Sourcetree:一款强大的Git客户端

Sourcetree:一款强大的Git客户端 Sourcetree是一款由Atlassian开发的免费Git客户端,它提供了一个直观的图形界面,让用户能够轻松地管理他们的版本控制系统。无论是初学者还是有经验的开发者,Sourcetree都能提供方便快捷的Git操作…...

Linux环境变量与本地变量

文章目录 Linux环境变量与本地变量什么是环境变量查看环境变量设置环境变量本地变量命令行参数 Linux环境变量与本地变量 什么是环境变量 操作系统或运行时环境中存储的一些变量,用来存储与进程或系统相关的配置信息。这些变量在进程启动时由操作系统或Shell读取&…...

ChatGPT的应用场景:开启无限可能的大门

ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表…...

QT按下两次按钮,保存这期间内变换的QtextEdit控件内的数据

这个功能在项目中很常见&#xff0c;对界面里某个控件的数据进行记录&#xff0c;我这个是每秒记录5次&#xff0c;实际就是每200ms触发一次定时器&#xff0c;来满足需求。 .h文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QtSerialPort> …...

daos源码编译

1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下&#xff1a; daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本&#xff0c;是因为daos从2.0.0开始是一个全新的架构设计&a…...

HTML飞舞的爱心

目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色…...

C++中智能指针的使用及其原理 -- RAII,内存泄漏,shared_ptr,unique_ptr,weak_ptr

目录 1.智能指针的使用场景分析 2.RAII和智能指针的设计思路 3.C标准库智能指针的使用 4.智能指针的原理以及模拟实现 5.shared_ptr循环引用问题和weak_ptr 5.1shared_ptr循环引用问题 5.2weak_ptr的原理和部分接口 5.3weak_ptr的简单模拟实现 6. shared_ptr的线程安…...

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

Android11修改摄像头前后置方法,触觉智能RK3568开发板演示

本文介绍在Android11系统下&#xff0c;修改摄像头前后置属性的方法。使用触觉智能EVB3568鸿蒙开发板演示&#xff0c;搭载瑞芯微RK3568&#xff0c;四核A55处理器&#xff0c;主频2.0Ghz&#xff0c;1T算力NPU&#xff1b;支持OpenHarmony5.0及Linux、Android等操作系统&#…...

wordpress自定义网站/北京seo外包

charles抓包的安装&#xff0c;使用说明以及常见问题解决(windows) https://blog.csdn.net/zhangxiang_1102/article/details/77855548转载于:https://www.cnblogs.com/hyzhang/p/8962275.html...

旅游景点网站模板/交换友情链接的好处

一.极坐标图&#xff1a;polar(theta,rho,s) theta为极坐标图形的角度&#xff0c;rho为极半径&#xff0c;s为图形的形状 theta 0:pi/20:4*pi; rho 1 theta*2; polar(theta,rho,g); title(Polar plot of 1theta*2 );玫瑰线绘制&#xff1a; theta 0:0.001:2*pi; rho cos…...

网站搬家教程/电脑零基础培训班

本节要讨论的是cmake的两个命令&#xff1a; option 和 configure_file option 选项&#xff0c;让你可以根据选项值进行条件编译。 configure_file 配置文件&#xff0c;让你可以在代码文件中使用CMake中定义的的变量* option Provides an option that the user can optionall…...

企业做的网站推广方案的步骤/nba实力榜最新排名

题目 有一个长度为 n 的序列 a1,a2,…,an&#xff0c;某些位置已经固定 (ai>0)&#xff0c;其他位置允许乱填 (ai0)。 现求一种填法&#xff0c;使得填完之后&#xff0c;序列的任意连续子串的和都是质数。换句话说&#xff0c;对于一切 1≤l≤r≤n&#xff0c;alal1⋯ar …...

邯郸做移动网站报价/优化快速排名教程

VIM 操作 vim 选中多行后批量缩进 ”shiftv“选中行使用””进行缩进 vim 全选功能 gg光标移动到首行 V进入可视模式&#xff08;visual&#xff09; G光标移动到最后一行 了解spf13 1.spf13-vim常用插件EasyMotion Vim:4th Level – Vim Superpowers 参考文献&#xff1…...

龙华民治网站建设公司/哈尔滨seo优化

电脑上的名言锁屏怎么设置的电脑键盘上的“Sleep”这个功能键的作用是&#xff0c;在你暂时不用电脑时&#xff0c;如果按Sleep键&#xff0c;电脑即进入睡眠状态&#xff1b;到要使用电脑时&#xff0c;按任意键又可唤醒电脑重新回到工作状态。如果我们设定在唤醒电脑时需要键…...