【JavaEE】进程的概念

news2024/11/15 18:01:51

文章目录

  • 1、什么是进程(Process)
  • 2、PCB
    • 1.pid进程的id/标识符
    • 2.内存指针
    • 3.文件描述符表
    • 4、进程调度
      • 4.1状态
      • 4.2优先级
      • 4.3上下文
      • 4.4记账信息


1、什么是进程(Process)

一个程序,运行起来/跑起来,在操作系统中就会出现一个对应的进程
进程就是一个跑起来的应用程序
在这里插入图片描述
除了上述自己运行起来的应用程序是进程之外,还有一些是系统自带的/安装某些程序,给你添加的,这些进程对于你的系统能够稳定运行有很重要的意义
要想让一个程序能够稳定运行,就必须得给这个进程分配系统资源,包括不限于cup,内存,硬盘,网络带宽,显卡…
进程也可以视为操作系统进行资源分配的基本单位
在操作系统中包含了许多的进程,一旦进程多了我们就要进行管理,对于管理我们通用的做法是,先组织,再描述
描述:通过一些结构体/类把一个进程的核心信息抽象提取出来,并进行表示
组织:通过一定的数据结构,把多个这样的结构体/类的对象串起来,方便进一步的各种增删改查

2、PCB

在操作系统中,通常使用称为PCB(进程控制块)这样的结构体来描述进程
结构体中就需要包含一些进程的核心信息
操作系统中通常会使用链表这样的结构,把多个PCB串起来
1.任务管理器中查看进程列表,就是在遍历链表的每个节点,并且获取显示出对应的信息
2.创建新的进程(双击某个程序运行),新的进程创建出一个对应的新的PCB,并且添加到上述链表中
3.销毁某个进程(某个程序退出),要把链表上对应的PCB节点给删除掉
在PCB结构体中包含了很多信息,此处我们只讨论以下几个

1.pid进程的id/标识符

在这里插入图片描述
同一个机器,同一个时刻,,进程id是一定不同的

2.内存指针

进程运行时,需要消耗一定的硬件资源,内存就是一个关键的资源
一个程序,在运行的时候,就会被从硬盘加载到内存中,就会加载这个程序的指令/依赖的数据
这里的指针是一组指针,它告诉操作系统,该进程要运行的指令都在内存的哪些地方,也告诉操作系统,该进程依赖的数据,又在哪些地方

3.文件描述符表

一个进程运行的时候,就会操作一些文件,就会通过一个“顺序表”这样的数据结构,记录当前的这个进程,都打开了哪些文件

4、进程调度

任务管理器中,可以看到系统中包含很多的进程,每个进程都需要执行,执行就需要占用CPU资源,这时就需要通过进程调度来合理分配资源
1.并行执行:一个核心,同一时刻,只能运行一个程序
2.并发执行:cpu把总的执行时间,切换成若干个小的片段,每个片段执行一个进程,每个片段称为“时间片”由于时间片比较短,cpu切换进程的速度极快,人感知不到所有站在人的角度来看,这若干个进程在“同时执行”(本质不是同时)
操作系统会按照并行+并发相互搭配,运行所有的进程
PCB中又提供了以下几个属性,支持进程调度

4.1状态

记录了进程当前处于什么状态,如就绪,阻塞等,进程调度时需要根据进程的状态来确定哪些进程可以被调度执行

4.2优先级

用于确定进程在就绪队列中的执行顺序,优先级高的进程通常会被优先调度执行

4.3上下文

进程在cpu执行的过程中,会产生很多的“中间结果”,在进程切换出cpu之前就需要把这些中间结果(cpu的各种寄存器中的值)保存到PCB上下文里(寄存器->内存)【存档】
下次这个进程回到cpu上执行的时候,就需要先把之前的存档恢复回来(内存->寄存器)【读档】

4.4记账信息

通过表格来统计,进程分配的时间或者资源等等

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

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

相关文章

Delta lake with Java--利用spark sql操作数据1

今天要解决的问题是如何使用spark sql 建表,插入数据以及查询数据 1、建立一个类叫 DeltaLakeWithSparkSql1,具体代码如下,例子参考Delta Lake Up & Running第3章内容 import org.apache.spark.sql.SaveMode; import org.apache.spark.…

Ollamallama

Olllama 直接下载ollama程序,安装后可在cmd里直接运行大模型; llama 3 meta 开源的最新llama大模型; 下载运行 1 ollama ollama run llama3 2 github 下载仓库,需要linux环境,windows可使用wsl; 接…

面试:Spring(IOC、AOP、事务失效、循环引用、SpringMVC、SpringBoot的自动配置原理、Spring框架常见注解)

目录 一、Spring的单例Bean是否是线程安全的? 二、什么是AOP 1、介绍 (1)记录操作日志 (2)实现Spring中的事务 三、spring中事务失效的场景有哪些? 1、异常捕获处理 2、抛出检查异常 3、非public方…

ElasticSearch教程入门到精通——第四部分(基于ELK技术栈elasticsearch 7.x新特性)

ElasticSearch教程入门到精通——第四部分(基于ELK技术栈elasticsearch 7.x新特性) 1. Elasticsearch进阶1.1 核心概念1.1.1 索引Index1.1.1.1 索引创建原则1.1.1.2 Inverted Index 1.1.2 类型Type1.1.3 文档Document1.1.4 字段Field1.1.5 映射Mapping1.…

