当前位置: 首页 > news >正文

Linux进程:进程状态

一、课本里的进程状态

我们每个人都应该见过下面这幅图,或者类似的图,这时基本上所有的操作系统教材中都会出现的进程状态切换图。
在这里插入图片描述

运行状态:每一个CPU对应一个运行队列,当进程处在运行队列当中,则这个进程处于运行状态

阻塞状态:每一种设备的结构体中都有一个wait等待队列,当进程需要I/O请求的时候,就从cpu的运行队列上剥离,加入某种设备的等待队列当中,就处于阻塞状态。

阻塞挂起状态(用时间换空间):当内存资源严重紧张的时候,操作系统会将某些处于阻塞状态的进程的代码和数据从内存中调出,放到磁盘上的SWAP分区,来缓解内存资源严重不足的状况,当资源充足的时候,重新调回内存。
甚至某些极端的操作系统会存在运行时挂起,当运行队列中的进程特别多的时候,可能将运行的进程挂起。(但是风险大,这种操作系统较少)

二、Linux中的进程状态

操作系统内核代码中有这么一段:
在这里插入图片描述
emm,没错,这就是Linux中的进程状态。

R(running) : 运行状态
S(sleeping):休眠状态。(这个状态的阻塞允许被中断)
D(disk sleep):磁盘休眠状态。(这个状态的阻塞不允许被中断,磁盘的读取涉及到数据的存取,一旦被中断,会造成数据紊乱,相当危险)
T(stopped):停止状态 ,准确的说是暂停状态,可以通过19号信号暂停,18号信号继续(要和死亡状态区别)
t(tracing stop):调试暂停状态,通畅在我们gdb调试的时候可以看到
X(dead):死亡状态,一般看不到
Z(zombie):僵尸状态(进程的代码和数据可以释放,但是PCB不能释放,需要维护退出信息)。维持进程退出时的退出信息,提供给父进程和操作系统以便后续使用。

三、来思考一个问题

思考:为什么下面的代码执行一个死循环任务,却大概率处在S+(+是前台程序的意思)状态?

#include <stdio.h>
int main()
{int cnt = 0;while(1){printf("cnt = %d\n",cnt++);}return 0;
}

因为该代码需要printf,需要I/O输出,IO输出的速度远远慢于CPU的计算速度,所以大概率看到进程处于阻塞状态。

四、孤儿进程和僵尸进程

僵尸进程
子进程退出,父进程未退出(父进程没回收子进程),此时子进程是僵尸进程。
如果没有人回收僵尸进程,僵尸进程会一直存在,僵尸进程占有的资源不会完全释放,所以会造成内存泄露

孤儿进程
父进程退出,子进程还没退出,此时子进程是孤儿进程。
子进程交给1号进程进行管理,成为1号进程(系统,老版本系统叫initd)的子进程,孤儿进程会在后台运行,变成了一个后台进程。
我们使用ctrl + c无法直接终止进程,而需要使用kill -9 + pid 或者 使用fg + 任务号变成前台进程之后用ctrl + c才能终止进程。

http://www.dtcms.com/a/545136.html

相关文章:

  • 网站建设之婚礼摄影网站设计ppt模板免费下载 素材学生版
  • 用html5做手机网站北京在建项目查询
  • Go语言设计模式:适配器模式详解
  • 电商食品网站建设南宁网红打卡
  • C 文件读写
  • 如何获取npm的认证令牌token
  • freeRTOS学习笔记(十二)--信号量
  • BLIP 系列全解析与深度面经:从视觉语言统一到跨模态对齐的演进
  • TCP 和 UDP 的核心区别:从原理到场景的全面解析
  • 做外贸网站基本流程wordpress d8 4.1
  • Backend - HTTP请求的常用返回类型(asp .net core MVC)
  • 国内最大的网站制作公司免费创建属于自己的网站
  • [人工智能-大模型-103]:模型层 - M个神经元组成的单层神经网络的本质
  • 【面试题】缓存先删后写如何避免窗口期的旧数据写入缓存
  • 扩展名网站最新新闻事件摘抄
  • 网站免费推广方法网站正能量免费推广软件
  • Spring Boot3零基础教程,配置 GraalVM 环境,笔记88
  • TCN-Transformer-LSTM多特征分类预测Matlab实现
  • 进程 线程 协程基本概念和区别 还有内在联系
  • Linux(1)rsyslog(1)基础使用
  • Arbess零基础学习,安装与配置
  • 温州网站建设seo跨境电商平台shopee
  • Rust——Tokio的多线程调度器架构:深入异步运行时的核心机制
  • webpack - 常用的 CSS 加载器(webpack与其常见loader加载器使用方式)
  • PyTorch2 Python深度学习 - 张量(Tensor)的定义与操作
  • 微信小程序开发案例 | 通讯录小程序(上)
  • 做网站要学什么专业大连谷歌seo
  • 深圳做网站公司营口化工网站建设
  • CUDA-GDB(13)——支持的平台及常见问题解决
  • Warp是什么