【JavaEE学习】初识进程概念

news2024/12/23 17:25:49

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【Java系列】【JaveEE学习专栏】
本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌

在这里插入图片描述

目录

  • 一、什么是进程
    • 进程和可执行文件的关系
  • 二、计算机如何管理进程
    • 进程管理
    • 并行和并发
  • 三、PCB中关于进程调度的相关属性
  • 四、进程的隔离性和进程间通信

一、什么是进程

我们来看一下进程的概念:进程是操作系统中正在执行的程序的实例。它是计算机执行任务的基本单位。一个进程包含了程序代码、数据和资源,包括内存、文件、网络连接等。

眨眼一看进程概念其实是比较抽象的,我们来举个例子:比如QQ.exe就是一个.exe的可执行程序(存储在硬盘中,属于静态的)。当我们没有双击运行QQ的时候,这个.exe程序肯定是没有在运行的,此时我们就不能称之为是一个进程。
但是一旦我们双击运行QQ.exe这个可执行的程序时,这时才能被称之为是一个进程。再比如如果我们要同时运行多个相同的.exe可执行程序的时候(即一个程序运行多次),此时就可能产生多个进程。

我们看一下下图就是程序运行时候的进程。
在这里插入图片描述
当我们双击程序(即.exe可执行文件)时,操作系统就会把可执行文件中的指令和数据加载到内存中,然后cpu去执行其中的指令并完成一系列的工作,这是一个动态的过程,我们称之为进程。

另外,进程是操作系统中分配硬件资源的基本单位。当一个程序被执行时,操作系统会为其创建一个独立的进程,每个进程都拥有自己的虚拟地址空间、执行堆栈、文件描述符表等资源。进程可以独立地访问和管理这些资源,而不会与其他进程发生冲突。

进程和可执行文件的关系

进程是操作系统中正在运行的程序的一个实例,所以进程是程序的实例化

一个个可执行文件只是存储硬盘上,是一个静态的;而进程之所以是动态的是因为进程会消耗cpu资源、内存资源、硬盘、网络带宽等资源来完成一系列的工作。

进程的运行状态是不断变化的,包括进程的创建、运行、挂起、恢复、终止等操作。操作系统会根据进程的状态和运行环境来调度进程的执行,并分配必要的系统资源,如内存、CPU时间片、I/O操作等。

二、计算机如何管理进程

计算机管理进程的核心思路是先对进程进行描述,然后再对进程进行再组织。

在描述进程方面:

  • 操作系统通常会为每个进程分配一个唯一的标识符(PID),并记录进程的状态、程序计数器、寄存器状态、内存管理信息、打开文件列表以及资源分配信息等。这些描述信息通常会被存储在进程控制块(Process Control Block,PCB)(在Linux中称为task_struct,PCB只是一个通用的叫法)中。

在组织进程方面:

  • 一般是使用双向链表来对进程进行组织的(这里是针对Linux操作系统来说的,比如查看进程列表相当于遍历这个链表,创建进程相当于先创建一个结构体然后再把这个结构体插入到链表中,销毁进程就相当于把这个结构体从链表中删除;当然不同的操作系统所使用的数据结构肯定多多少少是有些区别的)。

进程管理

1.PID进程标识

  • 同一个系统中的同一个时刻,每个进行的PID标识都是不一样的。有时我们运行一个QQ.exe文件时可能会涉及到多个进程。

2.内存指针

  • 内存指针表示该进程所需要所对应的内存资源时怎样的。其中内存资源中最主要的就是从.exe文件加载过来的指令(先将指令从.exe文件中加载到内存中然后进一步交给CPU去执行)和数据(执行指令过程中依赖的一些数据);其中运行过程的一些中间结果也是存储到内存资源中。
  • 总之,内存指针要对指令、数据、以及进程中的一些中间结果要有一个区域划分。

3.文件描述符表
首先我们要知道硬盘是硬件,而应用程序是没法直接接触到硬盘的。实际上是操作系统把硬件抽象成文件,程序操作的是文件,而文件是存储在硬盘上的,这样的话相当于应用程序间接接触到硬盘这一层面了。
另外每个文件都会有文件描述符表来记录当前进程正在使用哪个文件。操作系统每打开一个文件就会产生一个文件描述符(这个文件描述相当于文件的身份标识,同时要注意这个文件描述符只在当前进程内部生效)。操作系统会使用文件描述符表(类似于数组)把文件描述符组织起来。

并行和并发

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

并发:两个进行在同一个cpu逻辑核心上轮着运行。但是由于cpu切换进程的速度极快,在微观上是串行执行,但是在宏观上是同时进行的。注意:并发执行并不意味着进程在同一时间点上真正地同时运行。它更强调的是在一段时间内交替执行,而每个进程只是在短时间内运行。