【Mac】Mac安装软件常见问题解决办法

前言 刚开始用Mac系统的小伙伴或者在更新系统版本后运行App的朋友会经常碰到弹窗提示「xxx已损坏,无法打开,您应该将它移到废纸篓」、「打不开xxx,因为Apple无法检查其是否包含恶意软件」、「打不开xxx,因为它来自身份不明的开发…

模型训练中的过拟合和欠拟合

基本概念 我们知道,所谓的神经网络其实就是一个复杂的非线性函数,网络越深,这个函数就越复杂,相应的表达能力也就越强,神经网络的训练则是一个拟合的过程。   当模型的复杂度小于真实数据的复杂度,模型表…

保存钉钉群直播回放下载:直播回放下载步骤详解

今天,我们就来拨开云雾,揭开保存钉钉群直播回放的神秘面纱。教会你们如何下载钉钉群直播回放 首先用到的工具我全部打包好了,有需要的自己下载一下 钉钉群直播回放工具下载:https://pan.baidu.com/s/1WVMNGoKcTwR_NDpvFP2O2A?p…

PyQt5新手教程(五万字)

文章目录 PyQt界面开发的两种方式:可视化UI 编程式UI一、PyQt 简介二、PyQt 与 Qt 的蒙娜丽莎三、PyQt 布局管理器3.1、简介3.2、项目实战3.2.0、添加伸缩项 layout.addStretch:控制布局中组件之间的间距。3.2.1、垂直布局管理器 QVBoxLayout&#xff1…

制作一个 rpm 软件包

首发日期 2024-04-30, 以下为原文内容: 本文以 ibrus (艾刷, 胖喵拼音 ibus 接口模块) 为例, 介绍 rpm 软件包的制作过程. 相关文章: 《发布 AUR 软件包 (ArchLinux)》 https://blog.csdn.net/secext2022/article/details/136803790《多种双拼方案的实现》 https://blog.csdn.…

C语言之详细讲解文件操作(抓住文件操作的奥秘)

什么是文件 与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。文件通常具有点三个字母的文件扩展名,用于指示文件类型(例如,图片文件常常以KPEG格式保存并且文件…

区块链 | IPFS:Merkle DAG

🦊原文:IPFS: Merkle DAG 数据结构 - 知乎 🦊写在前面:本文属于搬运博客,自己留存学习。 1 Merkle DAG 的简介 Merkle DAG 是 IPFS 系统的核心概念之一。虽然 Merkle DAG 并不是由 IPFS 团队发明的,它来自…

Pyspark+关联规则 Kaggle购物篮分析案例

数据集地址:Market Basket Analysis | Kaggle 我的NoteBook地址:pyspark Market Basket Analysis | Kaggle 零售商期望能够利用过去的零售数据在自己的行业中进行探索,并为客户提供有关商品集的建议,这样就能提高客户参与度、改…

llama_index微调BGE模型

微调模型是为了让模型在特殊领域表现良好,帮助其学习到专业术语等。 本文采用llama_index框架微调BGE模型,跑通整个流程,并学习模型微调的方法。 一、环境准备 Linux环境,GPU L20 48G,Python3.8.10。 pip该库即可。 二、数据准备 该框架实现了读取各种类型的文件,给…

AI项目二十一:视频动态手势识别

若该文为原创文章,转载请注明原文出处。 一、简介 人工智能的发展日新月异,也深刻的影响到人机交互领域的发展。手势动作作为一种自然、快捷的交互方式,在智能驾驶、虚拟现实等领域有着广泛的应用。手势识别的任务是,当操作者做出…

html--剑雨

<!doctype html> <html> <head> <meta charset"utf-8"> <title>css3剑雨-jq22.com</title> <script src"http://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style> .sword:before, .sword:…

Java_从入门到JavaEE_08

一、Eclipse开发工具的介绍 Eclipse工具简绍 Eclipse 是著名的跨平台的自由集成开发环境&#xff08;IDE&#xff09;。最初主要用来 Java 语言开发&#xff0c;但是目前亦有人通过插件使其作为其他计算机语言比如 C 和 Python 的开发工具。 下载与安装 下载&#xff1a; Ecli…

spring boot3多模块项目工程搭建-上(团队开发模板)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 目录 写在前面 多模块结构优缺点 模块介绍 Common 模块&#xff1a; API 模块&#xff1a; Web 模块&#xff1a; Service 模块&#xff1a; DAO 模块&#xff1a; 搭建步骤 1.创建 父…

Java面试八股之强软弱虚引用的概念及区别

Java中强软弱虚引用的概念及区别 在Java中&#xff0c;强引用、软引用、弱引用和虚引用是四种不同类型的引用&#xff0c;它们在对象生命周期管理、垃圾收集&#xff08;Garbage Collection, GC&#xff09;以及内存管理方面有着不同的行为和用途。以下是它们的概念和主要区别…

脑筋急转弯在线问答

页面效果 点击“显示答案”按钮&#xff0c;显示参考答案。 页面代码 <% layout(/layouts/default.html, {title: 脑筋急转弯管理, libs: [dataGrid]}){ %> <div class"main-content"><div class"box box-main"><div class"bo…

3.自动驾驶-局部路径规划

1. 规划planning 2. 局部路径规划模块实现-模块外围&#xff1a;输入 3. 局部路径规划模块实现模块外围:输出 4. 控制control 5. 系统分类 6 系统分类