Linux 进程:进程状态
目录
- 一、进程状态
- 1.简单分类
- 2.详细分类
- (1)运行态
- (2)休眠态
- [1]可中断休眠态
- [2]不可中断休眠态
- (3)停止状态
- (4)死亡状态
- (5)僵死状态
- 二、特殊进程
- 1.僵尸进程
- 2.孤儿进程
- 3.守护进程
- 三、进程状态相关指令
- 1.ps-ef
- 2.ps-aux
- 3.top
- 4.kill
一、进程状态
进程就是运行中的程序,而运行中的程序也是有着多种状态的。进程状态的作用就是告诉操作系统怎样去调度进程可以让程序更好的运行,可以更充分的利用系统的资源。
在了解进程状态前首先要明白:程序在运行时是需要各种资源的,比如输入输出设备等资源。如果这些资源没有准备到位,这个进程就不能继续往下执行,就需要等待资源的到来。
比如我需要打印一份资料,打印机就是一种资源,但此时打印机正在被其他程序使用,所以我就要等其他程序使用完我才可以使用。
1.简单分类
传统的操作系统概念对于进程状态的分类较为简单,分为三类。:
- 运行态
- 就绪态
- 阻塞态
运行态:
这个状态的进程正在CPU上运行。
就绪态:
进程此时已经将自己需要的资源都拿到手了,现在只需要等待时间片的到来,拿到时间片就可以直接运行。
阻塞态:
这个进程如果处于阻塞态,代表不可以被调度运行。通常是由于资源准备不充分,所以进入阻塞态。比如上文提到的打印机:我需要打印机资源,可是此时打印机被占用了,因此我的资源准备不充分,就会陷入阻塞状态。
2.详细分类
与传统的操作系统定义不同,Linux对于进程的状态划分的更细致,主要分为五种状态:
- 运行态
- 休眠态
- 可中断休眠态
- 不可中断休眠态
- 停止状态
- 死亡状态
- 僵死状态
(1)运行态
Linux的运行态包含了传统定义中的运行态和就绪态。也就是说,在Linux中这两类进程都属于运行态:
- 正在CPU上运行的进程
- 资源准备充足,等待时间片的进程
(2)休眠态
Linux的休眠状态是指,进程需要等待某个事件发生后才可以继续运行,在等待的这段时间,进程干不了其他的事,因此需要休眠。
要等待的某个事件其实就包括了我们之前提到过的资源。我需要使用打印机,但此时打印机资源被别人使用,因此我就需要先休眠,等到打印机资源空闲了,我再醒来去打印。
而休眠态分为可中断休眠态和不可中断休眠态。
[1]可中断休眠态
进程正在休眠,等待某个事件发生后,进程会醒来继续运行,但这个休眠是可以被打断的,遇到一些特别的事件会打断进程的休眠。
比如我们在睡觉时,定了早上八点的闹钟,想着等到闹钟响了才起床。但是五点钟就有人打电话,打断了我们的休眠。
[2]不可中断休眠态
进程正在休眠,等待某个事件发生后,进程才会醒来继续运行,并且这个休眠是无法被打断的。
比如一个人突然因生病而昏迷,除非是得到医生的救治,否则是醒不过来的。所以这就是不可中断休眠,不可以被打断,除非等到特定事件(医生救治)发生。
(3)停止状态
进程处于停止状态时可以被调度,但什么都不做。
(4)死亡状态
进程已经使用完毕了,所以让进程退出,并且把所进程占用的资源全部释放。(一个人去世后,把他埋葬,处理好他的后事)
(5)僵死状态
进程使用完毕了,并且进程也退出了,但进程占用的资源没有被完全释放。(一个人去世后,没有将他埋葬,没有处理他的后事)
因此处于僵死状态的进程我们称之为僵尸进程。
二、特殊进程
这里简单介绍三种特殊进程:
- 僵尸进程
- 孤儿进程
- 守护进程
1.僵尸进程
(1)什么是僵尸进程?
僵死状态的进程,进程退出了但是它的资源没有被完全释放,是待处理状态。
(2)僵尸进程产生的原因?
一个进程如果退出了,它的pcb不会直接释放,因为进程的pcb保存了这个进程的退出原因,而这个退出原因是要交给父进程的,父进程收到这个退出原因后,就会处理子进程的后事,释放子进程的资源。
因此这个进程退出前会通知父进程,告诉父进程自己要退出了,要记得给自己处理后事。但如果父进程没有收到子进程的通知,这个子进程的资源就一直处于没有完全释放的状态,就成了僵尸进程。
这里注意一点,终端运行的指令或程序,父进程都是shell(命令行解释器)进程,这个进程的子进程一旦退出,就会及时处理。
(3)僵尸进程的危害?
僵尸进程的资源一直没有被回收,就会造成资源泄露,占据的内存没有完全释放,就会占据内存空间。如果僵尸进程过多,占据的资源就会越来越多,系统可能就会崩溃。
(4)怎么处理僵尸进程?
处理正常进程时,我们可以通过杀死进程来退出进程。可是僵尸进程是杀不死的,因为它已经死了,现在我们要做的就是释放它的资源,处理它的后事。
上文提到了,进程之所以退出后不释放资源,是因为要保存退出原因给父进程。那么我们可以通过杀死僵尸进程的父进程来释放僵尸进程的资源。因为父进程都死了,僵尸进程的退出原因就没有必要再保存了,资源自然会被释放掉。
2.孤儿进程
孤儿进程与僵尸进程相反,孤儿进程是父进程先于子进程退出。(父进程退出是不会影响子进程的)这样子进程就成为了孤儿进程,但是总得有个人管它,因此孤儿进程会被1号进程收养。当孤儿进程退出后,1号进程就会处理它的后事。
3.守护进程
守护进程也被称为精灵进程,是一种特殊的孤儿进程,运行在后台(不占据终端),在后台进行任务处理的进程。
三、进程状态相关指令
1.ps-ef
作用:查看进程相关信息
参数含义:
- UID:用户ID
- PID:进程ID
- PPID:父进程ID
- STIME:进程的开始时间
- TTY:终端号
- TIME:进程执行的总时间
- CMD:运行的程序
2.ps-aux
作用:查看进程相关信息
参数含义:
- USER:运行这个程序的用户
- PID:进程ID
- %CPU:CPU使用率
- %MEM:内存使用率
- VSZ:虚拟内存使用
- RSS:物理内存使用
- TTY:终端号
- STAT:进程的状态(如休眠态、运行态、僵死态)
- START:进程的开始时间
- TIME:进程执行的总时间
- COMMAND:运行的程序
查看指定进程的信息:
3.top
作用:查看cpu的使用率
4.kill
- kill 进程ID {作用:杀死此进程}
- kill -9 进程ID {作用:强制杀死该进程}
相关文章:

