【JavaEE初阶】浅谈进程

✏️✏️✏️今天正式进入JavaEE初阶的学习,给大家分享一下关于进程的一些基础知识。了解这部分内容,只是为后续多线程编程打好基础,因此进程部分的知识,不需要了解更加细节的内容。

清风的CSDN博客

😛😛😛希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流

动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛

目录

 前言

一、什么是进程(任务/task)

1.1 进程概念 

1.2 进程的特点 

1.3 如何描述和组织进程

二、进程描述——PCB进程控制块 

2.1 PID——进程标识

 2.2 内存指针

2.3 文件描述符表 

三、PCB中进程调度相关的属性 

3.1 状态

3.2 优先级 

3.3 上下文 

 3.4 记账信息


 前言

        在学习这部分内容之前,还是需要了解一下什么是操作系统?通俗来说,操作系统就是管理应用程序,对下,要管理各种硬件设备,对上,要给应用程序提供一个稳定的运行环境。这里涉及到的内容也是方方面面的。那么,今天我们就来了解一下操作系统中的最重要的内容——进程。

一、什么是进程(任务/task)

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

1.1 进程概念 

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

        简单来说,进程就是正在运行的程序。那么也就是说,没有运行起来的程序,也就不是进程了。程序是可执行文件,只是在硬盘上的一个东西(静态的)。如果双击程序,此时操作系统就会把可执行文件中的数据和指令加载到内存中,并且让CPU去执行这里的指令,完成一系列相关的工作,此时是运行起来的,动态的。也就是进程。 

1.2 进程的特点 

  • 动态性 创建->产生;调度->执行;得不到资源->暂停;撤销->消亡。
  • 并发性 多个进程可以在一段时间内同时运行。
  • 独立性 进程是独立运行的基本单位。
  • 异步性 进程各自可以独立地、以不可知的速度前进。 

进程能够干活,说明进程能够消耗一定的额系统资源。而对于可执行文件来说,只是占用了硬盘空间。而进程,会消耗CPU资源,内存资源,硬盘,网络带宽......

一台正在运行的计算机中,大概率是包含很多进程的,一旦东西多了,就需要考虑“管理”,此时,针对计算机中“进程”的管理,核心思路就是需要先描述,再组织。

  • 描述:使用一个专门的结构体,来记录一个进程里面的各个属性。
  • 组织:使用一系列的数据结构,把多个进程进行一个有效的组织,随时方便进行遍历,查找,汇总数据。 

 进程管理的前提是进程数量非常多,如果只有几个进程,那么也就不需要考虑管理进程了。

1.3 如何描述和组织进程

描述:PCB(进程控制块)。

组织:通常会使用双向链表这样的方式来进行组织。当使用双向链表来组织的时候,查看进程的列表,本质上就是遍历这个链表。创建一个进程,就是创建了一个PCB结构体,并且插入到链表上。销毁一个进程,就是把PCB从这个结构体从链表上删除并释放。

二、进程描述——PCB进程控制块 

PCB中大概包含的信息: PID(进程的标识)、内存指针、文件描述符表。

2.1 PID——进程标识

同一个系统上,同一时刻,每个进程的PID一定都是不同的。有的时候,运行一个可执行文件EXE,可能会设计到多个进程。

 2.2 内存指针

       表示了该进程对应的内存资源的情况。(也就是操作系统分配的内存空间),最主要存储的就是从exe可执行文件中加载过来的指令和数据。还会保存一些运行过程的中间结果的数据。指令我们可以看成是一个剧本,而进程就是演员,演员要按照剧本进行表演,也就是说,进程要按照指令去完成一系列的相关操作。

2.3 文件描述符表 

        它和硬件资源有关,硬盘是硬件,应用程序一般是无法直接接触到“硬件”这一层面的。实际上是操作系统抽象成“文件”这样的概念,程序操作的是文件,文件实际上是存储在硬盘上的。每个进程就会有一个文件描述符来记录当前这个进程正在使用哪些文件。操作系统打开一个文件,就会产生一个文件描述符,同时会使用文件描述符表,把文件描述符组织起来。

此外,计算机最重要的一个硬件资源就是CPU,在这里也简单介绍一下CPU资源是怎么体现的:

