Linux 下进程基本概念与状态

news2024/11/25 21:27:10

文章目录

  • 一、进程的定义
  • 二、 描述进程-PCB
    • task_ struct内容分类
  • 三、 进程状态

一、进程的定义

  1. 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
  2. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

二、 描述进程-PCB

进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。称之为PCB(process control block),Linux操作系统下的PCB是 task_struct

task_ struct内容分类

  1. 标示符: 描述本进程的唯一标示符,用来区别其他进程。

pid


  1. 状态: 任务状态,退出代码,退出信号等。
    status

  1. 优先级: 相对于其他进程的优先级。
    prio

  1. 程序计数器: 程序中即将被执行的下一条指令的地址。
  2. 上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
    point

  1. 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
    memory

  1. I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
    file

  1. 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
    time
  2. 其他信息

大体图
picture

三、 进程状态

在Linux系统中,进程的状态可以通过多种方式来查看,最常见的方式是使用ps命令和top命令。以下是一些常见的进程状态及其解释:

  1. R (运行状态)

    • 进程正在运行或在运行队列中等待。
  2. S (可中断的睡眠状态)

    • 进程正在等待某个事件完成,可以被信号中断。例如,等待用户输入或等待资源变得可用。
  3. D (不可中断的睡眠状态)

    • 进程处于睡眠状态,但不可被信号(signal)中断。这通常表示进程正在等待I/O操作(如磁盘操作)完成。

使用htop命令查看htop

  1. T (停止状态)

    • 进程已被停止(通常是通过信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU)。

    使用 19) SIGSTOP 号信号停止正在运行的进程

    kill -19  pid
    

    stop

  2. t (跟踪或停止状态)

    • 进程被跟踪,通常是由调试器停止的。
      使用gdb调试时查看进程状态
      t
  3. Z (僵尸状态)

  • 进程已经结束,但其父进程尚未通过wait()系统调用来回收其资源。此时,进程仍保留在进程表中,但不再占用系统资源(除了进程表项)。
  • 僵死进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。
    所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态
    代码如下
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // 包含 sleep 和 getpid 函数所需的头文件
#include <sys/types.h> // 包含 pid_t 所需的头文件

int main() {
    pid_t id = fork();

    if (id < 0) {
        perror("fork");
        return 1;
    } else if (id > 0) { // 父进程
        printf("parent[%d] is sleeping...\n", getpid());
        sleep(30); // 父进程休眠30秒
    } else { // 子进程
        printf("child[%d] is beginning Z...\n", getpid());
        sleep(5); // 子进程休眠5秒
        exit(EXIT_SUCCESS); // 子进程正常退出
    }

    return 0; 
}

如下图


child


僵尸进程危害

僵尸进程(Zombie Process)在Linux操作系统中是一种特有的进程状态,这种状态的进程不再占用CPU或内存资源(除了进程表中的一个槽位),但它们仍然会对系统产生一些潜在的危害。

  1. 资源浪费

    • 僵尸进程虽然不再执行任何代码或占用CPU时间,但它们仍然占用系统进程表中的一个槽位。在进程表资源有限的情况下,如果僵尸进程数量过多,可能会导致进程表溢出,进而影响到系统的正常运行。
    • 此外,由于父进程需要维护对子进程的引用,这也会占用一定的系统资源。
  2. 进程号枯竭

    • 系统中的进程号是有限的。如果僵尸进程过多,它们会占用大量的进程号,导致系统无法分配新的进程号给新创建的进程。这可能会影响到系统的并发性能和任务调度能力。
  3. 父进程信息泄漏

    • 僵尸进程仍然保留有关其父进程的一些信息,如父进程的PID(进程标识符)。在某些安全敏感的应用程序中,这可能会导致敏感信息的泄漏。

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

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

相关文章

数据库MYSQL——表的设计

文章目录 前言三大范式&#xff1a;几种实体间的关系&#xff1a;一对一关系&#xff1a;一对多关系&#xff1a;多对多关系&#xff1a; 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作&#xff0c; 是在已经创建数据库&#xff0c;表之上的操作。 在实…

开源动态表单form-create-designer 扩展个性化配置的最佳实践教程

在开源低代码表单设计器 form-create-designer 的右侧配置面板里&#xff0c;field 映射规则为开发者提供了强大的工具去自定义和增强组件及表单配置的显示方式。通过这些规则&#xff0c;你可以简单而高效地调整配置项的展示&#xff0c;提升用户体验。 源码地址: Github | G…

面试:请阐述MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用

大家好&#xff0c;我是袁庭新。星球里的小伙伴去面试&#xff0c;面试官问&#xff1a;MySQL配置文件my.cnf中参数log-bin和binlog-do-db的作用&#xff1f;一脸懵逼&#xff5e;不知道该如何回答。 在MySQL的配置文件my.cnf中&#xff0c;log-bin和binlog-do-db是与二进制日志…

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时&#xff0c;mongo监控显示连接数已使用100%。 java程序报错信息&#xff1a; org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…

