Java 进程状态

在这里插入图片描述

一,进程介绍

  1. 定义:进程是计算机中运行中的程序的实例。它包含了程序的代码、数据以及程序运行时所需的各种资源,如内存空间、CPU时间等。

  2. 特征:

    • 动态性:进程是动态创建、执行和销毁的。
    • 并发性:在多道程序环境下,多个进程可以同时存在并相互竞争执行。
    • 独立性:每个进程拥有独立的地址空间和资源,相互之间不受影响。
    • 随机性:由于进程的并发执行,进程的执行顺序和时间是不确定的。
  3. 状态:进程在其生命周期中会经历不同的状态,常见的包括:

    • 就绪状态:进程已经准备好运行,只等待分配CPU时间。
    • 运行状态:进程正在CPU上执行。
    • 阻塞状态:进程因等待某些事件而暂停执行,如等待I/O完成。
    • 创建和销毁状态:进程被创建或者被销毁时处于这两种特殊状态。
  4. 进程管理:操作系统负责对进程进行管理,包括进程的创建、调度、同步、通信、销毁等操作。进程管理的目标是有效地利用系统资源,提高系统的吞吐量和响应速度,保证系统的稳定性和安全性。

总的来说,进程是操作系统中最基本的概念之一,它使得计算机能够同时执行多个任务,实现了并发执行和资源共享,是操作系统中的核心组成部分。

进程是动态的,程序是静态的

进程创建是操作系统中的一个重要操作,涉及到多个步骤。以下是典型的进程创建过程:

  1. 申请空间: 当用户或系统请求创建新进程时,操作系统首先需要为新进程分配所需的内存空间。这包括进程控制块(PCB)和程序执行所需的内存空间(代码段、数据段、堆栈等)。

  2. 复制地址空间: 如果是通过fork()系统调用创建子进程(在类Unix系统中常见),则操作系统会复制父进程的地址空间给子进程。这包括代码段、数据段、堆和栈等。在Windows系统中,使用CreateProcess()函数来创建新进程时,会显式指定新进程的地址空间信息。

  3. 加载程序: 操作系统需要将要执行的程序加载到新进程的地址空间中。这涉及将程序的可执行文件从磁盘或其他存储介质中读取到内存,并将其放置在新进程分配的内存空间中。

  4. 初始化: 操作系统需要对新进程进行初始化,包括设置进程的状态、寄存器等初始值。这确保了进程在开始执行时具有正确的环境和状态。

  5. 设置上下文: 操作系统需要为新进程设置上下文信息,包括进程标识符(PID)、优先级、文件描述符等。这些信息在进程执行期间用于管理和调度进程。

  6. 建立 PCB: 操作系统会创建新进程的进程控制块(PCB),并将其加入系统的进程表中。PCB中包含了进程的各种属性和状态信息,供操作系统管理和调度。

  7. 将进程加入调度队列: 最后,操作系统将新进程标记为就绪状态,并将其加入到适当的调度队列中。当系统调度到该进程时,它开始执行其代码,从而完成进程的创建过程。

总的来说,进程创建是一个复杂的过程,涉及到内存管理、程序加载、状态初始化、上下文设置等多个方面。操作系统需要确保创建的进程能够在系统中正确执行,并与其他进程进行适当的交互。

这里所说的PID可以在任务管理器里面轻松的看到
在这里插入图片描述

二,进程状态的转换

在这里插入图片描述

进程状态之间的转换通常由操作系统内核管理,其中包括从就绪态到运行态、运行态到就绪态、运行态到阻塞态、以及阻塞态到就绪态的转换:

  1. 就绪态到运行态
    当一个进程处于就绪态时,它已经准备好执行,但还没有获得CPU资源。当操作系统的调度器选择了该进程作为下一个要执行的任务,并且分配了CPU资源给该进程时,该进程会从就绪态转换为运行态,开始执行其指令。

  2. 运行态到就绪态
    当一个进程处于运行态时,它正在执行其指令并占用CPU资源。如果发生了一些需要暂停该进程执行的事件,比如等待IO操作完成,此时进程会从运行态转换为就绪态。在这种情况下,操作系统会将该进程暂停执行,并将其放回就绪队列中,等待下一次被调度执行。

  3. 运行态到阻塞态
    在运行态时,如果一个进程发起了需要等待某些事件完成的操作,比如IO操作,此时该进程会从运行态转换为阻塞态。在进入阻塞态后,该进程不再占用CPU资源,而是等待特定的事件发生。例如,如果一个进程发起了读取文件的操作,但文件尚未准备好,进程将进入阻塞态,直到文件准备就绪。

  4. 阻塞态到就绪态
    当一个进程处于阻塞态时,等待的事件发生后,操作系统会将其从阻塞态转换为就绪态。在这个过程中,进程不再被阻塞,可以重新被调度执行。一旦进程处于就绪态,它就可以在接下来的调度中获得CPU资源并开始执行。

