【JavaEE初阶】浅谈进程

news2024/11/27 15:54:12

✏️✏️✏️今天正式进入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.coloradmin.cn/o/1254653.html

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

相关文章

Unsupervised Skill Discovery via Recurrent Skill Training论文笔记

Zheyuan Jiang, Jingyue Gao, Jianyu Chen (2022). Unsupervised Skill Discovery via Recurrent Skill Training. In Conference on Neural Information Processing Systems (NeurIPS), 2022. 通过循环技能训练发现无监督技能 1、Motivation 以往的无监督技能发现方法主要使…

Spring面向切面编程(AOP);Spring控制反转(IOC);解释一下Spring AOP里面的几个名词;Spring 的 IoC支持哪些功能

文章目录 Spring面向切面编程(AOP)什么是AOPSpring AOP and AspectJ AOP 的区别?Spring AOP中的动态代理如何理解 Spring 中的代理?解释一下Spring AOP里面的几个名词Spring在运行时通知对象Spring切面可以应用5种类型的通知:什么是切面 Aspe…

【开源】基于Vue+SpringBoot的食品生产管理系统

项目编号: S 044 ,文末获取源码。 \color{red}{项目编号:S044,文末获取源码。} 项目编号:S044,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3…

Typescript基础面试题 | 05.精选 ts 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

代码随想录算法训练营第四十九天|123. 买卖股票的最佳时机III 、188. 买卖股票的最佳时机 IV

LeetCode 123. 买卖股票的最佳时机 III 题目链接:123. 买卖股票的最佳时机 III - 力扣(LeetCode) 这个道题和121. 买卖股票的最佳时机 I、122. 买卖股票的最佳时机 II很像,是两题的结合。 我们就定义两个数组来实现。 代码&…

【Apache Doris】Manager极致丝滑地运维管理

【Apache Doris】Manager极致丝滑地运维管理 1.标准VS可视化运维管理2. 环境信息2.1.硬件信息2.2.软件信息 3.前置准备3.1.安装包准备3.2.文档手册准备 4.集群初始化4.1.系统参数预设4.2.Manager部署4.3.新集群部署4.4 监控告警4.4.1 监控4.4.2 告警 5. 集群升级5.1 新包准备5.…

C#,《小白学程序》第二十一课:大数的减法(BigInteger Subtract)

1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary> /// 大数的&#xff08;加减乘除&#xff09;四则运算、阶乘运算 /// 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法 /// </summary> p…

第二十一章 解读XML与JSON文件格式(工具)

XML 带分隔符的文件仅有两维的数据&#xff1a;行 & 列。如果我们想在程序之间交换数据结构&#xff0c;需要一种方法把层次结构&#xff0c;序列&#xff0c;集合和其它的数据结构编码成文本。 今天要说的 XML 是最突出的处理上述这种转换的标记格式&#xff0c;它使用标…

01、copilot+pycharm

之——free for student 目录 之——free for student 杂谈 正文 1.for student 2.pycharm 3.使用 杂谈 copilot是github推出的AI程序员&#xff0c;将chatgpt搬到了私人终端且无token限制&#xff0c;下面是使用方法。 GitHub Copilot 是由 GitHub 与 OpenAI 合作开发的…

智能AI名片-Pushmall推贴SCRM数字名片的发展趋势

智能AI名片-Pushmall推贴SCRM数字名片的发展趋势 基于相识靠铺人脉相互引荐&#xff0c;共享人脉资源&#xff0c;众筹共创赋能交友、商务实现大众创业&#xff0c;灵活创收的智能AI名片平台。帮助企业实现成员管理与客户资源管理。功能说明 1、搜索查询&#xff1a;个人信息与…

Leetcode—828.统计子串中的唯一字符【困难】

2023每日刷题&#xff08;四十一&#xff09; Leetcode—828.统计子串中的唯一字符 算法思想 枚举所有种类字母在s中出现的位置&#xff0c;分别统计只包含这个字母不包含该类字母中其他字母的子串个数 实现代码 int uniqueLetterString(char* s) {int len strlen(s);cha…

Quartz定时任务基础

springBoot有一个定时执行某个方法的 注解&#xff1a; Scheduled 可以满足挺多的需求&#xff0c;但是到了一些场景&#xff0c;就显得比较麻烦&#xff0c;比如&#xff1a; 机器待机五分钟后执行切换待机状态。如果是按照使用Scheduled注解&#xff0c;就得持久化一个表&…

【5G PHY】5G SS/PBCH块介绍(四)

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

利用ngrok实现内网穿透(全网最详细教程)

准备工具&#xff1a; 1、phpstudy 用于在本地搭建网站 2、ngrok 用于将自己的本地端口暴露到公网上&#xff0c;从而实现内网穿透 文章开始前给大家分享一个学习人工智能的网站&#xff0c;通俗易懂&#xff0c;风趣幽默 人工智能https://www.captainbed.cn/myon/ ~~~~~…

C#文件基本操作(判断文件是否存在、创建文件、复制或移动文件、删除文件以及获取文件基本信息)

目录 一、判断文件是否存在 1.File类的Exists()方法 2.FileInfo类的Exists属性 二、创建文件 1.File类的Create()方法 2.FileInfo类的Create()方法 三、复制或移动文件 1.File类的Copy()方法 2.File类的Move()方法 3.FileInfo类的CopyTo()方法 四、删除文件 1.File…

大数据数据仓库,Sqoop--学习笔记

数据仓库介绍 1. 数据仓库概念 数据仓库概念创始人在《建立数据仓库》一书中对数据仓库的定义是&#xff1a;数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的&#xff08;Subject Oriented&#xff09;、数据集成的&#xff08;Integrated&#xff09;、相对…

【AUTOSAR】【通信栈】ComXf

AUTOSAR专栏——总目录_嵌入式知行合一的博客-CSDN博客文章浏览阅读292次。本文主要汇总该专栏文章,以方便各位读者阅读。https://xianfan.blog.csdn.net/article/details/132072415 目录 一、概述 二、限制说明

NX二次开发UF_CURVE_ask_curve_turn_angle 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_turn_angle Defined in: uf_curve.h int UF_CURVE_ask_curve_turn_angle(tag_t curve, double orientation [ 3 ] , double * angle ) overview 概述 Returns …

Python大数据考题

Python大数据考题&#xff1a; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&#xff0c;尤其sql要…

Typescript基础面试题 | 01.精选 ts 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…