Linux 进程:进程状态
目录一、进程状态1.简单分类2.详细分类(1)运行态(2)休眠态[1]可中断休眠态[2]不可中断休眠态(3)停止状态(4)死亡状态(5)僵死状态二、特殊进程1.僵尸进程2.孤儿…...

应用程序性能优化方案,web服务五级缓存优化,服务器性能优化...
winfrom 全局异常捕获WPF 全局异常捕获Asp.Net全局异常捕获MVC 全局异常捕获AspNetNetCore 全局异常捕获一级缓存html/css/js 前端缓存二级缓存Asp.Net MVC AspNetCore 客户端缓存设置三级缓存服务端缓存四级redis 数据库缓存服务端缓存五级sqlserver 数据库缓存设置分布式缓存…...

云计算简介
本文为copy他人编写的文档,由于不确认作者名称,故无法标记来源(实际来源是群pdf文档),暂时发文为原创,因为无法贴出原文链接! 云原生的前世今生 随着公有云和私有云的广泛部署,云计…...

两个适配器网络冲突,限制访问特定网址
两个适配器网络冲突,限制访问特定网址说明命令说明说明 因为工作需要,有线网络访问局域网服务器,限制特别策略访问,如禁止远程。此时如果想要远程,在连接手机热点就可以,但由于两个网络的存在优先级。就出…...

电子科技大学 高级计算机系统结构 考试回忆
首先题量不算小,因此没有太多时间把题都记出来,但是叙述一下题的类型希望能帮到以后选了这门课大家,在网上确实没有搜到这门课有关考试的任何资料,所以我也没啥参考全凭记忆和老师的PPT结合。复习的时候老师给了大纲,就…...

【设计模式】18.观察者模式
概述 定义: 又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能…...

软测入门(一)测试理念及基础知识
软测入门理念 软件的分类 按层次划分:系统软件、应用软件按组织划分:商业软件、开源软件按结构划分:单机软件、 软件缺陷 由来 Grace Hopper发明Cobol计算机语言,也是找出电脑程序中第一个bug的女程序员 BugDefect 定义 软…...

