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

【JavaEE】操作系统与进程

作者主页:paper jie_博客

本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。

本文录入于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将MySQL基础知识一网打尽,希望可以帮到读者们哦。

其他专栏:《MySQL》《C语言》《javaSE》《数据结构》等

内容分享:本期将是JavaEE的开头曲,会从操作系统与进程,CPU之间的关系拉开序幕~

目录

操作系统

操作系统在计算机系统中处在的位置

进程

什么是进程

操作系统对进程的管理

进程与CPU的关系

进程控制快 PCB

PCB重要的属性

PCB支持进程调度的属性

内存与进程的关系

进程间通信


操作系统

操作系统它是一组管理计算机资源的软件的统称.本质上它就是软件,它负责管理硬件资源和为程序提供稳定的运行环境.一般都是由C/C++代码编写的.一般我们常见的操作系统有:     Windows,Unix,Linux,IOS,Android,鸿蒙等等.

操作系统在计算机系统中处在的位置

操作系统在计算机中处在中间位置,向下管理硬件,向上为软件即应用程序提供资源.

操作系统有两个最基本的功能:

防止硬件被应用程序滥用

将底层的硬件封装起来,向程序提供统一的API让程序可以简单一致的使用硬件资源

进程

什么是进程

进程就是操作系统对应用程序的抽象. 系统上的硬件资源,好像只要程序在运行,就会被调用. 这种情况就是通过抽象了进程这么一个概念来完成的. 现在我们使用的都是多进程/多任务系统.

进程是操作系统对一个在运行的程序的抽象,我们可以将在运行的程序看做为就是一个进程. 

且进程是操作系统分配资源的基本单位.

操作系统对进程的管理

操作系统一般对于进程采用的是先描述,再组织的方式.

描述:

操作系统一般都是拿C/C++写的,一般会用一个机构体将进程的实体属性描述出来.而这个描述进程的结构体就叫做PCB,这是所有操作系统对进程结构体的统称.

组织:

在描述好后,操作系统会用一个类似于双向列表的数据结构将进程组织起来.像任务管理器中的信息就是对这个链表进行遍历,将其中所有进程的信息打印出来.而要是有一个新的进程,它就会构造出一个新的PCB,将这个PCB新增在链表中. 但如果哪个程序退出了,就要将对应进程的PCB删除,且释放其使用的资源.

进程与CPU的关系

这里关于硬件资源与进程,我们可以通过PCB感知到内存,硬盘等资源,但一个进程消耗CPU的资源?这我们从PCB中是体现不出来的.

这里我们先从单核处理器讲起:

我们可以将单核CPU看成一个舞台,进程看成演员.同一时刻舞台上只能有一个演员表演.这时规定. 那但是这有好多个进程,也就是演员在等待,狼多肉少,这该怎么办呢?  这里,就引入了分时复用,也就是我们口中的并发这个概念. 也就是让每个演员表演一下,A表演一会,就换B表演,以此往复,不断循环. 这里大家可以就会想到了,你这还不是每次只能一个进程运行,怎么就是并发了呢. 这里大家不要忽略了CPU这个强大的处理数据,它一秒钟可以处理几十亿条指令呢,这就可以但短时间内CPU进行多次的任务切换,只要速度够快,在我们人眼中和同时运行也就没什么概念了.

我们现在使用的多核处理器也是这个道理:

这就等于从一个舞台变成了多个舞台,同一时刻每个舞台上都有一个演员在表演.这种就叫做并行执行. 但是上面的并发执行还是同样会发生.这就是等于并行+并发

所以我们得到一个结论: 进程在CPU中是分时复用,并发执行的~

进程控制快 PCB

计算机中要管理任何现实事物,都要将其抽象成一组有关联的数据.在操作系统中就将进程里的实体信息抽象成了一个PCB对象,就是一个结构体.操作系统在通过数据结构将PCB对象组织起来,方便管理.

PCB重要的属性

pid:

是对这个PCB进行身份标识,同一时刻的每个PCB中的PId是不同的

内存指针:

内存指针是对进程使用内存资源的描述.进程在运行的过程中,是需要消耗系统的内存资源的,而内存是不能随便使用的.内存指针就是告诉进程那些内存是可以使用的,在运行进程前,需要将这个exe可执行文件的指令和数据加载到内存中,这时就需要知道哪些内存是存放指令,哪些是存放数据.

文件描述符表:

文件描述符表是对进程使用系统硬件资源的描述.因为一个进程经常会使用系统的磁盘资源,这时就需要知道哪些是可以使用的.

PCB支持进程调度的属性

状态:

状态就是用来描述进程当前能不能在CPU上执行. 进程在运行的过程中会有一些不同的状态, 有的就不方便在CPU上运行. 比如这个进程在等待用户输入数据的时刻,总不可能让CPU来等它吧,这就需要给它们加上状态,让操作系统知道哪些先不要在CPU台上表演,哪些可以上台表演.这里有一些常见的状态:

