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

javaEE--计算机是如何工作的-1

目录

一.计算机的组成:

各组件的功能:

衡量cpu好坏的标准:

二.指令(instruction)

三.操作系统Operating System

四.进程/任务process/tesk

五.进程在系统中如何管理

1.进程在系统中的管理,从两个角度来分类:

2.进程控制块PCB(Process Control Block))

3.PCB的属性

(1).pid:进程的身份标识

(2).内存指针:进程持有的内存资源

(3).文件描述符表:进程持有的硬件资源

六.进程调度

1.单任务操作系统

2.分时复用

3.并发

4.并行

七.PCB中的属性

1.进程的状态

2.进程的优先级

3.进程的上下文

4.进程的记账信息 

八.内存分配(内存管理)(Memory Manege)

九.进程间通信(Inter process communication)



一.计算机的组成:

cup 存储器 输入设备 输出设备

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

各组件的功能:

能和cpu相提并论的:氢弹...

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

针对存储速度:cpu>内存>硬盘

衡量cpu好坏的标准:

1.主频:可以理解成1秒钟,cpu可以执行多少条指令(19亿条).

现在的主频都在时时刻刻变化着,根据当前的负载程度,动态变化着

2.核心数:一个能完成完整计算机的整体,有很多的计算单元构成

最开始的cpu都是单核的,随着集成度的提高,cpu速度的提高,发现越来越难,

之后就出现了多核cpu:1核,2核,4核,8核....128核...

二.指令(instruction)

所谓指令,即指导CPU进⾏⼯作的命令,主要有操作码+被操作数组成。

cpu上能够执行任务的最小单元

指令表:

一个cpu在设计的时候,就会提供一些可以进行的操作(一些指令)

(你给cpu发布一个任务,就需要把每一步的细节都告诉他,他才能去执行)

三.操作系统Operating System

操作系统是⼀组做计算机资源管理的软件的统称。

⽬前常⻅的操作系统有:Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等

这些操作系统,本质上都是一些软件,功能是用来管理的:对下管理所有的硬件设备,对上给软件提供稳定的运行环境

操作系统的定位:

对硬件的管理:

对软件的管理:

一个操作系统包含内核和配套的应用程序,内核是操作系统最核心的功能,硬件的驱动程序,都是在系统内核中执行的,内核需要给很多应用程序提供支持

四.进程/任务process/tesk

操作系统内核中涉及到很多核心的概念,进程就是其中的一个

一个已经跑起来的程序,就叫进程

这些都是进程:

每个进程都是系统资源分配的基本单位(就好比疫情期间的社会就好比系统资源,每个家庭就是一个进程,社会以家庭为单位分配食物,就是系统为每个进程分配资源)

五.进程在系统中如何管理

提到管理,只有某个东西很多,内容很复杂,才需要管理.

(就好比一个公司,规模小时,只有几个人,就不需要管理,当达到一定的规模时,就需要将每个员工,需要完成的工作...,管理起来)

1.进程在系统中的管理,从两个角度来分类:

1.描述:使用类/结构体,将要管理的对象 的各个属性都表示出来

2.组织:使用数据结构,把这些表示出来的对象 都串联起来(便于后面的增删查改)

2.进程控制块PCB(Process Control Block))

系统中有一个专门的结构体,用来描述进程的属性,这个结构体就称为"进程控制块"PCB.

使用PCB来描述进程的属性,一个进程可以用一个或对个PCB来表示.

创建新进程就是把PCB插入到链表中,

删除进程,就是把PCB从链表中删除并释放,

展示进程列表,就是遍历链表的每个节点

3.PCB的属性

要想更详细的了解进程,就要熟悉PCB里面的属性

(1).pid:进程的身份标识

每个进程都会有一个pid,同一时刻,不同进程之间的pid不同

(2).内存指针:进程持有的内存资源

每个进程在运行的时候,都会分配一定的内存空间,这个进程的内存空间在哪里,是怎么分配的,具体执行什么任务,都是用一组内存指针来进行分配的

要执行的指令:用C语言写的一些代码=>exe文件(包含一些二进制指令)

(3).文件描述符表:进程持有的硬件资源

有很多元素,和文件有关,类似于数据结构中的顺序表这样的结构,和硬盘有关

一个进程也需要涉及到硬盘相关的操作,需要按照文件的方式来操作,当前进程涉及到哪些文件,需要操作哪些文件,就是通过文件描述符表来管理的.

六.进程调度

进程持有的cpu资源是如何体现的?就是通过进程调度

1.单任务操作系统

