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)

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

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

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

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

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

相关文章

WPF+MVVM案例实战与特效(四十五)- 打造优雅交互:ListBox 的高级定制与行为触发(侧边菜单交互面板)

文章目录 1、引言2、案例效果3、案例实现1、依赖安装2、文件创建3、代码实现1、依赖引用与上下文2、个性化视觉效果:自定义 ItemContainerStyle3、页面样式与布局完整代码4、ViewModel 逻辑实现5、子界面代码:3、实现效果4、源代码获取5、总结1、引言 在WPF应用程序开发中,…

[react 3种方法] 获取ant组件ref用ts如何定义?

获取ant的轮播图组件, 我用ts如何定义? Strongly Type useRef with ElementRef | Total TypeScript import React, { ElementRef } from react; const lunboRef useRef<ElementRef<typeof Carousel>>(null); <Carousel autoplay ref{lunboRef}> 这样就…

nest 学习3

学习小册(nest通关秘籍) 邮箱验证码登陆 流程图&#xff1a; 邮箱作为key&#xff0c;生成随机验证码&#xff0c;然后放到redis中。调用邮箱api发送邮箱。 前端获取到code后&#xff0c;将验证码输入传给后端&#xff0c;后端根据邮箱取出redis数据&#xff0c;比对验证码&…

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类

Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…

VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)

名人说&#xff1a;一点浩然气&#xff0c;千里快哉风。—— 苏轼《水调歌头》 创作者&#xff1a;Code_流苏(CSDN) 目录 一、Python环境安装二、VScode下载及安装三、VSCode配置Python环境四、运行测试五、背景图设置 很高兴你打开了这篇博客&#xff0c;更多详细的安装教程&…

Deformable DETR:Deformable Transformers for End-to-End Object Detection论文学习

1. 为什么提出了Deformable DETR&#xff1f; 因为DETR本身的计算量大&#xff0c;收敛速度慢。其次是小目标检测效果差。主要原因是Attention模块每次只关注一小部分采样点&#xff0c;导致需要很多轮数才能学习到真实需要关注的目标。 Deformable DETR注意力模块只关注一个…

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改 目录 Opencv实现对图片的处理和修改灰度图读取灰度图转换灰度图 RBG图单通道图方法一方法二 单通道图显色合并单通道图 图片截取图片打码图片组合缩放格式1格式2 图像运算图像ma[m:n,x:y]b[m1:n1,x1:y1] add加权运算 灰度图 读取灰度图 imread(‘…

D102【python 接口自动化学习】- pytest进阶之fixture用法

day102 pytest的usefixtures方法 学习日期&#xff1a;20241219 学习目标&#xff1a;pytest基础用法 -- pytest的usefixtures方法 学习笔记&#xff1a; fixture调用方法 实际应用 总结 pytest.mark.usefixtures(func)&#xff0c;pytest的usefixtures方法&#xff0c;无…

LGMRec:结合局部与全局图学习的多模态推荐系统

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月23日10点0分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文源地址(有视频)&#xff1a;Aspiri…

制造研发企业与IPD管理体系

芯片/半导体/制造研发型企业&#xff0c;大都知道华为使用过的IPD管理体系&#xff0c;但大家用到什么程度&#xff0c;那就是参差不齐了。 因为IPD管理体系它只是一个管理理念&#xff0c;是一个方法论。它需要有相应的组织架构来承载&#xff0c;它有很复杂的流程需要有IT系统…

esp8266_TFTST7735语音识别UI界面虚拟小助手

文章目录 一 实现思路1 项目简介1.1 项目效果1.2 实现方式 2 项目构成2.1 软硬件环境2.2 完整流程总结&#xff08;重点整合&#xff09;(1) 功能逻辑图(2) 接线(3) 使用esp8266控制TFT屏(4)TFT_espI库配置方法(5) TFT_esp库常用代码详解(6)TFT屏显示图片(7) TFT屏显示汉字(8) …

基于Springboot + vue实现的汽车资讯网站

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

取多个集合的交集

1.我们取多个集合的交集&#xff0c;先把各个集合放入list中 List < Set < String > > listnew ArrayList<>();HashSet<String> set1new HashSet<>();set1.add( "A" );set1.add("B" );set1.add("C" );HashSet<…

一篇文章学会HTML

目录 页面结构 网页基本标签 图像标签 超链接标签 文本链接 图像链接 锚链接 功能链接 列表 有序列表 无序列表 自定义列表 表格 跨列/跨行 表头 媒体元素 视频 音频 网站的嵌套 表单 表单元素 文本框 单选框 多选框 按钮 下拉框 文本域和文件域 表…

Leetcode-208. 实现Trie(前缀树)

前缀树是一个由“路径”和“节点”组成多叉树结构。由根节点出发&#xff0c;按照存储字符串的每个字符&#xff0c;创建对应字符路径&#xff0c;以此实现快速查找单词或是否为前缀的功能。 此题要求简单&#xff0c;只需实现下面几种功能&#xff1a; Trie() 初始化前缀树对…

Java - 日志体系_Apache Commons Logging(JCL)日志接口库

文章目录 官网1. 什么是JCL&#xff1f;2. JCL的主要特点3. JCL的核心组件4. JCL的实现机制5. SimpleLog 简介6. CodeExample 1 &#xff1a; 默认日志实现 (JCL 1.3.2版本)Example 2 &#xff1a; JCL (1.2版本&#xff09; Log4J 【安全风险高&#xff0c;请勿使用】 7. 使用…

电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!

电脑运行时常见问题及解决方案&#xff1a;文件丢失、文件损坏与系统报错 作为一名软件开发从业者&#xff0c;深知电脑在日常使用中难免会遇到各种问题&#xff0c;如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率&#xff0c;还可能带来数据丢失的风险。今天&a…

本地摄像头视频流在html中打开

1.准备ffmpeg 和(rtsp-simple-server srs搭建流媒体服务器)视频服务器. 2.解压视频流服务器修改配置文件mediamtx.yml ,hlsAlwaysRemux: yes 3.双击运行服务器。 4&#xff0c;安装ffmpeg ,添加到环境变量。 5.查询本机设备列表 ffmpeg -list_devices true -f dshow -i d…

使用Vue+Django开发的旅游路书应用

基于Django设计的低代码后端框架调用高德地图接口实现定位搜索、路线规划等功能 体验地址

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆角矩形实现&#xff0c;Kotlin&#xff08;1&#xff09; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res…