【JavaEE】进程是什么?

文章目录

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

✍进程的概念

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

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

举例子来说,打开的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.mzph.cn/news/770542.shtml

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

相关文章

C语言 | qsort()函数使用

目录: 1.qsort介绍 2.使⽤qsort函数 排序 整型数据 3.使⽤qsort函数 排序 结构体数据 4. qsort函数的模拟实现冒泡排序 qsort()函数 是一个 C语言编译器函数库自带的排序函数, 它可以对指定数组(包括字符串,二维数组&#x…

聚观早报 | 滴滴2023年Q4营收;微软推广Copilot

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月25日消息 滴滴2023年Q4营收 微软推广Copilot 极狐汽车将出口西班牙 华为公开智能驾驶新专利 华为P70系列发布…

【分布式】——分布式事务

分布式事务 ⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏👉https://blog.csdn.net/weixin_53580595/category_12279588.html SpringMVC专…

Java day16 filter

filter 1、入门2、生命周期3、执行顺序问题4、注解 1、入门 UserServlet.java package com.cky.servlet;import jakarta.servlet.ServletConfig; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebIni…

Java后端项目性能优化实战-群发通知

背景 公司群发通知模块性能存在问题,我进行全面的系统调优,系统处理能力大幅提升。 原发送流程 优化后的发送流程 优化的点 说明:以下问题基本都是压测过程遇到的,有些问题普通的功能测试暴露不了。优化目标:保证高…

weindos的docker 运行Hyperf 日志

weindos的docker 运行日志 进入cmd窗口 docker run --name hyperf -v D:\phpstudy_pro\WWW\hyperf.com\hyperf-skeleton:/data/project -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf-skeleton:latest D:\phpstudy_pro\WWW\hyperf.com\hyperf-skeleton是…

Java问题详解

在Java中,问题可能涵盖多个领域,如基础知识、高级特性、设计模式、性能优化、并发编程等。下面,我将提供两个问题以及对它们的详细回答。请注意,2000字的要求可能过于庞大,我将尽量确保回答详细而不过于冗长。 问题1&…

Tomcat 启动闪退问题解决方法

Tomcat 启动闪退问题可能由多种原因引起,下面是一些常见的解决方法: 检查 Tomcat 的日志文件:Tomcat 会生成日志文件,记录启动过程中的错误和异常信息。打开 Tomcat 的日志文件,查找是否有任何错误或异常信息。 检查 …

网络: 套接字

套接字: 在网络上进行进程间通信 网络字节序与主机字节序的转化 sockaddr sockaddr struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据,具体内容与地址族相关 };sockaddr_in :主要是地址类型, 端口号, IP地址. 基于IPv4编程…

数学系的数字信号处理:连续信号、滤波器与采样定理

本专栏:数学系的数字信号处理 的前置知识主要有:数学分析(傅立叶级数的部分),泛函分析( L p L^p Lp空间的部分) 连续信号、滤波器与采样定理 我们在数学上粗略地定义信号和滤波器,目…

React 抽屉显示和隐藏

<div className{styles.content}><div className{styles.left} ref{leftRef}><div className{styles.drawer} onClick{drawerChange}>我是抽屉开关</div><div>我是左边内容</div></div><div className{styles.right} ref{rightRe…

6.使用个人用户登录域控的成员服务器,如何防止个人用户账号的用户策略生效?

&#xff08;1&#xff09;需求&#xff1a; &#xff08;2&#xff09;实战配置步骤 第一步:创建新的策略-并编辑策略 第二步&#xff1a;将策略应用到服务器处在OU 第三步&#xff1a;测试 &#xff08;1&#xff09;需求&#xff1a; 比如域控&#xff0c;或者加入域的…

【iOS ARKit】3D文字

首先&#xff0c;3D场景中渲染的任何虚拟元素都必须具有网格&#xff08;顶点及顶点间的拓扑关系&#xff09;&#xff0c;没有网格的元素无法利用GPU 进行渲染&#xff0c;因此&#xff0c;在3D 场景申渲染 3D文字时&#xff0c;文字也必须具有网格。在计算机系统中&#xff0…

springboot实现热搜后端elk

需求描述&#xff1a;热搜方式的分词查询。 数据环境&#xff1a;mysql中存在已爬数据表名t_bj(id,titile,content,publishtime)&#xff0c;使用logstash同步到es中&#xff0c;springboot连接es实现rest接口给前端页面。 springboot dom文件&#xff1a; <dependency>…

Ruoyi若依框架下载流程详细解读(SpringBoot-Vue)

图解&#xff1a; 前端设计&#xff1a; 前端设计一个link文字连接或者按钮&#xff08;ElementUI&#xff09;Element - The worlds most popular Vue UI framework 前端请求设计&#xff1a; import request from /utils/request //下载示例模型定义语言的JSON export const…

零售商品计划新篇章:智能管理系统的挑战与机遇

在零售企业管理中&#xff0c;商品计划管理在零售企业运营中占据核心地位。面对日益激烈的市场竞争和消费者需求的多样化&#xff0c;零售企业在商品计划管理方面面临着诸多挑战和需求。以下针对这些挑战和需求的分析&#xff0c;以及对一套智能商品计划管理系统应具备的功能和…

基于SpringBoot IP黑白名单的实现2

业务场景 IP黑白名单是网络安全管理中常见的策略工具&#xff0c;用于控制网络访问权限&#xff0c;根据业务场景的不同&#xff0c;其应用范围广泛&#xff0c;以下是一些典型业务场景&#xff1a; 服务器安全防护&#xff1a; 黑名单&#xff1a;可以用来阻止已知的恶意IP地…

每日一练:LeeCode-200、岛屿数量【DFS递归+BFS队列】

给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的四条边…

特种兵旅游-扬州、南京Citywalk

一、扬州 Day01 西安咸阳机场->扬州泰州机场&#xff08;扬州地界但是离泰州也嘎嘎近&#xff09;->大运河博物馆&#xff08;需要提前预约&#xff01;&#xff09;&#xff08;超级震撼&#xff09; Day02 瘦西湖&#xff08;门票有点贵&#xff0c;但是蛮值得&#x…

【微服务】Eureka(服务注册,服务发现)

文章目录 1.基本介绍1.学前说明2.当前架构分析1.示意图2.问题分析 3.引出Eureka1.项目架构分析2.上图解读 2.创建单机版的Eureka1.创建 e-commerce-eureka-server-9001 子模块2.检查父子pom.xml1.子 pom.xml2.父 pom.xml 3.pom.xml 引入依赖4.application.yml 配置eureka服务5.…