早期的操作系统,是"单任务操作系统":同一时刻,至有一个进程能运行,要想运行别的进程,只有先退出该进程,才能运行下一个进程.

单任务操作系统就好比演员上台表演,cpu就是舞台,进程就是演员.只有一个舞台,别的演员要想表演,正在舞台上表演的演员要要下台才行

2.分时复用

每个进程轮流进行操作.

3.并发

指系统能够同时处理多个任务的能力。它是一种逻辑上的概念,表示在一段时间内,多个任务都在执行,但并不一定是同时进行的。在并发中,任务按照某种调度策略交替执行,通过时间片轮转或事件驱动等方式来实现任务的切换。并发的目的是提高系统的吞吐量和响应性,以更好地处理多个任务。

4.并行

并行是指系统中同时执行多个任务的能力。它是一种物理上的概念,表示多个任务可以在不同的处理器、核心或计算资源上同时执行。在并行中,任务可以并行地执行,相互之间无需等待。并行的目的是通过同时执行多个任务来加速处理速度,提高系统的计算能力和效率。

平时使用"并发"来代替"并行"和"并发"

七.PCB中的属性

这些属性用来完成进程的调度

1.进程的状态

就绪状态:进程随时准备好,等着去cpu上执行,分为两种情况:

        1.进程正在cpu上执行

        2.进程未在cpu上执行,但时刻准备着去cpu上执行

阻塞状态:某个进程不具备随时上cpu上执行的条件,就是阻塞状态

进程还有很多状态....

2.进程的优先级

多个进程等待cpu的调用,每个进程被调用的机率并不是军等的,

先调度谁,调度多长时间,都是可以调配的,这就是进程的优先级(可以通过系统的api设置)

3.进程的上下文

进程上下文实际上是进程执行活动全过程的静态描述.支持进程调度的重要属性,相当于游戏中的存档和读档

存档:在进程调度出cpu之前,把当前寄存器中的信息单独保存到一个地方

读档:在该进程下次去cpu上执行的时候,把这些寄存器上的信息再恢复回来

把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文,把正在执行的指令和数据在寄存器和堆栈中的内容称为正文,把待执行的指令和数据在寄存器与堆栈中的内容称为下文

具体的说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如通用寄存器,程序计数器PC,程序状态字寄存器PS等)的值,程序段在经过编译过后形成的机器指令代码集,数据集及各种堆栈值PCB结构。

4.进程的记账信息 

针对每个进程,占用了多长时间的cpu,会进行一个统计,根据统计,进一步调整下一步cpu的调度策略.

八.内存分配(内存管理)(Memory Manege)

这里涉及到的内存分配是非常复杂的,简单的说,就是每个进程的内存.是相互独立,互不干扰的.

通常情况下,进程A是不能直接访问进程B的内存的.

这称为进程间的"独立性".

九.进程间通信(Inter process communication)

虽然进程之间是相互独立的,但有的时候也需要几个进程相互合作,共同完成某个任务,此时就涉及到进程间通信.

进程间的独立性和进程间通信并不冲突,系统会提供一些公共空间,(多个进程都可以访问这些公共空间),让对个进程通过公共空间来交换数据.

进程间通信有很多种方法:

相关文章:

javaEE--计算机是如何工作的-1

目录 一.计算机的组成: 各组件的功能: 衡量cpu好坏的标准: 二.指令(instruction) 三.操作系统Operating System 四.进程/任务process/tesk 五.进程在系统中如何管理 1.进程在系统中的管理,从两个角度来分类: 2.进程控制块PCB(Process Control Block)) 3.P…...

vue.js 指令的修饰符

Vue.js 提供了一些指令修饰符,用于在指令的行为上添加额外的功能。下面详细解析一些常用的指令修饰符,并提供相应的代码实例。 .prevent:阻止默认事件 通过添加 .prevent 修饰符,可以阻止指令绑定的元素触发默认事件。 代码实例&a…...

基于java web在线商城购物系统源码+论文

一、环境信息 开发语言:JAVA JDK版本:JDK8及以上 数据库:MySql5.6及以上 Maven版本:任意版本 操作系统:Windows、macOS 开发工具:Idea、Eclipse、MyEclipse 开发框架:SpringbootHTMLjQueryMysq…...

Autosar入门_架构(Architecture)

上一篇 | 返回主目录 | 下一篇 架构(Architecture) 1 Autosar架构分层概述2 MCAL3 ECU抽象层4 复杂设备驱动5 服务层6 RTE7 应用软件层1 Autosar架构分层概述 整体架构分为三层:应用软件(APP)、实时运行环境(RTE)、基础软件(BSW)以下架构对BSW进行了细化,主要包含四…...