就绪状态: 随时准备就绪可以上台表演.CPU可以执行它

阻塞状态: 这个进程不方便在CPU上执行,这时操作系统就不能让它去CPU上执行

优先级:

优先级就是描述进程在CPU上执行的先后顺序. 多个进程总有先后执行的顺序,我们就可以通过优先级来区分他们执行的先后顺序.

记账信息:

记账信息就是针对与CUP执行每个进程时间的统计,再根据这个统计进行调整.这就可以确保每个进程不至于没有机会在CPU上执行了.

上下文:

上下文就是对进程调度出CPU前的存档,对下次调度进CPU执行的读档. 这就相当于游戏中的读档和存档. 因为操作系统在调度进程CPU上是随机的, 任何进程在执行到任何一个指令时都有可能调度出CPU,这就需要保存当前的进度,在下次调度进CPU时继续当前进度执行. 读档就是在调度出CPU时将当前寄存器这些数据保存到另一个地方,再下次调度的时候再恢复回来.

保存上下文: 将当前CPU寄存器中的数据保存到内存的特定区域

恢复上下文: 去内存的特定区域将保存寄存器中的数据恢复到CPU中的寄存器中.

内存与进程的关系

操作系统对内存资源的分配是让不同进程使用的内存在不同的区域,相互独立,互不干扰.

进程间通信

如上所述,进程是操作系统进⾏资源分配的最⼩单位,这意味着各个进程互相之间是⽆法感受到对方存在的,这就是操作系统抽象出进程这⼀概念的初衷,这样便带来了进程之间互相具备”隔离性'',但现代的应⽤,要完成⼀个复杂的业务需求,往往⽆法通过⼀个进程独⽴完成,总是需要进程和进程进⾏配合地达到应⽤的⽬的,如此,进程之间就需要有进⾏“信息交换“的需求。

进程间通信就是操作系统会提供一些公共的区间(所有的进程都可以访问到),让多个进程可以进行交换数据.

目前,常用的进程通信机制有以下几种:

管道, 共享内存, 文件, 网络, 信号.

这里,在Java中,我们用的最多的就是文件和网络. 而网络可以同一个主机间不同进程通信,也可以不同主机间不同进程通信.
 


相关文章:

【JavaEE】操作系统与进程

作者主页:paper jie_博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JavaEE》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造&…...

【MATLAB源码-第86期】基于matlab的QC-LDPC码性能仿真,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 QC-LDPC(准循环低密度奇偶校验)编码是一种高效的错误校正编码方式,广泛应用于通信系统和数据存储中以提高数据的可靠性。它是低密度奇偶校验(LDPC)编码的一种特殊形…...

【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior)

1. 什么是命令标签(Command Tags) 当客户端向PG服务下发一个请求时,postgres进程在读取到用户的请求缓冲区之后,需要对从中解析出用户的具体请求,比如:CREATE TABLE、CREATE DATABASE、DROP TABLE、SELECT等具体操作,这里除了会用到后面即将讲的词法分析解析器flex之外…...

Python武器库开发-flask篇之error404(二十七)

flask篇之error404(二十七) 首先&#xff0c;我们先进入模板的界面创建一个404的html页面 cd templates vim 404.html404.html的内容如下&#xff1a; <h1>error!!!</h1>在 Flask 应用程序中&#xff0c;当用户访问一个不存在的页面的时候&#xff0c;会出现 4…...

录屏软件自动开启录视频,是如何实现的?

工作要留痕&#xff0c;作为职场人的一项必备技能&#xff0c;因此许多人在做一些重要操作的时候&#xff0c;就会提前开启录屏软件&#xff0c;把操作的每一个步骤进行录制&#xff0c;以避免在出现问题的时候进行检查。当每天都需要在固定的时间点重复某项工作的时候&#xf…...

模拟shell小程序

接下来利用我们当前的知识&#xff0c;撰写一个简单的shell外壳程序。 1.shell原理 shell的原理是实际上就是运行了一个父进程&#xff0c;然后创建出子进程&#xff0c;最后使用进程替换调用&#xff0c;替换成其他程序。 2.shell实现 2.1.死循环 首先一个shell一旦运行起…...

webpack配置全局scss

webpack配置全局scss 效果&#xff1a;a.vue使用index.scss中定义的$mainWidth就无需 import "xxxxxxx/index.scss"文件 src/assets/styles/index.scss $mainWidth: 1280px; $red: red src/views/a.vue .aaa {color: $red; } vue.config.js module.exports {…...

想面试前端工程师,必须掌握哪些知识和技能?【云驻共创】

