针对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班有王强,区分这两个王强,要是区分就要看,年纪花名册(物理地址呗)

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

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

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

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

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

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

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

相关文章

【java安全】CommonsBeanUtils1

文章目录 【java安全】CommonsBeanUtils1前言Apache Commons BeanutilsBeanComparator如何调用BeanComparator#compare()方法&#xff1f;构造POC完整POC 调用链 【java安全】CommonsBeanUtils1 前言 在之前我们学习了java.util.PriorityQueue&#xff0c;它是java中的一个优…

echarts-pie---------3D曲状环形饼图实现!!!

示例&#xff08;参考此处饼图修改https://www.isqqw.com/viewer?id37497&#xff09; 话不多说直接上代码 此套代码可以直接再echarts官网中的此处运行 let selectedIndex ; let hoveredIndex ; option getPie3D([{name: 数学,value: 60,itemStyle: {color: #1890FF,},},{…

JVM入门到精通

一、JVM概念 1.1、什么是JVM Java Virtual Machine&#xff1a;Java虚拟机&#xff0c;用来保证Java语言跨平台 Java虚拟机可以看做是一台抽象的计算机&#xff0c;如同真实的计算机那样&#xff0c;它有自己的指令集以及各种运行时内存区域 Java虚拟机与Java语言并没有必然…

替代LT8711龙讯替代RTD2172 CS5265中文规格书4K60HZ转接线 设计Type-C转HDMI2.0高清投屏方案

龙迅LT8711是一款Type-C/DP1.2 to HDMI2.0方案芯片&#xff0c;北京集睿致远&#xff08;ASL&#xff09;推出的CS5265可以完全代替LT8711UX&#xff0c;封装尺寸比LT8711UX小的同时&#xff0c;CS5265的芯片集成度高&#xff0c;内置MCU&#xff0c;内置lLDO等&#xff0c;CS5…

并查集模板-两个操作:合并集合和查询两个元素是否属于同一个集合

一、链接 836. 合并集合 二、题目 一共有 nn 个数&#xff0c;编号是 1∼n1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 mm 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 aa 和 bb 的两个数所在的集合合并&#xff0c;如果两个数…

Vue [Day3]

Vue生命周期 生命周期四个阶段 生命周期函数&#xff08;钩子函数&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale…

Redis 如何解决缓存雪崩、缓存击穿、缓存穿透难题

前言 Redis 作为一门热门的缓存技术&#xff0c;引入了缓存层&#xff0c;就会有缓存异常的三个问题&#xff0c;分别是缓存击穿、缓存穿透、缓存雪崩。我们用本篇文章来讲解下如何解决&#xff01; 缓存击穿 缓存击穿: 指的是缓存中的某个热点数据过期了&#xff0c;但是此…

GO语言基础语法探究:简洁高效的编程之道

文章目录 前言Go词法单元token标识符关键字&#xff08; 25个 &#xff09;内置数据类型标识符&#xff08; 20个 &#xff09;内置函数&#xff08; 15个 &#xff09;常量值标识符&#xff08; 4个&#xff09;空白标识符&#xff08; 1个 &#xff09; 操作符和分隔符字面常…

【单片机】51单片机串口的收发实验,串口程序

这段代码是使用C语言编写的用于8051单片机的串口通信程序。它实现了以下功能&#xff1a; 引入必要的头文件&#xff0c;包括reg52.h、intrins.h、string.h、stdio.h和stdlib.h。 定义了常量FSOC和BAUD&#xff0c;分别表示系统时钟频率和波特率。 定义了一个发送数据的函数…

春秋云镜 CVE-2020-26048

春秋云镜 CVE-2020-26048 CuppaCMS 任意文件上传 靶标介绍 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自…

区块链媒体发稿:区块链媒体宣发常见问题解析

据统计&#xff0c;由于区块链应用和虚拟货币的兴起&#xff0c;越来越多媒体对区块链领域开展报导&#xff0c;特别是世界各国媒体宣发全是热火朝天。但是&#xff0c;随着推卸责任媒体宣发的五花八门&#xff0c;让很多人因而上当受骗&#xff0c;乃至伤害一大笔资产。身为投…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前数据吞吐量(C#)

Baumer工业相机堡盟工业相机如何通过BGAPISDK里函数来获取相机当前数据吞吐量&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在BGAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过BGAPI SDK获取…

基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ................................................................ % 设置训练选项options …

【FAQ】EasyGBS平台通道显示在线,视频无法播放并报错400的排查

EasyGBS是基于国标GB28181协议的视频云服务平台&#xff0c;它可以支持国标协议的设备接入&#xff0c;在视频能力上能实现直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能&#xff0c;既能作为业务平台使用&#xff0c;也能作为能力层平台调用。 我…

uniapp引入inconfont

app,h5端引入 uniapp本身的全局设置中有个iconfontsrc属性 所以只需要 1.iconfont将需要的icon添加至项目 2.下载到本地解压后,将其中的ttf文件,放在static静态目录下 3.在page.json中对全局文件进行配置tabBar(导航图标) “iconfontSrc”: “static/font/iconfont.ttf”, …

【Linux】【docker】安装sonarQube免费社区版9.9

文章目录 ⛺sonarQube 镜像容器⛺Linux 安装镜像&#x1f341;出现 Permission denied的异常&#x1f341;安装sonarQube 中文包&#x1f341;重启服务 ⛺代码上传到sonarQube扫描&#x1f341;java语言配置&#x1f341;配置 JS TS Php Go Python⛏️出现异常sonar-scanner.ba…

观察者模式(C++)

定义 定义对象间的一种一对多(变化)的依赖关系&#xff0c;以便当一个对象(Subject)的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。 ——《设计模式》GoF 使用场景 一个对象&#xff08;目标对象&#xff09;的状态发生改变&#xff0c;所有的依赖对…

ruoyi-cloud-notes01

1、Maven中的dependencyManagement Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyManagement元素中声明所依赖的jar包的版本号等信息&#xff0c;那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找…

Spring-1-透彻理解Spring XML的Bean创建--IOC

学习目标 上一篇文章我们介绍了什么是Spring,以及Spring的一些核心概念&#xff0c;并且快速快发一个Spring项目&#xff0c;实现IOC和DI&#xff0c;今天具体来讲解IOC 能够说出IOC的基础配置和Bean作用域 了解Bean的生命周期 能够说出Bean的实例化方式 一、Bean的基础配置 …

VBA技术资料MF38:VBA_在Excel中隐藏公式

【分享成果&#xff0c;随喜正能量】佛祖也无能为力的四件事&#xff1a;第一&#xff0c;因果不可改&#xff0c;自因自果&#xff0c;别人是代替不了的&#xff1b;第二&#xff0c;智慧不可赐&#xff0c;任何人要开智慧&#xff0c;离不开自身的磨练&#xff1b;第三&#…