如何理解进程

一、进程的概念 

   进程:顾名思义,就是一个完整执行程序的过程。没错,就是这么简单,但是在程序执行的过程之中,系统会为这个执行的程序分配内存资源,这些过程也包含在进程当中。

        进程是动态的,是程序的一次执行过程,有开始,有结束,包含了进程的创建、调度、消亡,是在内存空间中

        程序是静态的,没有执行的概念,一串二进制指令,在外存上存储的二进制文件

         如下图所示,每个进程都被CPU调度执行

  

  • 第一步:操作系统 管理程序的入队顺序,这个入队有操作系统管理分配
  • 第二步:CPU分配时间片给在队列中的程序,这个时间片控制程序运行的时间
  • 第三步:当程序拿到CPU配的时间片之后就执行该程序,否则程序在队列中就绪,不执行

 

二、进程中的状态切换

1、就绪态/运行态

        就绪态   是指进程已经准备好执行,只等待 CPU 的分配。此时,进程已经拥有了所有它执行所需的资源和条件,如程序代码、数据、以及系统资源等,只是因为 CPU 还没有分配给它,进程没有真正运行。

         运行态   :进程正在 CPU 上执行。就绪态拿到时间片运行后的状态

2、阻塞态/休眠态

不可中断阻塞

        当资源有效时,由操作系统唤醒,否则一直处于阻塞等待状态,此时处于休眠态,进程不占用 CPU 资源,操作系统可以将 CPU 分配给其他需要执行的进程

可中断阻塞

        当资源有效时,由操作系统唤醒,与不可中断阻塞的区别:处于可中断阻塞态进程可以被其他进程唤醒

        唤醒:当进程在休眠态时,它会被操作系统的某些事件唤醒。例如,当 I/O 操作完成、定时器到期,或者其他事件发生时,进程会从休眠态变为就绪态,重新进入调度队列,等待 CPU 的分配。

3、终止态/僵尸态

        终止态:表示进程结束但尚未消亡的一种状态,此时进程已经结束运行并释放大部分资源,比如还未释放进程控制块

        僵尸态:指的是一个进程已经终止执行,但仍然在系统的进程表中保留着其信息。这些信息包括进程的退出状态和一些统计信息,供其父进程在调用 wait 系统调用时获取

4、停止态

停止运行,暂时挂起,进程被暂停,通过其他进程唤醒

 

 

 三、进程分配的资源

        以进程为单位申请释放内存空间

        以进程为单位分配CPU资源和时间片

        以进程为单位管理自己的虚拟内存空间,在需要的时候映射到物理内存地址上

        以进程为单位分配文件描述符:1024个

 四、进程的内存管理

        操作系统为每个进程都分配4G的内存空间(虚拟内存空间)

        0~3G是用户内存空间(所有进程相互独立),3G~4G是内核内存空间(所有进程共享)

         注意:分配的内存是虚拟内存。虚拟内存是计算机系统内存管理的一种技术,旨在使应用程序在执行时能够使用比实际物理内存更大的内存空间。虚拟内存为每个运行的程序提供了一个统一的、连续的地址空间,独立于实际的物理内存。操作系统会为每个进程分配一个虚拟地址空间,这个地址空间可以远大于实际的物理内存。

 

在用户空间里面,会为进程运行分配资源,这些资源分配如下图: 

 

五、进程标识

        操作系统会给每个进程都分配一个编号,编号唯一,这个编号称之为进程号

        操作系统标识进程不是通过程序名,而是通过进程号(pid)

主要进程标识:

        进程号:PID(process id)

        父进程号:PPID(parent process id)

        进程组号:PGID,进程组:若干个进程的集合称之为进程组,默认情况下,新创建的进程会进程父进程的进程组ID

        会话组号:SID,会话组:若干个进程组的集合称之为会话组,默认情况下,新创建的进程会继承父进程的会话ID

 特殊的进程号:

        0:idle进程,操作系统引导程序进程,创建1 和2 进程

        1:init进程 初始化内核的各个模块,当内核启动完毕后,用于收养孤儿进程(没有父进程的进程)

        2:kthread进程 用于进程调度

 

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

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

相关文章

【网络编程通关之路】 Tcp 基础回显服务器(Java实现)及保姆式知识原理详解 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

Linux下IO多路复用—select,poll,epoll

一.概述 1.IO多路复用介绍 IO多路复用是一种操作系统的技术,用于在单个线程或进程中管理多个输入输出操作。它的主要目的是通过将多个IO操作合并到一个系统调用中来提高系统的性能和资源利用率,避免了传统的多线程或多进程模型中因为阻塞IO而导致的资源…

在Linux下搭建go环境

下载go go官网:All releases - The Go Programming Language 我们可以吧压缩包下载到Windows上再传到Linux上,也可以直接web下载: wget https://golang.google.cn/dl/go1.23.0.linux-amd64.tar.gz 解压 使用命令解压: tar -x…

解决有向图中节点出度和入度计算问题

解决有向图中节点出度和入度计算问题 引言邻接链表表示法邻接链表的数据结构创建图添加边计算节点的出度伪代码C代码计算节点的入度伪代码C代码时间复杂度示例结论引言 在图论中,有向图是一种重要的数据结构,用于表示元素之间的方向性关系。有向图中的节点(顶点)通过边连接…

VBA之正则表达式(47)-- 快速将公式转换为静态值计算

实例需求:工作表I列包含多种计算公式,为了便于演示,将I列公式显示在J列单元格中,现在需要将公式的单元格引用转换为静态值,如K列所示。 示例代码如下。 Sub RegExpDemoReplace()Dim Res()Dim objRegEx As ObjectDim o…

[解决]Invalid configuration `aarch64-openwrt-linux‘: machine `aarch64-openwrt

