【JavaEE】进程是什么?

news2024/9/20 1:05:30

文章目录

  • ✍进程的概念
  • ✍进程存在的意义
  • ✍进程在计算机中的存在形式
  • ✍进程调度

✍进程的概念

每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之⼀。

进程是操作系统对⼀个正在运行的程序的⼀种抽象,换言之,可以把进程看做程序的⼀次运行过程;
同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位。

举例子来说,打开的csdn网站就是一个进程
打开任务管理器,可以看到计算机中的进程。
包括后台进程(计算机自动打开的,不需要你手动打开)
在这里插入图片描述
想要运行一个程序,就需要为程序分配资源。
所以说在操作系统内部,进程又是操作系统进行资源分配的基本单位。

在这里插入图片描述

✍进程存在的意义

进程主要是用来解决程序不能并发执行从而导致 CPU 利用率低下这个问题。

随着科技的发展,人们对计算机的需求也越来越大,同时对计算机性能的要求也越来越高。但事务的发展总是有所限制的。对于计算的CPU来说,现在的科技水平只能达到4nm的精度,这对于庞大的需求来说,确实是有些吃力,所以人们开始思考,当CPU的制造水平有了一定限制时,一个CPU解决不了的事情,我们可以交付给多个CPU来处理,也就是我们现在所谓的多核计算机。

使用多个核心来处理问题,当然要对这些核心进行管理规划,使这些核心可以并发执行程序。

这里的并发涵括:并发和并行
在后续会讲解到的。

✍进程在计算机中的存在形式

在操作系统中,通常用PCB(程序控制块 Program Control Block)这样的结构体来描述进程。
不同的操作系统的称呼不相同。

PCB中存储的很多的信息

在操作系统中,通常使用‘链表’这样的数据结构来使PCB串接起来。
有很多这样的链表存在于操作系统中。

  1. 任务管理器查看进程列表
    遍历链表的每个结点,并获取每个结点的信息。
  2. 创建新的进程(双击执行程序)
    进程创建出新的PCB结构体,形成新的结点并插入到链表中
  3. 删除进程(关闭程序)
    在链表中删除对应的PCB结点

PCB结构体中包含的内容

  1. pid – 进程唯一标识
    跟身份证一样,可以唯一的确定进程。
    同一个机器,同一时刻,进程id一定是不同的

如下,我打开了五个Typora程序,也就执行了五个Typorad的进程,可以看到他们五个的PID是各不相同的。
在这里插入图片描述

  1. 内存指针
    进程运行时,需要消耗一定的硬件资源,其中内存就是一个非常关键的资源!

一个程序在运行的时候,就会被从硬盘(xxx.exe)加载到内存中
加载这个程序的指令/依赖的数据

注意:这里的内存指针是一组指针
这一组指针告诉操作系统,要运行的指令都在内存的什么位置
也告诉系统,进程需要依赖的数据又存于什么位置
…等等
总之,内存指针是给操作系统知名下一步需要做什么

在这里插入图片描述

  1. 文件描述符表
    一个进程运行的时候,会操作一些文件。
    就通过一个类似于“顺序表”这样的数据结构,来记录这个进程打开了哪些文件

  2. 进程调度
    打开任务管理器可以看到,有100+的进程在执行
    而执行就需要消耗资源,而我们的计算机并没有那么多的核心(CPU)以供得每个进程分配到一个CPU,这时就需要并行+并发来解决资源的分配问题

在这里插入图片描述
一个核心,同一时刻,只能执行一个进程
(以我的计算机为例,我的计算机中拥有16个核心)
也就是说,同一时刻我的计算机最多可以同时执行16的进程
这叫做并行执行这是完全的同时执行

一个核心,不同时刻,可以执行不同进程
CPU把总的时间切割成小的片段,每个片段执行一个进程,每个片段成为“时间片”
由于时间片比较短,CPU切换进程的速度非常快,人感知不到
所以站在使用者的角度来看,这些进程就是“同时执行”的,本质上并不是同时的
这叫做并发执行

操作系统会按照并行和并发互相搭配,来执行一个进程。

总结:
并行,微观时间上,也是同时执行
并发,宏观时间上,是“同时执行”,微观时间上,是串联执行。但由于速度之快,人感知不到。