这些状态之间的转换是操作系统进行进程管理和调度的基础,确保了系统资源的合理分配和进程的正常执行。

三,子进程

子进程是在操作系统中由父进程创建的新进程。在大多数操作系统中,包括Windows、Linux和macOS,进程可以创建其他进程作为其子进程。子进程与父进程类似,它们可以执行独立的任务,但是它们是由父进程派生出来的。通常情况下,子进程可以继承父进程的一些属性,如文件描述符、环境变量等,但也可以有自己独立的属性和状态。在多任务环境中,子进程的创建和管理对于并发执行任务和资源管理至关重要。

子进程通常可以继承父进程的一些资源,包括但不限于以下内容:

  1. 文件描述符:子进程可以继承父进程打开的文件描述符,这意味着子进程可以读取或写入相同的文件或网络套接字。

  2. 环境变量:子进程可以继承父进程的环境变量,这些变量通常包含了执行环境的一些配置信息。

  3. 控制终端:在一些情况下,子进程可能会继承父进程的控制终端,这取决于操作系统和终端设置。

  4. 信号处理:子进程可以继承父进程对信号的处理方式。

  5. 进程组和会话:子进程可能会加入到与父进程相同的进程组或会话中,这取决于操作系统的设置和父进程的行为。

但是,子进程也可以有自己独立的资源,例如:

  1. 内存空间:子进程通常会有自己独立的内存空间,不会与父进程共享内存。

  2. 进程标识符(PID):每个进程都有唯一的PID,子进程会有自己独立的PID。

  3. 文件描述符表:子进程会继承父进程的文件描述符表的拷贝,但它们是独立的,修改一个进程的文件描述符表不会影响其他进程。

总的来说,子进程通常会继承父进程的一些资源,但也会有自己独立的资源。

作为一个Java工程师了解到这里其实已经差不多了,有更佳想了解深入的可以 学习wangdao操作系统的书,里面有详细介绍什么是进程和线程。

扩展的讲一下,目前的操作系统都是线程是调度的基本单位,进程作为拥有资源的基本单位 如果有感兴趣这句话的,我后期会专门介绍一下这句话的意思

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

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

相关文章

VSCode好用插件

由于现在还是使用vue2,所以本文只记录vue2开发中好用的插件。 美化类插件不介绍了,那些貌似对生产力起不到什么大的帮助,纯粹的“唯心主义”罢了,但是如果你有兴趣的话可以查看上一篇博客:VSCode美化 1. vuter 简介&…

【opencv】示例-barcode.cpp 条形码检测和解码

#include <iostream> // 引入标准输入输出流库 #include "opencv2/objdetect.hpp" // 引入OpenCV物体检测库 #include "opencv2/imgproc.hpp" // 引入OpenCV图像处理库 #include "opencv2/highgui.hpp" // 引入OpenCV高层GUI库using names…

169.乐理基础-调式板块总结、调式判断

如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里&#xff0c;这里面有五线谱对应的音名&#xff0c;对比着看 如果不认识调号去看112.五线谱的调号&#xff08;一&#xff09;、113.五线谱的调号&#xff08;二&#xff09;、114.快…

如何使用 Midjourney?2024年最新更新

一&#xff1a;基础篇 1&#xff1a;注册 首先&#xff0c;你需要注册一个 Discord 账号&#xff0c;然后加入 Midjourney 的 Discord 服务器。或者去 Midjourney 的官网点击右下角的 Join the Beta&#xff1a; ​ 2&#xff1a;在 Discord 公共服务器里使用 注册并进入到…

JVM基础

初识JAM JVM就是JAVA虚拟机&#xff0c;本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行JAVA字节码文件. 下面是java代码执行过程 JVM的功能 1.解释和运行 对字节码文件中的指令实时的解释成机器码 2.内存管理 自动为对象&#xff0c;方法等分配内存自动的垃圾回…

基于顺序表实现通讯管理系统!(有完整源码!)

​​​​​​​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01;​​​​​​​ 目录 1、实现思路 ​…

OCm (Radeon Open Compute) 和 CUDA (Compute Unified Device Architecture)

OCm&#xff08;Radeon Open Compute&#xff09;和CUDA&#xff08;Compute Unified Device Architecture&#xff09;是两种旨在利用图形处理单元&#xff08;GPU&#xff09;进行通用计算的技术和框架。 OCm&#xff08;Radeon Open Compute&#xff09;&#xff1a; OCm&…