2022年“网络安全”赛项山东省菏泽市选拔赛任务书
2022年“网络安全”赛项山东省菏泽市选拔赛任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一:Apache安全配置 任务二:数据分析-A 任务三:Windows操作系…...

LeetCode练习四:栈
文章目录一、 堆栈基础知识1.1 简介1.2 堆栈的顺序存储1.2.1 堆栈顺序存储基本描述1.2.2 堆栈顺序存储实现代码1.3 堆栈的链式存储1.3.1 堆栈的链式存储基本描述1.3.2 堆栈的链式存储实现代码二、 堆栈的基础应用2.1 堆栈基础题列表2.2 括号匹配问题2.2.1 有效的括号2.2.2 最长…...

【Python实战】爬虫教程千千万,一到实战全完蛋?今天手把手教你一键采集某网站图书信息数据啦~排名第一的竟是...(爬虫+数据可视化)
前言 一本本书,是一扇扇窗,为追求知识的人打开认知世界的窗口 一本本书,是一双双翅膀,让追求理想的人张开翅膀翱翔 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末…...

【数据结构】堆的详解
本章的知识需要有树等相关的概念,如果你还不了解请先看这篇文章:初识二叉树 堆的详解一、二叉树的顺序结构及实现1、二叉树的顺序结构2、堆的概念及结构二、堆的简单实现 (以大堆为例)1、堆的定义2、堆的初始化3、堆的销毁4、堆的打印5、堆的插入6、堆顶元素的获取7…...

New Bing怼人、说谎、PUA,ChatGPT已经开始胡言乱语了
最近,来自大洋彼岸那头的ChatGPT科技浪潮席卷而来,微软将chatGPT整合搜索引擎Bing开启内测后,数百万用户蜂拥而至,都想试试这个「百事通」。 赶鸭子上架,“翻车”了? 但短短上线十几天,嵌入了…...

简易计算器-课后程序(JAVA基础案例教程-黑马程序员编著-第十一章-课后作业)
【案例11-2】 简易计算器 【案例介绍】 1.案例描述 本案例要求利用Java Swing 图形组件开发一个可以进行简单的四则运算的图形化计算器。 2.运行结果 运行结果 【案例分析】 要制作一个计算器,首先要知道它由哪些部分组成,如下图所示: 一…...
chatGPT使用:询问简历和面试相关话题(持续更新中)
chatGPT使用:询问简历和面试相关话题 写一份Java简历,价值2万元包装上面的Java简历面试自我介绍面试简述稿包装简历的方法技巧如何进行良好的自我介绍如何写一份优秀的面试简述稿如何写一份优秀的简历如何写一份优秀的面试讲述稿如何提高面试录取率如何拿到offer写一份Java简…...
Java的 Stream流
Stream流?结合Lambda表达式,用于简化集合和数组操作的API。Stream流的一个小例子:创建一个集合,存储多个姓名,把集合中所有以"张"开头的长度为3的元素存储到一个新的集合并输出。List<String> namesne…...

FL Studio 21 中文正式版发布支持多种超个性化主题
万众期待的 FL Studio 21 版本正式发布上线,目前在紧锣密鼓的安排上线中,届时所有购买正版 FL Studio 的用户,都可以免费升级到21版! 按照惯例,本次新版也会增加全新插件,来帮助大家更好地创作。今天先给大…...

【微信小程序】-- 全局配置 -- window - 导航栏(十五)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

Spring中最常用的11个扩展点
前言我们一说到spring,可能第一个想到的是 IOC(控制反转) 和 AOP(面向切面编程)。没错,它们是spring的基石,得益于它们的优秀设计,使得spring能够从众多优秀框架中脱颖而出。除此之外…...
网络协议丨HTTPS是什么?
我们都知道HTTP协议,那什么是HTTPS? 我们都知道,HTTP有两个缺点——“明文”和“不安全”仅凭 HTTP 自身是无力解决的,需要引入新的 HTTPS 协议。 由于 HTTP 天生“明文”的特点,整个传输过程完全透明,任…...
Anaconda常用命令总结,anaconda、conda、miniconda的关系
Anaconda、conda、miniconda的关系 Anaconda Anaconda 是一个用于数据科学,机器学习和深度学习的开源软件包管理系统,其中包括了许多流行的 Python 包和工具Anaconda主要用于科学计算和数据分析。 conda Conda 是 Anaconda 中的包管理器,…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...