【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中,我们用的最多的就是文件和网络. 而网络可以同一个主机间不同进程通信,也可以不同主机间不同进程通信.
 


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

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

相关文章

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…

规划类3d全景线上云展馆帮助企业轻松拓展海外市场

科技3D线上云展馆作为一种基于VR虚拟现实和互联网技术的新一代展览平台。可以在线上虚拟空间中模拟真实的展馆,让观众无需亲自到场,即可获得沉浸式的参观体验。通过这个展馆,您可以充分、全面、立体展示您的产品、服务以及各种创意作品&#…

实用篇 | T-SNE可视化工具详情及代码示例

本文主要是为了快速的了解t-sne和如何快速使用! 简要了解TSNE TSNE,降维方法之一。降维在机器学习中非常重要。这是因为如果使用高维数据创建模型,则很容易欠拟合。换句话说,有太多无用的数据需要学习。可以通过从各种数据中仅…

Golang版本处理Skywalking Trace上报数据

Tips: 中间记录了解决问题的过程,如不感兴趣可直接跳至结尾 首先去es里查询skywalking trace的元数据 可以拿到一串base64加密后的data_binary(直接解密不能用,会有乱码,可参考https://github.com/apache/skywalking/issues/7423) 对data_b…

第四代智能井盖传感器:智能井盖位移怎么进行监测

井盖是城市基础设施的一个重要组成部分,若井盖出现移位等现象,可能会对路过的车辆和行人造成潜在危险。特别是那些含有甲烷气体的井盖,一旦气体超过阈值且被意外踩踏,可能会导致气体的释放,这便会引发一系列安全事故&a…

Linux wait函数用法

wait 函数是用于等待子进程结束并获取子进程的终止状态的系统调用。它在父进程中使用,用于等待其子进程终止并获得子进程的退出状态。 函数原型: pid_t wait(int *status);status 是一个指向整型的指针,用于存储子进程终止时的退出状态&…

clang+llvm多进程gdb调试

clangllvm多进程gdb调试 前言1. 命令行gdb2. 父进程调试3. 子进程调试4. 返回父进程 前言 在学习新增llvm的优化pass时,需要跟踪clang及llvm的调用栈。然而llvm通过posix_spawn()创建了新进程,这使得gdb调试必须有一定的技巧了。 1. 命令行gdb 以下命…

小红书干货类笔记怎么写?建议收藏

小红书干货类笔记是指在小红书这个社交平台上,用户分享的各种实用、有价值的生活技巧、经验、心得等内容的笔记。这类笔记通常具有以下特点:内容详实、实用性强、独特见解、图文并茂。 比如:某个妆要怎么化、某种技能该怎么学、某个城市该怎…

详细梳理山姆·奥特曼离职闹剧 仍试图重返OpenAI

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq OpenAI 与微软围绕 Sam Altman 的离职风波,这场肥皂剧似乎还没到终结的样子。目前 …

跨越行业边界,CodeMeter护航AI领域安全与合规

在人工智能(AI)技术如ChatGPT的推动下,工业视觉、医疗诊断和智能驾驶等领域正在经历重大变革。这些技术不仅扩大了应用范围,也带来了数据安全、软件授权保护和合规性等新挑战。 AI工业视觉正在推动制造和自动化的快速发展&#x…

YOLOv5结合华为诺亚VanillaNet Block模块

🗝️YOLOv5实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv5:我的专业笔记与技术总结   -- YOLOv5轻松上手, 适用技术小白,文章代码齐全,仅需 …

出海企业首选的免费开源财务管理系统解决方案

计费与订阅管理 Odoo计费与订阅管理解决方案可帮助您同步从订单、计费到收入确认的复杂流程 Odoo Subscriptions将计费与订阅置于核心业务流程中,将其从普通的后端功能转化为具有决定性意义的战略性业务工具。Odoo统一计费框架支持根据事务、订阅、使用量计费以及…

大数据题目的解题技巧

目录 大数据题目的技巧总括 实例精析 实例一 实例二 实例三 大数据题目的技巧总括 (1)哈希函数可以把数据按照种类均匀分流; (2)布隆过滤器用于集合的建立与查询,并可以节省大量空间; &…

前缀和的动态维护——树状数组[C/C++]

文章目录 前言lowbitlowbit的定义lowbit的计算 树状数组的思想树状数组的操作单点修改 update前缀查询 query树状数组的建立 build 前言 树状数组巧妙了利用位运算和树形结构实现了允许单点修改的情况下,动态维护前缀和,并且实现单点修改和前缀和查询的效…

柱形图:制作图表时,有时会遇到柱形图系列没有居中显示,例如:

问题描述 制作图表时,有时会遇到柱形图系列没有居中显示,例如: 原因分析 柱形图的「分类」和「系列名」均选择了「地区」,导致分类下存在不同的系列,那么当前分类下没有的系列就会存在「空白占位」。 解决方案 此时…

多普勒流速仪的功能作用是什么?

我国地域广大,各地降雨分布不均,某些城市经常会出现连续的降雨进而导致城市排水压力过大,为了提高城市应对排水过量的极端情况的出现,亟需一种方案能够对城市排水进行有效及时的监测,从而能够及时的采取应对方案。 在污…

区域人员超限AI算法的介绍及TSINGSEE视频智能分析技术的行业应用

视频AI智能分析已经渗透到人类生活及社会发展的各个方面。从生活中的人脸识别、停车场的车牌识别、工厂园区的翻越围栏识别、入侵识别、工地的安全帽识别、车间流水线产品的品质缺陷AI检测等,AI智能分析技术无处不在。在某些场景中,重点区域的人数统计与…

详解Java的static关键字

文章目录 🎄静态方法🌺静态方法和非静态方法对比🛸静态方法实例🛸非静态方法实例 🌹static关键字⭐static变量⭐static代码块 🎄静态方法 不依赖于对象实例:静态方法不需要依赖于任何对象实例&…

香港高端人才通行证计划申请(包括条件)你需要知道的这些真相!

香港高端人才通行证计划申请(包括条件)你需要知道的这些真相! 香港高才通计划从刚推出就带着“光速获批“的光环,吸引了大批高学历和高收入人士,后续也因它申请要求简单、明确,获批率高等优势,火…

飞桨——总结PPOCRLabel中遇到的坑

操作系统:win10 python环境:python3.9 paddleocr项目版本:2.7 1.报错:ModuleNotFoundError: No module named Polygon(已解决) 已解决所以没有复现报错内容 尝试方法一:直接使用pip命令安装&…