【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上执行的时间,也是对进程调度的工作进行一个兜底。


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

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

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

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

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

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

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

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

相关文章

蓝桥杯每日一题2023.11.24

题目描述 #include <stdio.h> #define N 100int connected(int* m, int p, int q) {return m[p]m[q]? 1 : 0; }void link(int* m, int p, int q) {int i;if(connected(m,p,q)) return;int pID m[p];int qID m[q];for(i0; i<N; i) ________________________________…

杂货铺 | Windows系统上解压缩tgz文件

文章目录 &#x1f4da;快速终端打开实现 & 解压缩实现步骤&#x1f4da;环境变量的一般配置步骤 & 问题解决思路 &#x1f4da;快速终端打开实现 & 解压缩实现步骤 将对应的tgz文件放入对应的文件夹。快速在指定文件夹下打开终端 打开对应的路径 双击地址栏 然后…

Harmony开发 eTs公共样式抽取

Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用&#xff0c;类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…

2018年2月16日 Go生态洞察:Go 1.10版本发布分析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

【教学类-06-12】20231126 (一)如何让加减乘除题目从小到大排序(以1-20之间加法为例,做正序排列用)

结果展示 优化后 优化前 背景需求&#xff1a; 生成列表 单独抽取显示题目排序方法 存在问题: 我希望 00 01 02……这样排序&#xff0c;但是实际上&#xff0c;除了第一个加数会从小到大排序&#xff0c;第二个被加数的第十位数和个位数都会从小到大排序&#xff0c;也就是…

express中间件

1.中间件的格式 Express的中间件&#xff0c;本质上就是一个 function 处理函数&#xff0c;Express中间件的格式如下: 注意:中间件函数的形参列表中&#xff0c;必须包合 next 参数。而路由处理函数中只包含 req 和 res。 // 常量 mw 所指向的&#xff0c;就是一个中间件函数…

WorkPlus稳定服务助力行业千万用户,打造无界沟通协作平台

在企业移动数字化领域&#xff0c;WorkPlus以其十年如一日的研发实力和千万级用户案例&#xff0c;成为众多企业首选的移动数字化平台。究竟是什么样的力量支撑着WorkPlus在市场上占据如此重要的地位呢&#xff1f;接下来&#xff0c;让我们一起揭开WorkPlus的神秘面纱&#xf…

【精选】框架初探篇之——MyBatis的CRUD及配置文件

MyBatis增删改查 MyBatis新增 新增用户 持久层接口添加方法 void add(User user);映射文件添加标签 <insert id"add" parameterType"com.mybatis.pojo.User">insert into user(username,sex,address) values(# {username},# {sex},# {address}) <…

如何找出excel中两列数据中不同的值(IF函数的用法)

第一部分&#xff0c;举例&#xff1a; 例1&#xff1a; 如下图所示&#xff0c;A列和B列是需要比较的数据&#xff0c;C列为对比规则&#xff1a;IF(A2B2,"是","否") 示例图 例2&#xff1a;给B列的成绩评等级 C列的规则&#xff1a; IF(B2>85,&qu…

京东数据采集(京东数据运营):怎样快速获取京东市场大数据?

相信京东平台的很多品牌方们都有做数据分析的需求&#xff0c;但面对多而杂的市场数据&#xff0c;很多运营者都没有思路。单依靠肉眼来看&#xff0c;很多商品的类目、销售成绩、价格分布等运营者也未必清楚。 其实对于京东平台上市场数据的获取&#xff0c;品牌可以直接借助一…

服务号和订阅号哪个好

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;在推送频率上来看&#xff0c;服务号每月能推送四条消息&#xff0c;而订阅号可以每天&#xff08;24小时&#xff09;推送一条消息。如果企业开通公众号的目的是提供服务&#xff0c;例如售前资讯…

【从浅识到熟知Linux】基本指定之cat、more和less

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;写完这篇我要去吃晚饭啦&#xff01;&#xff01; 文章前言&#xff1a;本文介绍cat、more和less指令三种查看文件的用法并给出示例和截图…