背景 交叉编译libev-4.19 问题 checking host system type… Invalid configuration aarch64-openwrt-linux: machine aarch64-openwrt’ not recognized 解决 打开config.sub,在244行后添加"| aarch64-openwrt \ "

Git学习(001 git介绍以及安装)

尚硅谷2024最新Git企业实战教程,全方位学习git与gitlab 总时长 5:42:00 共40P 此文章包含第1p-第p4的内容 文章目录 介绍Git介绍GitLab介绍 概述Git安装版本控制工具介绍 介绍 Git介绍 GitLab介绍 相当于中央仓库 概述 Git安装 进入官网(下载当前版本 2.43.0) …

解决 RT-Thread bsp stm32l476-st-nucleo STM32L4 HAL库缺失问题

问题描述 当前最新的 RT-Thread 版本:5.2.0,发现在 编译 BSP stm32l476-st-nucleo,缺少了 STM32L4xx_HAL 驱动库,造成生成的 工程,如 Keil MDK5 工程无法编译通过 初步的【临时】解决方法是 回退 RT-Thread 的版本&am…

rabbitmq发送的消息接收不到

1.消息被其他消费者消费 2.主要说的2这种情况,就是在延迟队列中,忘记给一个bean加注解导致日志报exchange not found. 这个报错,进而引发了bindings没有绑定。没有绑定的话,发送消息就会接收不到。

心脑血管科曹启富医生谈:引起高血压的原因

曹医生指出,高血压这一日益普遍的健康问题,其根源深藏于多重复杂因素之中。首要提及的便是年龄因素,它如同时间的刻度,悄然影响着我们的血管健康。随着年龄的增长,血管逐渐失去往昔的弹性与活力,变得僵硬而…

HTMl标签;知识回忆;笔记分享;

HTML标签是用于定义和组织网页内容的基础构建块。每个标签都有特定的作用。 一&#xff0c;标准结构标签&#xff1a; HTML文档标准结构&#xff1a; <html><head></head><body>this is my second html... </body> </html> 【1】htm…

python-FastApi框架

文章目录 FastApi一. 简介二. 特性三. 安装1. 安装fastapi模块2. 安装ASGI服务器( Uvicorn 或者 Hypercorn) 四. 实例1. 创建**main.py**文件(GET请求)2. 运行3. 测试4. 更新main_py(加入PUT请求) 五. 自动化API文档1. Swagger UI(交互式文档)2. ReDoc(可选式文档) FastApi 一…

企微获客链接 中文乱码问题处理

企微获客链接 中文乱码问题处理 问题背景问题处理补充内容 问题背景 为了推广产品&#xff0c;同时更好的服务客户&#xff0c;公司在接入企业微信后&#xff0c;需要用到企微获客链接相关推广操作&#xff0c;那么通过API 接口创建企微获客链接时&#xff0c;出现了中文乱码问…

OpenCV 图像处理基础算法介绍c++

VS2022配置OpenCV环境 关于OpenCV在VS2022上配置的教程可以参考&#xff1a;VS2022 配置OpenCV开发环境详细教程 图像处理 图像处理是一个广泛的领域&#xff0c;它涉及到对图像数据进行分析、修改和改进的各种技术。以下是一些基本的图像处理操作&#xff0c;这些操作通常可…

AntV G6 的坑之——渲染残留/残影

G6 4.x 依赖的渲染引擎 antv/g4.x 版本支持了局部渲染&#xff0c;带了性能提升的同时&#xff0c;也带来了图形更新时可能存在渲染残影的问题。比如拖拽节点时&#xff0c;节点的文本会留下轨迹。 解决办法&#xff1a; 关闭局部渲染&#xff0c;graph.get("canvas"…

uni-app组件

一. 什么是组件,有什么好处? 在uni-app中&#xff0c;组件是构成应用的基本单位&#xff0c;它们是用来定义用户界面的一部分&#xff0c;并且通常包含了视图和逻辑。组件的设计使得开发者能够以声明式的方式构建应用界面&#xff0c;并且通过组件化的开发方式来提高代码的复…

Centos7 java安装

卸载自带 jdk 查询所有的 java( 使用最小配置命令行则查询不出 java 直接进行安装即可 ) 卸载以下4个java软件 删除之后在使用命令进行查询 rpm -qa | grep java 解压jdk&#xff1a; 找到下载位置 使用Ctrlf搜索 配置环境变量&#xff1a; 打开/ etc/profile 在末尾添加以下…

旅游行业怎么利用C#接口发送短信

旅游企业一般拥有众多的分支机构&#xff0c;同时各地分支机构又有众多下属分散在当地各区的旅游营业报名点&#xff0c;以前传统的解决方案是采用专线、MODEM拔号等方式&#xff0c;专线的成本很高&#xff0c;MODEM拔号更费时&#xff0c;且长途拔号互联成本在多点情况下费用…

【一起学Rust | 框架篇 | Tauri2.0框架】rust和前端的相互调用(前端调用rust)

文章目录 前言1. 前端调用rust&#xff08;command&#xff09;1. 在后端定义一个command2. 注册command3. 前端调用command 2. 前端调用rust&#xff08;event&#xff09;4. command完整实例 前言 本期将继续接着上一期&#xff0c;继续探索tauri中rust和前端的相互调用&…

【ceph学习】ceph如何进行数据的读写(1)

版本 ceph版本为17. ceph如何进行读写接口的实现 Ceph的客户端通过librados的接口进行集群的访问&#xff0c;这里的访问包括&#xff1a; 1&#xff09;对集群的整体访问 2&#xff09;对象的访问 两类接口&#xff0c;这套接口&#xff08;API&#xff09;包括C、C和Pytho…