操作系统在调度这些进程的时候可能是按照并行的方式,也可能是按照并发的方式;但是无论是并行的方式还是并发的方式在应用程序这一层面是感知不到的,只有在cpu内核中才可以感知的到。

所以由于在应用程序方面感知不到到底是用哪种方式进行调度的,所以宏观上并行和并发这两种调度方式的体现方式是一样的,所以我们一般用“并发”来代指并行并发。所以我们平时看到并发的话如果不进行特殊说明的话我们一般将其理解为并行和并发

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

PCB中关于进程调度相关的属性描述了对应的CPU资源的使用情况。

1.进程状态(Process State):描述进程当前的状态,例如就绪(Ready)(即一个进程已经做好了随时在CPU中执行的准备)、运行(Running)、阻塞(Blocked)(有些时候进程没有准备好被调度到CPU中)等状态(进程在系统中的状态有很多种,其中最关键的状态就是运行和阻塞)。

2.优先级(Priority):标识进程的优先级,通常以数字或其他形式表示,较高的优先级将更容易获得 CPU 时间片,以便把系统资源调配给更重要的进程上。

3.上下文切换:为了确保进程能够在下次 CPU 运行时从上次的位置继续往后运行,操作系统会使用一种称为"上下文切换"的机制。
当一个进程的时间片用完或者遇到某个阻塞事件时,操作系统将触发上下文切换,将当前进程的状态保存到其对应的 PCB 中,并选择下一个要执行的进程进行调度。下次轮到该进程运行时,操作系统会从其 PCB 中恢复之前保存的状态,并从上次的位置继续执行。上下文切换过程中,PCB 记录了进程执行过程中 CPU 的寄存器中相关的数据。
这些寄存器中有的是存储的是中间过程的一些结果,有的是存储的一些特殊含义的数据(比如说下一条指令在哪里、当前函数的调用关系是什么),这些寄存器中的数据需要在进程离开CPU之前要保存好,即保存到对应进程的PCB中的上下文字段中(也就是内存中)。这样的话就方便该进程下次再次回到CPU中运行了,即把CPU上下文字段中(也就是内存中)的数据恢复到寄存器中,此时,进程就和上次执行的状态一模一样了。

4.通过查看每个进程的 PCB,可以获取其总执行时间和指令计数器的值,即可统计每个进程在 CPU 上执行的时间和指令数。

四、进程的隔离性和进程间通信

虚拟地址空间并非是物理内存上真是存在的地址,而只是在进程内存在。不同的进程中可以存在相同的虚拟地址空间,但实际上对应到的是不同的真实物理地址。

这样的话进程使用该虚拟地址的内存都需要操作系统进行一个把虚拟地址转换为真实物理地址的一个过程,在这个转换过程中就可以针对虚拟地址是否有效做出一个校验

另外,操作系统在执行进程过程中会检查是否存在非法内存的使用,如果进程访问了未被分配的内存,或者越界访问了已经分配的内存,那么操作系统就会通知这个进程,甚至是强制终止该进程,以避免对其它进程产生影响。

进程隔离性

所以在虚拟地址空间的加持下,每个进程都有自己独立的虚拟地址空间,并且每个进程无法直接访问或者修改其它进程的虚拟地址空间,进而提高了系统的稳定性。

进程间通信

在进程隔离性的基础上,进程之间是可以进程有限制的通信的。进程之间进行通信之间的方式是由很多种的,但是无论是哪一种方式,都是找到一块共同的区域,即多个进程都可以访问到的区域,那么这多个进程就可以通过这个公共的区域来进行数据的交换

好了,本文到这里就结束了,希望友友们可以支持一下一键三连哈。嗯,就到这里吧,再见啦!!!

在这里插入图片描述

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

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

相关文章

IoTDB控制台工具Workbench

文章目录 概述环境要求安装下载启动服务 登录用户界面主界面 连接 概述 Workbench是一个可创建多个连接的图形化数据库管理工具,用于管理IoTDB,提供元数据的可视化与管理、数据的增删改查以及权限控制等功能。Workbench不仅满足专业开发人员的所有需求&…

【lesson7】数据类型之string类型

文章目录 数据类型分类string类型set类型测试 enum类型测试 string类型的内容查找找所有女生(enum中)找爱好有游泳的人(set中)找到爱好中有足球和篮球的人 数据类型分类 string类型 set类型 说明: set:集…

Qt 使用百度的离线地图

使用百度离线地图,一下载百度离线包(offlinemap);二是准备地图瓦片(不同级别的瓦片);三 准备html主页面;四,Q&…

免费提升图片清晰度的AI平台,效果对比一目了然!

随着AI技术的不断发展,我们有了更多的机会去挖掘和提升图片清晰度的可能性。无论是老照片的翻新、档案的修复,还是遥感图像的处理、医学影像的分析,AI都能大显身手。在过去可能很难办到的将分辨率低的图片转为高清图,如今借助AI简…

CLIP的升级版Alpha-CLIP:区域感知创新与精细控制