进程是需要在CPU上执行指令的,如果说进程是演员,那么CPU就是拍摄场地,CPU要给进程场地,才能让进程表演。每一个进程要想执行里面的指令,完成对应的任务,都需要在CPU上执行。但是,一台机器上同一时刻的进程有百八十个,而CPU只有一个。但是在CPU中,拍摄场地不止一个,也就是CPU是有多个逻辑核心,这样就可以同时执行多个进程。但是,进程仍然有上百个,逻辑核心不够用,那么就需要进程的调度。进行调度的时候,又设计到俩个情况:并行和并发。

并行:同一时刻,两个进程,同时运行在两个CPU逻辑核心上。

并发:两个进程,在同一个CPU逻辑核心上,轮流执行。由于CPU切换速度极快,微观上这两个进程是串行执行的,宏观上,看起来这两个进行就像是“同时执行”的。

操作系统在调度这些进程的时候,可能是按照并行的方式,也可能是按照并发的方式。在应用程序这一层,是感知不到的(在系统内核可以感知到)。

三、PCB中进程调度相关的属性 

下面我们只是简单介绍一下基本的内容。 

3.1 状态

这里我们只介绍最重要的两个状态。

就绪状态:一个进程随时做好了在CPU上执行的准备。

阻塞/睡眠状态:进程还没有准备好被调度到CPU上。

3.2 优先级 

系统调度进程的时候,并不是完全公平的,会根据优先级的不同,来决定时间分配的权衡,这样一来,就可以把系统资源调配给更重要的进程了。

3.3 上下文 

进程是轮流执行的,一次运行不完,此时就需要保证下次CPU运行的时候,能够从上次运行到的位置继续往后执行。

操作系统所记录的上下文就是该进程在执行过程中,CPU的寄存器中对应的数据。这些寄存器有的存放中间结果,有的是存放一些特定含义的数据。

 3.4 记账信息

相当于是一个统计信息,会统计每个进程在CPU上执行的时间,也是对进程调度的工作进行一个兜底。


✨好啦,今天的分享就到这里!

🎉希望各位看官读完文章后,能够有所提升。

✨创作不易,还希望各位大佬支持一下!

👍点赞,你的认可是我创作的动力!

⭐收藏,你的青睐是我努力的方向!

✏️评论:你的意见是我进步的财富!

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

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

相关文章

Android之高级UI

系统ViewGroup原理解析 常见的布局容器: FrameLayout, LinearLayout,RelativeLayoout,GridLayout 后起之秀:ConstraintLayout,CoordinateLayout Linearlayout Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {if (mOrientation …

OpenGL 自学总结

前言: 本人是工作后才接触到的OpenGL,大学找工作的时候其实比较着急,就想着尽快有个着落。工作后才发现自己的兴趣点。同时也能感觉到自己当前的工作有一点温水煮青蛙的意思,很担心自己往后能力跟不上年龄的增长。因此想在工作之余…

【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )

文章目录 一、静态类型转换 static_cast1、C 静态类型转换 static_cast2、C 语言隐式转换弊端3、代码示例 在之前写过一篇 C 类型转换的博客 【C 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 ) , 简单介绍了 C 类…

Linux系统的文件权限

Linux系统权限的相关概念与理解 (xshell下进行演示) 文章目录: 1:linux系统下两种用户 超级用户(root)与普通用户(非root)的理解root与非root用户之间切换的指令非root用户之间进行切换的指令操作 2:linux文件权限管理 文件访问者的介绍文件的类型与文件的访问权…

openpnp - 自动换刀设置 - 使用克隆功能降低风险