Altair: 轻松创建交互式数据可视化

Altair: 轻松创建交互式数据可视化 Altair 是一个基于 Vega-Lite 的 Python 数据可视化库,它旨在简化数据可视化的创建过程,尤其适用于统计图表的生成。Altair 强调声明式编码方式,通过简单的语法,用户能够快速创建复杂的交互式图…...

APM32F411使用IIS外设驱动es8388实现自录自播

前言: 从零开始学习I2s外设,配置Es8288寄存器实现录音播放。本文章使用主控芯片是APM32F411系类。音频相关的概念比较多,就不再次做过多的介绍,本文章只是简单实现边录边播功能。APM系类兼容st的芯片,所以用st的hal库来…...

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…...

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津&#xff0c;难得的面试机会也难以把握&#xff0c;即便成功入职&#xff0c;也往往难以长久。于是&#xff0c;不少程序员感叹&#xff1a;互联网的寒冬似乎又一次卷土重来&#xff0c;环境如此恶劣&…...

【线性代数】理解矩阵乘法的意义(点乘)

刚接触线性代数时&#xff0c;很不理解矩阵乘法的计算规则&#xff0c;为什么规则定义的看起来那么有规律却又莫名其妙&#xff0c;现在参考了一些资料&#xff0c;回过头重新总结下个人对矩阵乘法的理解&#xff08;严格来说是点乘&#xff09;。 理解矩阵和矩阵的乘法&#x…...

游戏开发技能系统常用概念

一个角色同一时间可能存在多个Skill&#xff0c;一个当前播放的主动技能&#xff0c;还有好几个不在播放中&#xff0c;但是也没有结束的。 技能事件&#xff1a; 实现具体的技能功能&#xff0c;技能动作的执行都是通过触发事件来触发的&#xff0c;比如&#xff08;时间帧&am…...

【案例80】麒麟操作系统无法使用Uclient访问NC65

问题现象 麒麟操作系统&#xff0c;安装Uclient&#xff0c;添加应用后无法看到登录界面&#xff0c;一直在转圈。 问题分析 进入到Uclient的工作目录 发现在工作目录下&#xff0c;无相关app.log生成。 查看Uclient的main.log发现&#xff0c;有大量的报错与Uclient下的sha…...

【AIGC-ChatGPT进阶副业提示词】育儿锦囊:化解日常育儿难题的实用指南

引言 在育儿的道路上&#xff0c;每位父母都会遇到各种各样的挑战和困惑。从孩子的饮食习惯到沟通交流&#xff0c;从作息规律到行为管理&#xff0c;这些看似平常的问题往往会让父母感到焦虑和无助。本文将通过实际案例分析和解决方案&#xff0c;为父母们提供一个实用的育儿…...

使用Docker部署一个Node.js项目

本文档将介绍如何使用Docker来部署一个Node.js项目。Docker是一种开源平台&#xff0c;可以自动化应用程序的部署、扩展和管理。通过Docker&#xff0c;我们可以将应用程序及其依赖项打包到一个容器中&#xff0c;从而确保在不同环境中运行的一致性。接下来&#xff0c;我们将逐…...

数据科学与SQL:如何利用本福特法则识别财务数据造假?

目录 0 本福特法则介绍 1 数据准备 2 问题分析 步骤1:提取首位数: 步骤2:计算首位数字的实际频率分布 <...

文心一言对接FreeSWITCH实现大模型呼叫中心

文心一言对接FreeSWITCH实现大模型呼叫中心 作者&#xff1a;开源大模型智能呼叫中心FreeIPCC&#xff0c;Github&#xff1a;https://github.com/lihaiya/freeipcc 随着人工智能技术的快速发展&#xff0c;特别是大规模语言模型&#xff08;LLM&#xff09;的应用&#xff0…...

LSTM实现天气模型训练与预测

要实现一个天气预测的模型&#xff0c;并确保该模型可以反复进行训练和更新&#xff0c;先设计&#xff1a; 设计方案 数据获取&#xff1a; 使用公开的天气数据API&#xff08;例如OpenWeather API或其他类似的API&#xff09;获取天气数据。确保数据以合适的格式&#xff08…...

TCL发布万象分区,再造Mini LED技术天花板

作者 |辰纹 来源 | 洞见新研社 现实世界中&#xff0c;光通过悬浮在大气中的冰晶折射&#xff0c;呈现出环形、弧形、柱形或亮点的扩散&#xff0c;从而产生光晕&#xff0c;雨后的彩虹是我们经常能看到的光晕现象。 然而&#xff0c;当光晕出现在电视中&#xff0c;那就不是…...

