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

针对java程序员的了解细节操作系统与进程

一、💛 

操作系统(浅浅概念):是用来搞管理软件的

                                           1.对下,要管理各种硬件设备

                                           2.对上,要给应用程序提供一个稳定的运行环境

二、💙

进程正在运行的程序,假如程序没有运行就不叫程序,同一个程序运行多次,假如你开了三个QQ,那也就是产生了三个进程。

我们说的程序往往是可执行文件(exe)只是硬盘中的一个静态的东西(只有你双击程序,此时操作系统,就会把可执行文件的数据和指令,加载到内存中,并且让cpu去执行这里的指令,完成一系列相关工作,运行起来(动态的)进程。

进程能够干活,说明进程能够消耗一定的资源,可执行程序只是占据了硬盘空间,而进程会消耗cpu资源,内存资源,硬盘,网路带宽。

 🌚这里我就要说一手,常常兄弟们会想一个问题,我假如下那种小电影软件 🌚,但是不安装就是玩,会不会有病毒啥的,只要他不成为进程,就没有任何问题。

♓️ 进程也是系统分配硬件资源的基本单位(如同发物资,按着一家一户这么发)

一台运行的计算机,大概率包含很多进程,一旦东西多了,就要考虑管理

在数量多的情况下:1.先描述:会使用一个结构体(C语言里面的,如同java中低配的类,没有方法啥的,操作系统主要是c/c++来实现)来记录进程里面的各个属性

这个结构体叫做PCB<-(进程控制块)💖 💖 💖 

                                    2.组织:会使用一系列数据结构(多为双向链表),把多个进程进行一个有效的组织,随时去遍历,查找,汇总数据  

一旦使用双向链表这样的方式来进行组织的时候:

(a)查看进程的链表本质就是遍历该链表

(b)创建一个进程,就是创建一个PCB结构体,并且插入到链表上。

(c)销毁一个进程,就是把这个PCB结构体从链表中删除。

三、💚

PCB中大概有哪些消息:

1.♈️PID进程的标识,同一时刻,每个进程的PID一定都是不同的(正是我们之前在MySQL使用中遇到的没有PID的文件。

2.♉️内存指针:

   表示了该进程,对应的内存资源是如何的

   内存资源中要有什么捏?-最主要存储的就是从exe可执行文件中可载过来的指令数据

指令:二进制的指令,都是程序猿开发这个程序的时候,最终编译生成的结果,也就是程序猿写的代码逻辑(进一步的再去交给cpu执行)

数据:执行的这些指令,会依赖一些数据

3.♊️文件描述表:

和硬盘资源有关了,硬盘是硬件,应用程序一般没法直接接触到硬件层 ,实际操作系统抽象成文件这样的概念,程序操作的是文件,文件实际上是存储在硬盘上的,每个进程就会有一个文件描述符来记录,当前这个进程正在使用哪些文件

也就是说 程序->文件->硬盘

操作系统打开一个文件,就会产生一个文件描述符(就像文件的身份标识一样,当然只在进程内部生效啦,)同时会使用文件描述表(类似于数组),把文件描述符组织起来。

补充:进程需要在cpu上执行指令,每个进程要是想完成任务,都要在cpu上一样执行

把进程比喻成演员,那么cpu就是表演场地,早期的cpu只有一个舞台,一个时间上只允许一个剧组在上面拍戏。

但是现在cpu 8核 16核···但是我们要处理的事务几十个,上百个

♐️并行:同一时刻两个进程,同时运行在两个cpu的逻辑核心上

♒️并发:两个进程,在同一个舞台上,轮着上,由于cpu切换进程极快,围观上,这俩进程串行执行的,宏观上,看起来,他俩就是同时进行的~

操作系统,在调度这些进程的时候,可能是按照并行的方式来调度,也可能是按照并发的方式来调度,~在应用程序这一层,感知不到的! (系统中内核能感知到)

由于感知不到哪种方式调度,这两种调度方式,宏观上体现效果都是一样的,通常用并发代替并发和并行(面试官说啥是啥,舔就完事了)

4. ♋️PCB中关于进程调度相关的属性(这些属性也就描述了进程对应的cpu资源使用情况)

(1)♌️状态  就绪状态—— 一个进程已经随时做好在cpu上执行的准备,)

                    阻塞状态/睡眠状态: 因为某些原因无法准备中。

状态之间都是相互转化的,实际上进程的状态有很多种,但是这两种事最重要的。 

(2)♍️优先级

系统给进程进行调度的时候,也不完全是公平的,也会根据优先级不同,来决定时间分配的权衡,就可以把系统资源调配给更重要的进程上了。(例子:有钱>帅>舔)

(3)♎️ 上下文

这些进程是轮着上的,一次运行不完,就需要保证下次cpu运行的时候,能够从上次运行到的位置,继续往后运行。(游戏存档,读档)

(4)♏️记账信息:相当于统计信息

  会统计每个进程,在cpu上执行了多久,执行了多少指令了,是对于进程调度的一个兜底。

 上述这些属性,主要是有一个直观认识->认识进程调度大概是怎样的,后续编码有一定影响,每个进程,都需要一定的内存资源。


 

 

按照上述直接分配物理内存的模型,此时假如一个指针越界指向其他位置,很可能会影响别的进程的执行,非常影响系统的稳定性。

后来操作系统引入了“虚拟地址空间”这样的概念,有效解决上述的问题 

⛎ 虚拟地址,并非物理内存中真实存在的地址,而只是在该进程内存在不同的进程,可以存相同的虚拟地址,但实际上对应得到的是不同的物理地址,虚拟地址和物理地址,操作系统可以灵活切换

 

 

🔯这样的设定之后,每个进程的有效的虚拟地址都是固定范围,进程使用虚拟地址的内存,都需要操作系统进行转换成物理地址,这个转换的过程中,就可以针对虚拟地址是否有效,做出校验

虚拟地址,和物理地址的区别就像是

1班有王强

2班有王强,区分这两个王强,要是区分就要看,年纪花名册(物理地址呗)

虚拟空间的加持下,进程有了独立性,每个进程有自己的虚拟空间->一个进程无法直接访问,或者修改其他进程,虚拟空间,独化了系统的独立性,

假如也要进程之间产生写配合,联系

进程间通信(进程隔离性的基础上,开个口子有限制的相互影响),在进程隔离之间开个口,本质相同,找一个公共区域(就像是做小区核酸,)借助公共区域来完成数据的交换

(以后介绍,本章先到这里)

最近会更新一些基本的知识,和算法,打算冲一下蓝桥杯加油啦

相关文章:

针对java程序员的了解细节操作系统与进程

一、&#x1f49b; 操作系统&#xff08;浅浅概念&#xff09;&#xff1a;是用来搞管理软件的 1.对下,要管理各种硬件设备 2.对上,要给应用程序提供一个稳定的运行环境 二、&#x1f499; 进程&#xff1a;正在运行的程序&#xff0c;假如程序没有运行就不叫程序&#xff0c;…...

判定是否互为字符重排、回文排列

题1&#xff1a;判定是否互为字符重排 给定两个由小写字母组成的字符串 s1 和 s2&#xff0c;请编写一个程序&#xff0c;确定其中一个字符串的字符重新排列后&#xff0c;能否变成另一个字符串。 输入: s1 "abc", s2 "bca" 输出: true 输入: s1 &quo…...

QT QTextCharFormat 说明和使用

QTextCharFormat&#xff1a;设置文本编辑框字体&#xff0c;字号&#xff0c;加粗&#xff0c;倾斜&#xff0c;下划线&#xff0c;颜色 QTextCharFormat 类的一些常用属性和方法&#xff1a; setFont(const QFont &font): 设置字体。 setFontFamily(const QString &a…...

掌握Memory Profiler技巧:识别内存问题

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、如何使用四、页面说明4.1 Java 和 Kotlin 分配…...

Linux学习之正则表达式元字符和grep命令

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64。 正则表达式是一种搜索字符串的模式&#xff0c;通俗点理解&#xff0c;也就是普通字符和元字符共同组成的字符集合匹…...

熟练掌握ChatGPT解决复杂问题——学会提问

目录 引言 一、5W1H分析法 1. 简单的问题&#xff08;what、where、when、who&#xff09; 2.复杂的问题&#xff08;why、how&#xff09; 2.1 为什么&#xff08;Why&#xff09;——原因 2.2 方式 &#xff08;How&#xff09;——如何 二、如何提问得到更高质量的答案…...

JVM之类加载与字节码

1.类文件结构 一个简单的HelloWorld.Java package cn.itcast.jvm.t5; // HelloWorld 示例 public class HelloWorld { public static void main(String[] args) { System.out.println("hello world"); } }编译为 HelloWorld.class 后的样子如下所示&#xff1a; […...

【博客688】如何实现keepalived vip监控与告警

如何实现keepalived vip监控与告警 1、使用的exporter https://github.com/mehdy/keepalived-exporter2、metrics里的状态的具体含义 注意&#xff1a;存状态的字符串的每个状态的值其实是跟状态在数组中的索引相对应的 具体参考这里&#xff1a; https://github.com/mehdy…...

[QT编程系列-39]:用户界面UI - 样式表QSS与样式文件快速入门

目录 1. 概述 2. CSS 3. QSS示例 4. QT样式表文件使用方法与步骤 5. QT内置样式 6. QT常见基本样式 1. 概述 Qt提供了一种称为Qt样式表&#xff08;Qt Style Sheets&#xff09;的机制&#xff0c;可以用于自定义和美化Qt应用程序的用户界面&#xff08;UI&#xff09;。…...

机器学习和深度学习简述

一、人工智能、机器学习、深度学习的关系 近些年人工智能、机器学习和深度学习的概念十分火热&#xff0c;但很多从业者却很难说清它们之间的关系&#xff0c;外行人更是雾里看花。概括来说&#xff0c;人工智能、机器学习和深度学习覆盖的技术范畴是逐层递减的&#xff0c;三…...

diffusion model2 扩散模型的文本信息融合、交叉注意力机制、lora

前言 在上一篇文章中&#xff0c;我们剖析了diffusion model的原理&#xff0c;而在这一篇文章中&#xff0c;我们探讨与扩散模型有关的其他话题&#xff0c;包括扩散模型的unet是如何在推理噪声的过程中&#xff0c;融入文本信息的考量&#xff1f;其原理为交叉注意力机制&am…...

数据结构——二叉树

本章代码仓库&#xff1a;堆、二叉树链式结构 文章目录 &#x1f36d;1. 树&#x1f9c1;1.1 树的概念&#x1f9c1;1.2 树的结构 &#x1f36c;2. 二叉树&#x1f36b;2.1 二叉树的概念&#x1f36b;2.2 特殊的二叉树&#x1f36b;2.3 二叉树的性质&#x1f36b;2.4 二叉树的存…...

架构训练营学习笔记:5-3接口高可用

序 架构决定系统质量上限&#xff0c;代码决定系统质量下限&#xff0c;本节课串一下常见应对措施的框架&#xff0c;细节不太多&#xff0c;侧重对于技术本质有深入了解。 接口高可用整体框架 雪崩效应&#xff1a;请求量超过系统处理能力后导致系统性能螺旋快速下降 链式…...

【笔记】湖仓一体架构演进与发展

https://www.bilibili.com/video/BV1oF411F7rQ/?spm_id_from333.788.recommend_more_video.0&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf...

政务云建设与应用解决方案[42页PPT]

导读&#xff1a;原文《政务云建设与应用解决方案[42页PPT]》&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完…...

20天突破英语四级高频词汇——第①天

2&#xfeff;0天突破英语四级高频词汇~第一天加油(ง •_•)ง&#x1f4aa; &#x1f433;博主&#xff1a;命运之光 &#x1f308;专栏&#xff1a;英语四级高频词汇速记 &#x1f30c;博主的其他文章&#xff1a;点击进入博主的主页 目录 2&#xfeff;0天突破英语四级…...

【网络基础实战之路】基于MGRE多点协议的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…...

K8s实战入门(三)

文章目录 3. 实战入门3.1 Namespace3.1.1 测试两个不同的名称空间之间的 Pod 是否连通性 3.2 Pod3.3 Label3.4 Deployment3.5 Service 3. 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务&#xff0c;并且能够对其进行访问。 3.1 Namespace Namespace是kuber…...

Linux-centos花生壳实现内网穿透

Linux-centos花生壳实现内网穿透 官网教程 1.安装花生壳 下载网址 点击复制就可以复制下载命令了 wget "https://dl.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm" -O phddns_5.2.0_amd64.rpm# 下载完成之后会多一个rpm文件 [rootlocalhost HuaSheng]# ls phddns_…...

Jackson类层次结构中的一些应用(Inheritance with Jackson)

Have a look at working with class hierarchies in Jackson. 如何在Jackson中使用类层次结构。 Inclusion of Subtype Information There are two ways to add type information when serializing and deserializing data objects, namely global default typing and per-cl…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...