搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
weixin_40725706
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
构建大语言模型的四个主要阶段_大语言模型一共要经历几个阶段
2
ant-design-vue树形结构控件的改造_antd tree修改节点样式
3
uniapp 电商app vivo手机进行真机调试_uniapp运行到vivo真机
4
华为鸿蒙属于计算机的哪部分,华为鸿蒙系统是什么
5
SAP ABAP编程 SY-REPID与SY-CPROG的区别_sap sy-repid
6
文献阅读【RNA-seq数据归一化】_rna-seq条件分位数归一化
7
dl dt dd标签用法 _dldddt
8
李宏毅老师-生成式对抗网络(GAN)Part1_李宏毅 生成式
9
MySQL索引事务
10
如何使用 ChatGPT 进行编码和编程
当前位置:
article
> 正文
Linux进程的七种状态_进程七状态图
作者:weixin_40725706 | 2024-03-29 08:14:59
赞
踩
进程七状态图
七种状态转换图
一个进程在其生存期内,可处于一组不同的状态下,称为进程状态,如下图所示。进程状态保存在进程任务结构的state字段中。当进程正在等待 系统中的资源而处于等待状态时,则称其处于睡眠等待状态。在Linux系统中,睡眠等待状态分为可中断的和不可中断的等待状态。
运行状态(TASK_RUNNING)。当进程正在被CPU执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态 (running)。若此时进程没有被CPU执行,则称其处于就绪运行状态。进程可以在内核态运行,也可以在用户态运 行。当一个进程在内核代码中运行时,我们称其处于内核运行态,或简称为内核态;当一个进程正在执行用户自己的代码时,我们称其为处于用户运行态(用户态)。当系统资源已经可用时,进程就被唤醒而进入准备运行状态,该状态称为就绪态。这些状态(在内核中表示方法相同,都被称为处于 TASK_RUNNING状态。当一个新进程刚被创建出后就处于本状态中。
(2)可中断睡眠状态(TASK_INTERRUPTIBLE)。当进程处于可中断等待(睡眠)状态时,系统不会调度该进程执行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程收到一个信号,都可以唤醒进程转换到就绪状态(即可运行状态)。
(3)不可中断睡眠状态(TASK_UNINTERRUPTIBLE)。除了不会因为收到信号而被唤醒,该状态与可中断睡眠状态类似。但处于该状态 的进程只有被使用wake_up()函数明确唤醒时才能转换到可运行的就绪状态。该状态通常在进程需要不受干扰地等待或者所等待事件会很快发生时使用。
(4)暂停状态(TASK_STOPPED)。当进程收到信号SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU时就会进入暂停状 态。可向其发送SIGCONT信号让进程转换到可运行状态。进程在调试期间接收到任何信号均会进入该状态。
(5)僵死状态(TASK_ZOMBIE)。当进程已停止运行,但其父进程还没有调用wait()询问其状态时,则称该进程处于僵死状态。为了了让 父进程能够获取其停止运行的信息,此时子进程的任务数据结构信息还需要保留着。一旦父进程调用wait()取得了子进程的信息,则处于该状态进程的任务数 据结构就会被释放。
当一个进程的运行时间片用完,系统就会使用调度程序强制切换到其他的进程去执行。另外,如果进程在内核态执行时需要等待系统的某个资源,此时该进程 就会调用sleep_on()或interruptible_sleep_on()自愿地放弃CPU的使用权,而让调度程序去执行其他进程。进程则进入睡 眠状态。
只有当进程从"内核运行态"转移到"睡眠状态"时,内核才会进行进程切换操作。在内核态下运行的进程不能被其他进程抢占,而且一个进程不能改变另一个进程的状态。为了避免进程切换时造成内核数据错误,内核在执行临界区代码时会禁止一切中断。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/weixin_40725706/article/detail/334693
推荐阅读
article
Linux
服务
管理:
服务
启动
/停止,
自
启动
_
服务
优雅启停
linux
...
1.推荐
自
启动
方法:修改/etc/rc.d/rc.local文件,加入/etc/init.d/httpd start (...
赞
踩
article
Linux
/
Java
技术训练舱:从零开始安装
Ubuntu
Linux
,优化桌面并构建VS
Code
轻...
掌握
Linux
操作系统和一门主流的编程语言,是很多新人以及工作多年的程序员需要不断夯实的基础性学习。
Linux
和
Java
...
赞
踩
article
SpringCloud
Alibaba
【
Nacos
集群搭建(Windows+
Linux
)&Ribbo...
目录
SpringCloud
Alibaba
1.
Alibaba
微服务组件
Nacos
注册中心(Eureka服务注册于发现)...
赞
踩
article
ARM
和 龙芯上
Arch
Linux
安装
手记...
后来想起来我用的是OrbStack,打开图形界面,直接按向导
安装
了一个
Arch
Linux
,分分钟就装好了。这是一个好...
赞
踩
article
Mac 远程
Linux
桌面
vnc
_
mac
vnc
linux
...
然后,我们需要在 /etc/systemd/system/ 目录里创建一个配置文件。我们可以将 /lib/systemd...
赞
踩
article
【
ARM
Linux
系统
稳定性
分析入门及渐进 3 --
栈
溢出
】_arm平台
linux
...
是一块分配在
栈
之下的一块内存空间(假设
栈
stack是向下生长的),如图 2 所示,这样当
栈
stack下溢时,就能在保护...
赞
踩
article
Linux
学习
记录
58
(
ARM
篇)_
linux
arm
入门...
GIC层一共管理288个中断号(ID:0 ~ 287),16个SGIS,16个PPIS,256个SPIS。功能:使能cp...
赞
踩
article
【ARM
Linux
系统
稳定性
分析入门及渐进 2 -- Kernel
Lockup
】_
linux
...
Softlockup用于检测
系统
调度是否正常,即软锁的情况,当发生Softlockup时,内核不能调度,但还能响应中断,...
赞
踩
article
Linux
-
ARM
裸机(一)-搭建
开发
环境
_
filezilla
linux
arm
...
本篇是是本人学习
Linux
-
ARM
裸机
开发
的第一篇博文。主要记录了在Ubuntu搭建
ARM
裸机的
开发
环境
及其间遇到的一些...
赞
踩
article
ARM
-
Linux
内核基础知识_
arm
linux
...
文章目录系列文章一、
ARM
-
Linux
内核和普通内核的区别1.
Linux
内核2.
ARM
-
Linux
内核二、
Linux
...
赞
踩
article
深入了解
Linux
中的
MTD
设备
:/
dev
/
mtd
* 与 /
dev
/
mtd
block*...
在嵌入式
Linux
系统的世界里,非易失性存储技术扮演着至关重要的角色。
MTD
(Memory Technology Dev...
赞
踩
article
Linux
开源
的
高性能
稳定
服务器
操作系统
入门_
linux
的
稳定
性极高...
我们研发项目,写代码时,使用
的
一般都是windows或者是MAC
的
操作系统
,作为本地
的
用户使用系统,而
Linux
一般都是...
赞
踩
article
LTP
(
Linux
Test
Project
)使用指南_
ltp
使用...
文章目录1、
ltp
-ddt简介1.1、
ltp
1.2、
ltp
-ddt2、环境构造2.1、交叉编译2.2、文件系统3、测试运...
赞
踩
article
Linux
安装
VNC
Viewer
_
vnc
-
viewer
安装旧版 linux...
1、下载安装包:执行命令 wget https://www.real
vnc
.com/download/file/view...
赞
踩
article
linux
vnc
viewer
使用
教程,
vnc
使用
教程
,
vnc
使用
教程5步详解...
有幸能够亲自在服务器上面操作一下
,
这篇博客来说一说
,
如何在Linux上安装VNC首先要知道的是
,
VNC是什么。VNC(V...
赞
踩
article
LTP
在
arm
-
linux
-交叉
编译
环境上的安装_
ltp
工具交叉
编译
arm
架构...
一、
LTP
交叉
编译
:1. 运行configure命令:./configure CC=
arm
-none-
linux
-g...
赞
踩
article
linux
vnc
viewer
使用
教程,
vnc
viewer
远程桌面
,11步实现
vnc
viewe...
Virtual Network Computing(VNC)是进行
远程桌面
控制的一个软件。客户端的键盘输入和鼠标操作通过...
赞
踩
article
linux
下
LTP
的
安装
和配置_
ltp
linux
...
(1) 更新系统(2)
安装
编译环境(3)
安装
需要的软件包(4)解压
ltp
软件包(5)创建目录(6)配置(7)编译sudo...
赞
踩
article
ltp
(
linux
test
project
)的
安装
和使用...
1、
安装
1.1 yum
安装
各种依赖包1.1.1 查看当前
linux
系统版本cat /etc/system-release...
赞
踩
article
linux
系统下的
压力
测试工具
LTP
和
stress
区别_ltp
stress
...
因为项目需要,接触到了两款
压力
测试工具
,对其进行总结和学习。1)
LTP
简介:
LTP
套件是由 Linux Test P...
赞
踩
相关标签
linux
java
ubuntu
vscode
visual studio code
spring cloud
windows
arm开发
运维
macos
堆栈
栈溢出
数据越界
递归调用
局部数组过大
内存被踩
全局变量
学习
soft lockup
hard lockup
死锁
hung
hung task