因此就将,并行和并发统称为“并发”

✍进程调度

PCB提供了几个属性,来支持进程调度

  1. 状态
    分为“就绪状态”和“阻塞状态”
    区别在于CPU调用时,是否可以立即执行

  2. 优先级
    我们知道调用进程时,需要为其分配资源
    但在分配资源时,并非是均等的分配
    例如在打游戏时,此时你打开的网页就不需要分得那么多的资源

  3. 上下文
    在上文中,我们提到“并发执行”,在执行过程中,会产生很多的“中间结果”,在进程切出于CPU之前,需要把这些“中间结果”(CPU的寄存器中的各种值),保存到PCB的上下文中。
    这个过程是将寄存器的数据存放到内存中,也就是我们平时所见的【存档】

当下一次CPU再次调度这个进程时,就要把之前的数据读取出来,放入寄存器中,也就是所谓的【读档】。
具体操作过程:有一个PC程序计数器,他会记录上一次执行到哪一个位置,在下一次执行时,就从这个位置继续执行。

  1. 记账信息
    基于优先级,我们可以知道每个进程分配的资源并不相同
    引入记账信息,我们可以记录每个进程所分配的资源
    进而后续对资源的分配做出调整。

以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

360奇酷刷机 360刷机助手 QGDP360手机QGDP刷机

360奇酷刷机 360刷机助手 QGDP破解版360手机QGDP刷机 360手机刷机资源下载链接:360rom.github.io 参考:360手机-360刷机360刷机包twrp、root 360奇酷刷机:360高通驱动安装 360手机刷机驱动;手机内置,可通过USB文件传输…

修改 RabbitMQ 默认超时时间

MQ客户端正常运行,突然就报连接错误, 错误信息写的很明确,是客户端连接超时。 不过很疑虑,为什么会出现连接超时呢?代码没动过,网络也ok,也设置了心跳和重连机制。 最终在官网中找到了答案&am…

『笔记』可扩展架构设计之消息队列

前言 众所周知,开发低耦合系统是软件开发的终极目标之一。低耦合的系统更加容易扩展,低耦合的模块更加容易复用,更易于维护和管理。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通…

java一和零(力扣Leetcode474)

一和零 力扣原题 给定一个二进制字符串数组 strs 和两个整数 m 和 n,请你找出并返回 strs 的最大子集的长度,该子集中最多有 m 个 0 和 n 个 1。 示例 1: 输入:strs [“10”, “0001”, “111001”, “1”, “0”], m 5, n …

基于GA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络(CNN)在时间序列中的应用 4.2 长短时记忆网络(LSTM)处理序列依赖关系 4.3 注意力机制(Attention) 5…

基于BP神经网络的城市空气质量数据预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 BP神经网络结构 4.2 神经元模型与激活函数 4.3 前向传播过程 4.4反向传播算法及其误差函数 4.5 权重更新规则 4.6 迭代训练 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软…

Qt_day4:2024/3/25

作业1: 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和…

一篇文章,告别Flutter状态管理争论,问题和解决

起因 每隔一段时间,都会出现一个新的状态管理框架,最近在YouTube上也发现了有人在推signals, 一个起源于React的状态管理框架,人们总是乐此不疲的发明各种好用或者为了解决特定问题而产生的方案,比如Bloc, 工具会推陈出新&#x…

qt table 简易封装,样式美化,以及 合并表格和颜色的区分 已解决

在需求中&#xff0c; 难免会使用 table 进行渲染窗口&#xff0c;做一个简单的封装。美化表格最终效果&#xff01;&#xff01;&#xff01; 代码部分 // 显示 20行 20列CCendDetailsInfoTableWidget* table new CCendDetailsInfoTableWidget(20,10);for (int i 0; i < …

ESCTF-逆向赛题WP

ESCTF_reverse题解 逆吧腻吧babypybabypolyreeasy_rere1你是个好孩子完结撒花 Q_W_Q 逆吧腻吧 下载副本后无壳&#xff0c;直接拖入ida分析分析函数逻辑&#xff1a;ida打开如下&#xff1a;提取出全局变量res的数据后&#xff0c;编写异或脚本进行解密&#xff1a; a[0xBF, …