为了增强CLIP在图像理解和编辑方面的能力,上海交通大学、复旦大学、香港中文大学、上海人工智能实验室、澳门大学以及MThreads Inc.等知名机构共同合作推出了Alpha-CLIP。这一创新性的突破旨在克服CLIP的局限性,通过赋予其识别特定区域(由点、…

精通TypeScript:打造一个炫酷的天气预报插件

前言 ​ 随着数字化和信息化的发展,数据大屏使用越来越广泛,我们不仅需要展示数据,更需要以一种更加美观的方式展示数据。这就必然需要使用到各种图表组件,比如柱状图、饼图、折线图等等。但是有一些效果不太适合通过这种常规图表…

做数据分析为何要学统计学(5)——什么问题适合使用卡方检验?

卡方检验作为一种非常著名的非参数检验方法(不受总体分布因素的限制),在工程试验、临床试验、社会调查等领域被广泛应用。但是也正是因为使用的便捷性,造成时常被误用。本文参阅相关的文献,对卡方检验的适用性进行粗浅…

【Go】基于GoFiber从零开始搭建一个GoWeb后台管理系统(一)搭建项目

前言 最近两个月一直在忙公司的项目,上班时间经常高强度写代码,下班了只想躺着,没心思再学习、做自己的项目了。最近这几天轻松一点了,终于有时间 摸鱼了 做自己的事了,所以到现在我总算是搭起来一个比较完整的后台管…

血的教训,BigDecimal踩过的坑

很多人都用过Java的BigDecimal类型,但是很多人都用错了。如果使用不当,可能会造成非常致命的线上问题,因为这涉及到金额等数据的计算精度。 首先说一下,一般对于不需要特别高精度的计算,我们使用double或float类型就可…

微服务黑马头条(简略笔记)

Linux中nacos的拉取安装 拉取naocs镜像:docker pull nacos/nacos-server:1.2.0创建容器:docker run --env MODEstandalone --name nacos --restartalways -d -p 8848:8848 nacos/nacos-server:1.2.0访问地址:http://192.168.200.130:8848/n…

Python常见面试知识总结(一):迭代器、拷贝、线程及底层结构

前言: Hello大家好,我是Dream。 今天来总结一下Python和C语言中常见的面试知识,欢迎大家一起前来探讨学习~ 【一】Python中迭代器的概念? 可迭代对象是迭代器、生成器和装饰器的基础。简单来说,可以使用for来循环遍历…

vue自定义指令及常用的自定义指令封装

vue2 自定义指令 官网链接https://v2.cn.vuejs.org/v2/guide/custom-directive.html 指令注册 这里是一个 Vue2 的指令合集,详细的指令移步下面具体的指令文章,现在我们在这里要介绍如何在项目中统一管理和使用这些指令。 注册指令 单文件引入注册 …

Linux上进行Nacos安装

Nacos安装指南 仅供参考,若有错误,欢迎批评指正! 后期会继续上传docker安装nacos的过程! 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好…

性能测试基础

性能测试分类 客户端性能:测试APP自身的性能,例如CPU、内存消耗;web页面元素渲染速度 服务端性能:测试服务端项目程序的支持的并发、处理能力、响应时间等,主要通过接口来做性能测试 性能测试指标 并发 同时向服务…

企业举办年会,可以邀请哪些媒体进行宣传?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 年关将至,筹办年会成为每个企业必做的事情,也是大家非常期待的年终大会,在我们策划年会时候,也要抓住最后宣传的机会。那么企业举办年会时…

【信息安全】-ISO/IEC 27001-2022(翻译)

文章目录 范围规范性引用文件3 术语和定义4 组织环境(P)4.1 理解组织及其环境4.2 理解相关方的需求和期望组织应确定:a) 信息安全管理体系相关方;b) 这些相关方的相关要求;c) 哪些要求可以通过信息安全管理体系得到解决。注:相关方的要求可包括法律、法规…

MyBatisPlus简介

1 简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、特性 无侵入 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑…

《IT圈里的“鄙视链”:看不起谁又被谁看不起?》

文章目录 每日一句正能量前言一、编程语言篇二、工具篇三、操作系统篇四、硬件篇五、职场篇后记 每日一句正能量 人的结构就是相互支撑,众人的事业需要每个人的参与。 前言 每个领域都存在着错综复杂的鄙视链,这一点在IT 领域更为突出。从编程语言、工具&#xff0…

SD生成的图像不清晰,如何解决

文生图 选择高清修复: 几点注意 重绘幅度:这里不用太高,他会根据你生成的低分辨率图像,生成高分辨率的图像,可以选择0.3~05之间,给AI跟多想象力空间可以选择0.5 ~ 0.7。太低边缘模糊,太高了可能…

Layui深入

1、代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>注册页面</title> <style> .container { max-width: 600px; margin: 0 auto; padding: 20px; …