CentOS 7 下离线安装RabbitMQ教程

CentOS 7 下安装RabbitMQ教程一、做准备&#xff08;VMWare 虚拟机上的 CentOS 7 镜像 上安装的&#xff09; &#xff08;1&#xff09;准备RabbitMQ的安装包&#xff08;rabbitmq-server-3.8.5-1.el7.noarch&#xff09;下载地址mq https://github.com/rabbitmq/rabbitmq-se…

os.listdir()bug总结

今天测试出一个神奇的bug&#xff0c;算是教训吧&#xff0c;找了两天不知道问题在哪&#xff0c;最后才发现问题出现在这 原始文件夹显示 os.listdir()结果乱序 import os base_path "./file/"files os.listdir(base_path)print(files)问题原因 解决办法(排序)

NB-IOT 介绍 1

1 名称介绍 NB-----Narrow Band IOT -----Internet of things NB-IOT---窄带物联网 2 物联网技术发展 以太网&#xff1a;网线 RS232一种串行通信标准&#xff0c;通常采用正负电压来表示逻辑值&#xff0c;如正电压表示逻辑1&#xff0c;负电压表示逻辑0。 RS485一种串行通…

(学习日记)2024.04.06:UCOSIII第三十四节:互斥量函数接口讲解

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【二分查找】Leetcode 二分查找

题目解析 二分查找在数组有序可以使用&#xff0c;也可以在数组无序的时候使用&#xff08;只要数组中的一些规律适用于二分即可&#xff09; 704. 二分查找 算法讲解 当left > right的时候&#xff0c;我们循环结束&#xff0c;但是当left和right缩成一个点的时候&#x…

大数据分析与内存计算——Spark安装以及Hadoop操作——注意事项

一、Spark安装 1.相关链接 Spark安装和编程实践&#xff08;Spark3.4.0&#xff09;_厦大数据库实验室博客 (xmu.edu.cn) 2.安装Spark&#xff08;Local模式&#xff09; 按照文章中的步骤安装即可 遇到问题&#xff1a;xshell以及xftp不能使用 解决办法&#xff1a; 在…

Node.js------Express

◆ 能够使用 express.static( ) 快速托管静态资源◆ 能够使用 express 路由精简项目结构◆ 能够使用常见的 express 中间件◆ 能够使用 express 创建API接口◆ 能够在 express 中启用cors跨域资源共享 一.初识Express 1.Express 简介 官方给出的概念&#xff1a;Express 是基…

AcWing 312. 乌龟棋(每日一题)

原题链接&#xff1a;312. 乌龟棋 - AcWing题库 小明过生日的时候&#xff0c;爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘只有一行&#xff0c;该行有 N 个格子&#xff0c;每个格子上一个分数&#xff08;非负整数&#xff09;。 棋盘第 1 格是唯一的起点&#xff0c;第…

LC 222.完全二叉树的节点个数

222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中…

解决沁恒ch592单片机在tmos中使用USB总线时,接入USB Hub无法枚举频繁Reset的问题

开发产品时采用了沁恒ch592&#xff0c;做USB开发时遇到了一个奇葩的无法枚举问题。 典型症状 使用USB线直连电脑时没有问题&#xff0c;可以正常使用。 如果接入某些特定方案的USB Hub&#xff08;例如GL3510、GL3520&#xff09;&#xff0c;可能会出现以下2种情况&#xf…

2024年第八届人工智能与虚拟现实国际会议(AIVR 2024)即将召开!

2024年第八届人工智能与虚拟现实国际会议&#xff08;AIVR 2024&#xff09;将2024年7月19-21日在日本福冈举行。人工智能与虚拟现实的发展对推动科技进步、促进经济发展、提升人类生活质量等具有重要意义。AIVR 2024将携手各专家学者&#xff0c;共同挖掘智能与虚拟的无限可能…

【C++初阶】 vector 在OJ中的使用

前言&#xff1a; &#x1f3af;个人博客&#xff1a;Dream_Chaser &#x1f388;博客专栏&#xff1a;C &#x1f4da;本篇内容&#xff1a;只出现一次的数字 和 杨辉三角 OJ 目录 一、只出现一次的数字 题目描述&#xff1a; 二、杨辉三角OJ 题目描述&#xff1a; 一、只…

AI设计优化电机、电路与芯片?

一、AI进行电机本体设计 使用AI进行电机本体设计是一种前沿且具有潜力的方法&#xff0c;通过深度学习、强化学习、遗传算法等AI技术&#xff0c;可以实现电机设计的自动化和优化。具体应用可以包括以下几个方面&#xff1a; 此图片来源于网络 1. **参数优化**&#xff1a; …