2024广东省职业技能大赛云计算——私有云(OpenStack)平台搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…...

简单了解图注意力机制

简单了解图注意力机制 如果对传统的图匹配的聚合方式进行创新的话&#xff0c;也就是对h这一个节点的聚合方式进行创新。 h i ( l 1 ) Norm ⁡ ( σ ( h i ( l ) α ∥ h i ( l ) ∥ m i ( l ) ∥ m i ( l ) ∥ ) ) , \mathbf{h}_{i}^{(l1)}\operatorname{Norm}\left(\sigm…...

UI Automator Viewer操作

版本&#xff1a;24.4.1 使用UI Automator Viewer报错如下&#xff1a; Error obtaining Ul hierarchy Reason: Error while obtaining Ul hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesnt exist!可以使用指令&#xff1a; 保存uix文件 adb sh…...

SpringBoot的创建方式

SpringBoot创建的五种方式 1.通过Springboot官网链接下载 注意SpringBoot项目的封装方式默认为Jar 需要查看一下&#xff0c;自己的Maven版本是否正确 创建成功 2.通过 aliyun官网链接下载 修改服务路径为阿里云链接 创建成功 3.通过Springboot官网下载 点击&#xff0c;拉到最…...

Vue3之性能优化

Vue3作为Vue框架的最新版本&#xff0c;在性能上进行了大量的优化&#xff0c;使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例&#xff0c;并结合具体代码和性能测试数据&#xff0c;展示Vue3在实际应用中的性能优势…...

RFdiffusion Sampler类 sample_step 方法解读

Sampler类的sample_step 方法的主要目的是根据扩散模型的预测生成在时间步 t-1 上的下一个三维结构、序列和其他相关特征。这是扩散采样过程的核心步骤之一。 源代码: def sample_step(self, *, t, x_t, seq_init, final_step):Generate the next pose that the model should…...

Flutter组件————FloatingActionButton

FloatingActionButton 是Flutter中的一个组件&#xff0c;通常用于显示一个圆形的按钮&#xff0c;它悬浮在内容之上&#xff0c;旨在吸引用户的注意力&#xff0c;并代表屏幕上的主要动作。这种按钮是Material Design的一部分&#xff0c;通常放置在页面的右下角&#xff0c;但…...

算法学习(十六)—— 综合练习

目录 1863. 找出所有子集的异或总和再求和 47. 全排列 Ⅱ 17. 电话号码的字母组合 22. 括号生成 77. 组合 494. 目标和 39. 组合总和 784. 字母大小写全排列 526. 优美的排列 51. N皇后 36. 有效的数独 37. 解数独 79. 单词搜索 1219. 黄金矿工 980. 不同路径 Ⅲ…...

kratos源码分析:熔断器

文章目录 为什么需要熔断Google sre弹性熔断算法kratos Breaker源码分析公共接口sre实现上报请求结果判定是否熔断 为什么需要熔断 一般来说&#xff0c;当服务器过载&#xff08;overload&#xff09;时&#xff0c;需要给client返回服务过载的报错 但是拒接请求也有成本&…...

CTF_1

CTF_Show 萌新赛 1.签到题 <?php if(isset($_GET[url])){system("curl https://".$_GET[url].".ctf.show"); }else{show_source(__FILE__); }?> 和 AI 一起分析 1.if(isset($_GET[url]))检查GET请求中是否存在名为url的参数。 curl 2.curl…...

【系统】Mac crontab 无法退出编辑模式问题

【系统】Mac crontab 无法退出编辑模式问题 背景一、问题回答1.定位原因&#xff1a;2.确认编辑器类型3.确保编辑器进入正确3.1 确认是否有crontab调度任务3.2 进入编辑器并确保编辑器正常3.3 保存操作 4.确认crontab任务存在5.确保脚本的可执行性和正确性 二、后续 背景 之前…...

K8s中 statefulset 和deployment的区别

在 Kubernetes 中&#xff0c;StatefulSet 和 Deployment 是两种管理 Pod 的控制器&#xff0c;它们的主要区别在于 状态管理 和 Pod 的标识。以下是详细对比&#xff1a; 1. 功能定位 Deployment 用途&#xff1a;用于 无状态应用 的部署&#xff0c;例如 Web 服务、API 服务…...

springboot中的AOP以及面向切面编程思想

快速入门体验AOP aop中相关概念 实现导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> 新建aop文件夹,里面声明XXXAspect类 @Aspect // 声…...