在当今的数字化时代&#xff0c;前端工程师扮演着至关重要的角色。他们负责设计和开发用户界面&#xff0c;使得用户能够与应用程序或网站进行互动。为了找到最出色的前端工程师&#xff0c;你需要了解哪些技能和知识是必备的&#xff0c;同时也要掌握一些面试技巧和常见的面试…...

京东数据分析(京东数据采集):2023年10月京东平板电视行业品牌销售排行榜

鲸参谋监测的京东平台10月份平板电视市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;10月份&#xff0c;京东平台上平板电视的销量将近77万&#xff0c;环比增长约23%&#xff0c;同比则下降约30%&#xff1b;销售额为21亿&#xff0c;环…...

在 Linux 中,可以使用分号 (;) 或者 运算符来执行多条命令

在 Linux 中&#xff0c;你可以使用分号 (;) 或者 && 运算符来执行多条命令。 使用分号 (;) 分隔多条命令&#xff1a; command1 ; command2 这样会依次执行 command1 和 command2&#xff0c;不管前面的命令是否成功。 使用 && 运算符分隔多条命令&#xff1…...

一些必备的 Redis 命令 | Navicat

Redis 是一种快速的内存数据结构存储系统&#xff0c;因其处理键值对的能力而备受推崇。在本文&#xff0c;我们将探索一些不可或缺的 Redis 命令&#xff08;不包括之前介绍过的涉及键的命令&#xff09;&#xff0c;解锁这个强大工具的真正潜力。同时&#xff0c;我们也将了解…...

神经网络常用激活函数详解

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…...

UVA11584划分成回文串 Partitioning by Palindromes

划分成回文串 Partitioning by Palindromes 题面翻译 回文子串(palind) 问题描述&#xff1a; 当一个字符串正序和反序是完全相同时&#xff0c;我们称之为“回文串”。例如“racecar”就是一个回文串&#xff0c;而“fastcar”就不是。现在给一个字符串s&#xff0c;把它分…...

第十一章 将对象映射到 XML - 控制流属性的映射形式

文章目录 第十一章 将对象映射到 XML - 控制流属性的映射形式控制流属性的映射形式控制预计属性的可用性禁用映射%XML.Adapter 中的方法 第十一章 将对象映射到 XML - 控制流属性的映射形式 控制流属性的映射形式 对于流属性&#xff0c;XMLPROJECTION 的选项如下&#xff1a…...

torchvision中的标准ResNet50网络结构

注&#xff1a;仅用以记录学习 打印出来的网络结构如下&#xff1a; from torchvision import models model models.resnet50(pretrainedFalse) print("model: ", model) 结构&#xff1a; ResNet((conv1): Conv2d(3, 64, kernel_size(7, 7), stride(2, 2), padd…...

Java 多线程之 synchronized (互拆锁/排他锁/非观锁)

文章目录 一、概述二、使用方法三、测试示例 一、概述 在Java中&#xff0c;synchronized 关键字用于实现线程之间的同步。提供了一种简单而强大的机制来控制多个线程之间的并发访问&#xff0c;确保共享资源的安全性和一致性。它解决了多线程环境中的竞态条件、数据竞争和内存…...

开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势未来发展方向

开源vs闭源大模型如何塑造技术的未来&#xff1f;开源模型的优劣势&未来发展方向 写在最前面一、开源与闭源&#xff1a;定义与历史背景开源和闭源的定义开源大模型&#xff1a;社区驱动的创新 二、开源和闭源的优劣势比较开源大模型&#xff08;瓶颈&#xff09;数据&…...

如何使用无代码系统搭建软件平台?有哪些开源无代码开发平台?

无代码是什么 无代码开发&#xff0c;也称为零代码&#xff08;Zero Code&#xff09;开发&#xff0c;是一种技术概念。无代码开发无需代码基础&#xff0c;适合业务人员、IT开发及其他各类人员使用。他们通过无代码开发平台快速构建应用&#xff0c;并适应各种需求变化&#…...

微信怎么设置自动回复?

自动回复的用处 微信自动回复可以提高沟通效率。当你无法立即回复消息时&#xff0c;设置自动回复可以让对方知道你的情况&#xff0c;并且不会因为长时间没有回复而产生误解或不满。 微信自动回复可以节省时间和精力。如果你经常收到类似的询问或回复&#xff0c;通过设置自动…...

基于Vue3的低代码开发平台——JNPF

目录 一、什么是Vue.js &#xff1f; 二、Jnpf-Web-Vue3 的技术栈介绍 &#xff08;1&#xff09;Vue3.x &#xff08;2&#xff09;Vue-router4.x &#xff08;3&#xff09;Vite4.x &#xff08;4&#xff09;Ant-Design-Vue3.x &#xff08;5&#xff09;TypeScript &#x…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...