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寄存器中的状态,值等,记录到内存中,等下次进程再回到cpu上执行时,把保存的寄存器的信息再恢复回去,这样就会沿着上次执行的位置,继续往后执行。支持进程调度的重要属性,相当于游戏中的存档和读档。

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

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

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

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

4.进程的记账信息 

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

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

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

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

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

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

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

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

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

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

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

相关文章

目标检测-R-CNN

R-CNN在2014年被提出,算法流程可以概括如下: 候选区域生成:利用选择性搜索(selective search)方法找出图片中可能存在目标的候选区域(region proposal) CNN网络提取特征:对候选区域进行特征提取(可以使用AlexNet、VGG等网络) 目…

Blender 中投影仪的配置与使用

Blender 中投影仪的配置与使用 Blenderdownloadbasic Projectordownloadinstallconfigure 利用Blender中的投影仪搭建一个简单的结构光仿真系统,通过调整被测对象的材质和投影仪位姿以及投影来获得不同的渲染图像。 Blender download 在官网中下载相应安装包&…

MYSQL慢查询日志(开启慢查询配置、explain执行计划SQL优化、各个字段详解、索引失效)

大家好,我是此林。 今天来分享一下MYSQL慢查询日志记录。 目录 1. 定义 2. 开启慢查询 方法一:命令行 方法二:修改配置文件 3. explain性能分析 4. 索引失效 1. 最左前缀法则 2. 对字段做运算、字段类型不匹配 3. 模糊匹配 4. OR…

Leetcode打卡:考场就坐

执行结果:通过 题目: 855 考场就坐 在考场里,有 n 个座位排成一行,编号为 0 到 n - 1。 当学生进入考场后,他必须坐在离最近的人最远的座位上。如果有多个这样的座位,他会坐在编号最小的座位上。(另外&am…

2024.2 ACM Explainability for Large Language Models: A Survey

Explainability for Large Language Models: A Survey | ACM Transactions on Intelligent Systems and Technology 问题 可解释性问题:大语言模型(LLMs)内部机制不透明,难以理解其决策过程,如在自然语言处理任务中&…

解决“SVN无法上传或下载*.so、*.a等二进制文件“问题

今天,在使用Subversion提交代码到服务器时,发现无法提交*.a、*.so等二进制文件,右击这些文件,发现其属性为ignores。     问题原因:SVN的配置文件里,屏蔽了*.a、*.so文件的上传与下载,并把这些…

层序遍历练习

层次遍历 II 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 思路 相对于102.二叉树的层序遍历,就是最后把result数组反转一下就可以了。 C代码&…

京东大数据治理探索与实践 | 京东零售技术实践

01背景和方案 在当今的数据驱动时代,数据作为关键生产要素之一,其在商业活动中的战略价值愈加凸显,京东也不例外。 作为国内领先的电商平台,京东在数据基础设施上的投入极为巨大,涵盖数万台服务器、数 EB 级存储、数百…

【论文阅读笔记】Learning to sample

Learning to sample 前沿引言方法问题声明S-NET匹配ProgressiveNet: sampling as ordering 实验分类检索重建 结论附录 前沿 这是一篇比较经典的基于深度学习的点云下采样方法 核心创新点: 首次提出了一种学习驱动的、任务特定的点云采样方法引入了两种采样网络&…

[AIGC知识] layout理解

前言 要开组会了,随便讲个凑数吧。 参考论文 https://arxiv.org/html/2303.17189? 什么是layout数据? 像下图这样,Layout是每个图片的布局,其中包含一些物体的相应边界框和类别 layout信息如何整合表示并作为条件加入到网络…

【macos java反编译工具Java Decompiler】

mac上能用的反编译工具 https://java-decompiler.github.io/

C#+OpenCv深度学习开发(常用模型汇总)

在使用 OpenCvSharp 结合深度学习进行机器视觉开发时,有许多现成的模型可以使用。以下是一些常用的深度学习模型,适用于不同的机器视觉任务,包括物体检测、图像分类和分割等。 使用示例 在 OpenCvSharp 中加载和使用这些模型的基本示例&…

【生成模型之七】Classifier-free diffusion guidance

论文:classifier-free diffusion guidance 一、Background 分类器引导是一种最近引入的方法,用于在训练后的条件扩散模型中权衡样本丰富度和样本保真度,其思想与其他类型生成模型中的低温采样或截断相同。 分类器引导将扩散模型的分数估计…

【LeetCode每日一题】——415.字符串相加

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 字符串 二【题目难度】 简单 三【题目编号】 415.字符串相加 四【题目描述】 给定两个字符…

Why SAP TM?

最近发现跟 SAP TM 的集成越来越多了,并且发现这模块还挺大,很难一下子理解。TM(Transportation Management)- 顾名思义就是“运输管理”。起初很难想象为啥 SAP 会浪费大量的时间和精力开发“运输管理”,从而只是为了…

开源鸿蒙 5.0 正式版发布

在2024年的开放原子开发者大会上,开源鸿蒙5.0版本正式发布啦!这个版本是一个比较大的升级,性能和功能都上了一个新台阶,让我们一起来看看都有哪些亮点。 首先,开源鸿蒙这个项目,从最初的700万行代码&#x…

直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制 提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili PID模型 外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。 实验环境 【 &…

Odrive源码分析(四) 位置爬坡算法

Odrive中自带一个简单的梯形速度爬坡算法&#xff0c;本文分析下这部分代码。 代码如下&#xff1a; #include <cmath> #include "odrive_main.h" #include "utils.hpp"// A sign function where input 0 has positive sign (not 0) float sign_ha…

电视大全 1.3.8|汇聚多频道资源,秒切换流畅播放

电视大全TV版是一款功能丰富的TV端直播软件&#xff0c;由悠兔电视的同一开发者打造。最新版本更新了更多频道&#xff0c;包括央视、卫视和地方频道等&#xff0c;提供了多线路流畅播放体验&#xff0c;并支持节目回看、线路选择、开机自启等功能。该应用免登录且无购物频道&a…

JAVAweb学习日记(二)JavaScript

一、概念 二、JavaScript引入方式 三、JavaScript书写语法 输出语句&#xff1a; 变量&#xff1a; 数据类型、运算符、流程控制语句&#xff1a; 数据类型&#xff1a; 运算符&#xff1a; 字符串如果是 数字字符构成&#xff0c;先把读到的数字转为数字类型&#xff0c;后续…