当前位置: 首页 > 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…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...