首页 > 系统相关 >[Linux操作系统]进程的状态一览

[Linux操作系统]进程的状态一览

时间:2024-12-23 20:27:01浏览次数:5  
标签:状态 struct 一览 内存 Linux 进程 操作系统

0. 前言

嗨害嗨,来了嗷~,无论是在Linux操作系统中,还是在Windows操作系统中,进程管理都是十分重要的一环,这篇文章呢?我想来聊聊在Linux操作系统下对于进程的管理中,进程状态的这一部分。

先附上一个通用操作系统概念下的进程的状态的图片:(这图百度找的~)

1. Linux操作系统下进程状态

运行状态(R : running):

Linux操作系统会给每个CPU提供一个RunQueue(运行队列),当进程PCB(task_struct)连入RunQueue中,我们就说这个进程处于运行状态

阻塞状态(S : sleeping):

Linux操作系统为了管理外部设备(先描述,在组织),每个设备在内核中会有一个struct device,每个struct device中会有一个struct task_struct *wait_queue属性,当操作系统将一个进程从CPU的RunQueue队列中剥离出来,连入wait_queue中,CPU不再对该进程进行调度,此时,我们称为该进程的状态是阻塞状态。

D : dist sleeping    深度睡眠

为什么会有这个进程?

当进程在完成一些大数据量的读写操作(读或者写500G类似这样的操作)

操作系统不会杀死这样的进程,因为如果在读写的过程中出现了问题,这样的进程又被杀死了,会造成大量数据的丢失。(很严重!!!)

T : stopped

非法但不致命的操作,就可能会被操作系统终止掉。

kill -19 pid

kill -18 pid

t : tracing stopped 追踪停止状态

断点

gdb打断点让程序停下来的本质是当前进程停下来了

调试器进程启动,调试器进程中启动另一个进程。

Z : zombie    X : dead

$? 最后程序退出时的退出信息

为什么需要这两个状态:

因为一个进程被创建出来,一定是带着任务来的,任务完成的怎么样?要告诉父进程。

Z : zombie

父进程活着不回收子进程,子进程结束,

Defunct 失效的  代表进程已经退出

会导致系统级别的内存泄漏,操作系统是常驻进程,内存泄漏很危险。

孤儿进程的父进程

1 systemd(initd) 系统 会领养孤儿进程。

孤儿进程会变成后台进程

systemd(initd)为什么不会领养僵尸进程呢?

systemd(initd)主要用于接收正在运行的程序,僵尸进程已经死亡,任务已经完成。

2. 谈一个另外的概念

挂起:

内存资源严重不足,PCB留着,代码和数据换出到磁盘中,操作系统在将PCB放入runqueue中之前,将阻塞该运行,将代码和数据唤入内存。swap交换分区专用于换出唤入

被换出的进程,此时的状态是阻塞挂起状态

还会有运行时挂起的机制,处于runqueue中较后面的位置,风险比较大

用时间换空间!在服务器计算机中一般swap分区功能是被禁止的。

标签:状态,struct,一览,内存,Linux,进程,操作系统
From: https://blog.csdn.net/2401_89383526/article/details/144376012

相关文章

  • Linux开发帮助参考
    在开发Linux系统下面软件时常常需要查阅手册,但是如果你的开发平台不是Linux系统,那你无法丝滑使用man手册,这里推荐一些方便的Linux开发手册。 手册:在线man手册:LinuxManPagesOnlinearch社区:Archmanualpages (arch社区的各种文档都很齐全,是很好的Linux使用和开发参考)debia......
  • 【嵌入式Linux】---- 基于petaLinux和SDK开发的LED驱动和应用测试(全流程实战)
    1配置petaLinux环境变量在Linuxproject目录下,打开终端,输入命令source/opt/pkg/petalinux/2018.3/settings.sh2新建petaLinux工程petalinux-create-tproject--templatezynq-nZYNQ7010_LED3配置petaLinux工程输入cdZYNQ7010_LED,进入刚刚创建的工程文件;输入p......
  • Linux常用命令之locate命令详解
    locate是一个用于快速查找文件和目录的命令行工具,它通过预先构建的数据库来加速搜索过程。与find命令不同的是,locate不会实时遍历文件系统,而是依赖于定期更新的索引数据库,因此速度更快但可能不如find准确。功能与作用快速查找:locate通过查询预先构建的数据库来定位......
  • 【Linux 网络 (五)】Tcp/Udp协议
    Linux网络一前言二、Udp协议1)、Udp协议特点2)、Udp协议格式3)、Udp报文封装和解包过程4)、UDP的缓冲区三、TCP协议1)、TCP协议特点2)、TCP协议格式1、4位首部长度、源端口、目的端口2、16位窗口大小3、Tcp确认应答机制4、序号和确认序号5、标记位四、面向字节流解释五、......
  • Linux文件管理
    Linux文件管理文件目录的层级结构为了方便管理文件和目录,Linux系统将它们组织成一个以根目录/开始的倒置的树状结构。Linux中的目录,和Windows系统中的文件夹类似,不同之处在于,Linux系统中的目录也被当做文件看待。在Linux操作系统中,所有的文件和目录都被组织成以一个根......
  • linux安装docker
    https://zhuanlan.zhihu.com/p/708866967第一步:新建或编辑daemon.confvi/etc/docker/daemon.conf第二步:daemon.json中编辑如下"registry-mirrors":["https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.ed......
  • linux命令2
    df查看磁盘使用情况df-h带单位显示磁盘使用情况top查看动态进程top-d秒数设定间隔时间查看资源使用情况free查看内存使用情况ps查看进程命令psaux查看所有用户的进程yuminstallmysql安装数据库的客户端yuminstallmysql-server安装......
  • 用户状态迁移工具(User State Migration Tool,USMT)是微软提供的一种命令行工具,旨在帮助
    用户状态迁移工具(USMT)概述|MicrosoftLearn用户状态迁移工具(USMT)5W1H结构文章1.什么是用户状态迁移工具(USMT)?(What)用户状态迁移工具(UserStateMigrationTool,USMT)是微软提供的一种命令行工具,旨在帮助IT管理员在Windows操作系统之间迁移用户数据和配置。USMT主......
  • Linux基础命令
    帮助命令(help、man、info)Linux系统中的命令是非常多的,约2600个命令。我们不可能记住每个命令的使用方法,以及各个参数的功能。但好在Linux给我们提供了帮助手册,供我们查看命令的详细使用说明。help:可以查看内部命令帮助信息man:查看所有命令的详细信息info:信息最全的帮助文档......
  • linux上最简单的python脚本
    1.内容python<<pythonoffprint("123")pythonoff2.构建过程2.1创建文件touchtest.sh2.2添加内容echo"python<<pythonoff">test.shecho"print("123")">>test.shecho"pythonoff">>test.s......