文章目录 openpnp - 自动换刀设置 - 使用克隆功能降低风险概述笔记需要注意的地方将一个做好的吸嘴作为这排其他吸嘴的模板END openpnp - 自动换刀设置 - 使用克隆功能降低风险 概述 自动换刀设置时, 很危险, 动不动就撞刀. 如履薄冰啊:( 看到openpnp在自动换刀时, 有个克隆功…

【Vue】记事本

上一篇&#xff1a;Vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5501 本篇所需指令&#xff1a; v- for v-model v-on v-show 目录 删除功能 添加功能 统计功能 清空功能 v-show 删除功能 <!DOCTYPE html> …

系列十九、Spring实例化bean的方式

一、概述 所谓实例化bean&#xff0c;大白话讲就是Spring如何把这一个个的普通的Java对象创建为Spring bean的。 二、方式 Spring中实例化bean常用的有以下四种&#xff0c;即&#xff1a; ① 构造器方式&#xff1b; ② 静态工厂方式&#xff1b; ③ 实例工厂方式&#xff1b;…

SQL JOIN 子句:合并多个表中相关行的完整指南

SQL JOIN JOIN子句用于基于它们之间的相关列合并来自两个或更多表的行。 让我们看一下“Orders”表的一部分选择&#xff1a; OrderIDCustomerIDOrderDate1030821996-09-1810309371996-09-1910310771996-09-20 然后&#xff0c;看一下“Customers”表的一部分选择&#xff…

帮管客CRM 文件上传漏洞复现

0x01 产品简介 帮管客CRM是一款集客户档案、销售记录、业务往来等功能于一体的客户管理系统。帮管客CRM客户管理系统&#xff0c;客户管理&#xff0c;从未如此简单&#xff0c;一个平台满足企业全方位的销售跟进、智能化服务管理、高效的沟通协同、图表化数据分析帮管客颠覆传…

cuda magma 构建 使用cmake构建的步骤记录

这不是群论代数软件&#xff0c;而是cuda 矩阵计算软件 1. 生成其他精度的源代码 1.1 复制编辑 make.inc cp make.inc-examples/make.inc.openblas ./make.inc 并修改其中的定义&#xff1a; OPENBLASDIR ? /opt/OpenBLAS 这需要实现安装openblas到此处。文件夹解构&…

JAVA小游戏简易版王者荣耀

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;…

虹科分享 | AR世界揭秘:从二维码的起源到数据识别与位姿技术的奇妙融合!

引言&#xff1a;探索AR的神奇世界&#xff0c;我们将从二维码的诞生谈起。在这个科技的海洋中&#xff0c;二维码是如何帮助AR实现数据获取与位姿识别的呢&#xff1f;让我们一起揭开这层神秘的面纱&#xff01; 一、二维码的由来 二维码是将数据存储在图形中的技术&#xff…

王者荣耀,,,,,

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 GameFrame 运行类 package com.sxt; import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;…

【VSCode】自定义转换大小写快捷键

文章目录 VSCode 是没有可以直接转换字母大小写的快捷键的&#xff0c;但是可以通过设置去定义 点击左下角设置按钮&#xff0c;并选择键盘快捷方式 在快捷方式里面搜索写&#xff0c;就能找到&#xff1a; 选择要设置的快捷键&#xff0c;并点击左侧的号 在键盘上按住你想设置…

mysql高级知识点

一、mysql架构 连接层&#xff1a;负责接收客户端的连接请求&#xff0c;可以进行授权、认证(验证账号密码)。服务层&#xff1a;负责调用sql接口&#xff0c;对sql语法进行解析&#xff0c;对查询进行优化&#xff0c;缓存。引擎层&#xff1a;是真正进行执行sql的地方&#x…

类与对象——(1)初识对象——C++中的string

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 或许不安或许迷惑&#xff0c;但…

storyBook常见踩坑报错 和 解决

用StoryBook官网的代码&#xff0c;但报错&#xff0c;Unexpected token’<’ 在js文件中// Button.stories.js|jsx import { Button } from ‘./Button’; export default { component: Button, }; /* *&#x1f447; Render functions are a framework specific featur…

Liunx系统使用超详细(一)

目录 一、Liunx系统的认识 二、Liunx和Windows区别 三、Liunx命令提示符介绍 四、Liunx目录结构 一、Liunx系统的认识 Linux系统是一种开源的、类Unix操作系统内核的实现&#xff0c;它基于Unix的设计原理和思想&#xff0c;并在全球范围内广泛应用。以下是对Linux系统的详…

文件的写入和读取操作

题目&#xff1a; 编写一个程序&#xff0c;实现以下功能&#xff1a; 1. 创建一个新的文本文件&#xff0c;并将用户输入的数据写入文件中。 2. 打开已存在的文本文件&#xff0c;并将其中的数据显示在屏幕上。 #include <stdio.h> #include <stdlib.h> void wri…

一文讲明SpringMVC 【爆肝整理一万五千字】

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 ✈️已经旅游的地点 | 新疆-乌鲁木齐、新疆-吐鲁番、广东-广州…