enscan自动化主域名信息收集

enscan下载 Releases wgpsec/ENScan_GO (github.com) 能查的分类 实操&#xff1a; 首先打开linux 的虚拟机、 然后把下面这个粘贴到虚拟机中 解压后打开命令行 初始化 ./enscan-0.0.16-linux-amd64 -v 命令参数如下 oppo信息收集 运行下面代码时 先去配置文件把coo…

JavaEE企业开发新技术3

目录 2.11 Method的基本操作-1 文字性概念描述 代码&#xff1a; 2.12 Method的基本操作-2 2.13 Method的基本操作-3 2.14 数组的反射操作-1 文字性概念&#xff1a; 代码&#xff1a; 2.15 数组的反射操作-2 学习内容 2.11 Method的基本操作-1 文字性概念描述 Me…

io的学习4

打印流 分类&#xff1a;打印流一般是指&#xff1a;PrintStream、PrintWriter两个类 特点&#xff1a; 1.打印流只操作文件目的地&#xff0c;不操作数据源 2.特有的写出方法可以实现&#xff0c;数据原样写出 3.特有的写出方法&#xff0c;可以实现自动刷新&#xff0c;…

仅用一个月,游卡完成从MySQL到上线OceanBase的实践

编者按&#xff1a;自2023年9月起&#xff0c;游卡——国内最早卡牌游戏研发者之一&#xff0c;开始测试OceanBase&#xff0c;并在短短两个月内成功将三个核心业务应用迁移至OceanBase上。究竟是何因素促使游卡放弃游戏行业普遍采用的MySQL方案&#xff0c;转而大胆选择OceanB…

荟萃分析R Meta-Analyses 3 Effect Sizes

总结 效应量是荟萃分析的基石。为了进行荟萃分析&#xff0c;我们至少需要估计效应大小及其标准误差。 效应大小的标准误差代表研究对效应估计的精确程度。荟萃分析以更高的精度和更高的权重给出效应量&#xff0c;因为它们可以更好地估计真实效应。 我们可以在荟萃分析中使用…

一文整合工厂模式、模板模式、策略模式

为什么使用设计模式 今天终于有时间系统的整理一下这几个设计模式了&#xff0c; 这几个真是最常用的&#xff0c;用好了它们&#xff0c;你就在也不用一大堆的if else 了。能更好的处理大量的代码冗余问题。 在我们的实际开发中&#xff0c;肯定会有这样的场景&#xff1a;我…

【C语言基础】:内存操作函数

文章目录 一、memcpy函数的使用和模拟实现1.1 memcpy函数的使用1.2 memcpy函数的模拟实现 二、memmove函数的使用和模拟实现2.1 memmove函数的使用2.2 memmove函数的模拟实现 三、memset函数的使用3.1 menset函数的使用 四、memcmp函数的使用4.1 memcmp函数的使用 学海无涯苦作…

Qt与编码

ASCII码:一个字节&#xff0c;256个字符。 Unicode:字母&#xff0c;汉字都占用两个字节。 utf-8:字母一个字节&#xff0c;汉字3个字节。 gbk:字母一个字节&#xff0c;汉字2个字节。 gb2312:可以表示汉字&#xff0c;gb2312<gbk。 编码查看&#xff1a; https://www.…

钡铼技术R40路由器助力构建无人值守的智能化污水处理厂

钡铼技术R40路由器作为智能化污水处理厂的关键网络设备&#xff0c;发挥着至关重要的作用&#xff0c;助力构建无人值守的智能化污水处理系统。在现代社会&#xff0c;污水处理是城市环境保护和可持续发展的重要组成部分&#xff0c;而智能化污水处理厂借助先进的技术和设备&am…

C语言数据结构易错知识点(5)(插入排序、选择排序)

插入排序&#xff1a;直接插入排序、希尔排序 选择排序&#xff1a;直接选择排序、堆排序 上述排序都是需要掌握的&#xff0c;但原理不会讲解&#xff0c;网上有很多详尽地解释&#xff0c;本文章主要分享一下代码实现上应当注意的事项 1.直接插入排序&#xff1a; 代码实…