Linux进程堆栈状态分析实战

1、ps

在两种情况下会导致一个进程在逻辑上不能运行,

  1. 进程挂起是自身原因,遇到I/O阻塞,便要让出CPU让其他进程去执行,这样保证CPU一直在工作
  2. 与进程无关,是操作系统层面,可能会因为一个进程占用时间过多,或者优先级等原因,而调用其他的进程去使用CPU。

因而一个进程有三种状态:

在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。

系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标。此外,在Linux2.6.0-test6以上的版本中/proc/pid目录中有一个task目录,/proc/pid/task目录中也有一些以该进程所拥有的线程的线程号命名的目录/proc/pid/task/tid,它们是读取线程信息的接口。

task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):

相关推荐

  1. Linux进程状态

    2024-01-13 19:12:01       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 19:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 19:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 19:12:01       82 阅读
  4. Python语言-面向对象

    2024-01-13 19:12:01       91 阅读

热门阅读

  1. Driver.js使用指南

    2024-01-13 19:12:01       65 阅读
  2. TypeScript基础知识:类型守卫和类型推断

    2024-01-13 19:12:01       65 阅读
  3. 【WPF.NET开发】WPF中的拖放

    2024-01-13 19:12:01       57 阅读
  4. C# Chart控件

    2024-01-13 19:12:01       49 阅读
  5. awk获取filebeat注册表offset的值

    2024-01-13 19:12:01       55 阅读