Hive离线数仓结构分析

Hive离线数仓结构 首先&#xff0c;在数据源部分&#xff0c;包括源业务库、用户日志、爬虫数据和系统日志&#xff0c;这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。 在离线…

MySQL1——基本原理和基础操作

文章目录 Mysql数据库1——基本原理和基础操作1. 基本概念2. Mysql体系结构2.1 连接层2.2 服务层2.3 存储引擎层 3. 三级范式与反范式4. 完整性约束4.1 实体完整性约束4.2 参照完整性约束 5. CRUDDDLDMLDCLDQL 6. 高级查询基础查询条件查询分页查询查询结果排序分组聚合查询联表…

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…

Redis 常用数据类型插入性能对比:循环插入 vs. 批量插入

Redis 是一款高性能的键值数据库&#xff0c;其支持多种数据类型&#xff08;String、Hash、List、Set、ZSet、Geo&#xff09;。在开发中&#xff0c;经常会遇到需要插入大量数据的场景。如果逐条插入&#xff0c;性能会显得较低&#xff0c;而采用 Pipeline 批量插入 能大幅提…

uniapp页面样式和布局和nvue教程详解

uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px&#xff0c;一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准&#xff0c;750rpx恰好为屏幕宽度。屏幕变宽&#xff0c;rpx 实际显示效果会等比放大…

Spring AI 框架使用的核心概念

一、模型&#xff08;Model&#xff09; AI 模型是旨在处理和生成信息的算法&#xff0c;通常模仿人类的认知功能。通过从大型数据集中学习模式和见解&#xff0c;这些模型可以做出预测、文本、图像或其他输出&#xff0c;从而增强各个行业的各种应用。 AI 模型有很多种&…

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容

参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…

python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析

目录 python成绩分级 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python成绩分级 2024年6月 python编程等级考试二级编程题 一、题目要求 …

苹果Siri将搭载大型语言模型,近屿智能抢占AIGC大模型人才培养高地

据媒体报道&#xff0c;苹果公司正在研发一款全新升级、更加智能且对话能力显著提升的Siri&#xff0c;意在超越OpenAI的ChatGPT及其他语音服务。 报道指出&#xff0c;新一代Siri将搭载更为先进的大型语言模型&#xff08;LLM&#xff09;&#xff0c;苹果期望其能够进行连续…

Ubuntu,openEuler,MySql安装

文章目录 Ubuntu什么是Ubuntu概述Ubuntu版本简介桌面版服务器版 部署系统新建虚拟机安装系统部署后的设置设置root密码关闭防火墙启用允许root进行ssh安装所需软件制作快照 网络配置Netplan概述配置详解配置文件DHCP静态IP设置 软件安装方法apt安装软件作用常用命令配置apt源 d…

【C++动态规划】1411. 给 N x 3 网格图涂色的方案数|1844

本文涉及知识点 C动态规划 LeetCode1411. 给 N x 3 网格图涂色的方案数 提示 你有一个 n x 3 的网格图 grid &#xff0c;你需要用 红&#xff0c;黄&#xff0c;绿 三种颜色之一给每一个格子上色&#xff0c;且确保相邻格子颜色不同&#xff08;也就是有相同水平边或者垂直…

小鹏汽车智慧材料数据库系统项目总成数据同步

1、定时任务处理 2、提供了接口 小鹏方面提供的推送的数据表结构&#xff1a; 这几个表总数为100多万&#xff0c;经过条件筛选过滤后大概2万多条数据 小鹏的人给的示例图&#xff1a; 界面&#xff1a; SQL: -- 查询车型 select bmm.md_material_id, bmm.material_num, bm…

【解决方案】VITE 忽略指定路径的资源

前言 问题起因是因为项目需要引入服务器端的网络图片 而在编写配置时发现&#xff0c;Vite并不支持排除指定前缀的资源 唯一可以排外的只有 Rollup 的 external 选项可以排除外部依赖&#xff0c;但他只能排除外部依赖&#xff0c;不支持指定路径资源或指定前缀的资源&#…

自然语言处理: RAG优化之Embedding模型选型重要依据:mteb/leaderboard榜

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor git地址&#xff1a;https://github.com/opendatalab/MinerU 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路…

疑难Tips:NextCloud域名访问登录时卡住,显示违反内容安全策略

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 1使用域名访问Nextcloud用户登录时卡住,显示违反内容安全策略 我使用官方Docker镜像来部署NextCloud 28.0.5,并通过Openresty反向代理Nextcloud,但是在安装后无法稳定工作,每次登录后,页面会卡死在登录界面,无法…

SpringBoot 集成 html2Pdf

一、概述&#xff1a; 1. springboot如何生成pdf&#xff0c;接口可以预览可以下载 2. vue下载通过bold如何下载 3. 一些细节&#xff1a;页脚、页眉、水印、每一页得样式添加 二、直接上代码【主要是一个记录下次开发更快】 模板位置 1. 导入pom包 <dependency><g…