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

Linux 进程1

进程

在linux系统中,触发任何一个事件时系统会将其定义为一个进程(一个程序开始执行),系统会给这个进程分配一个进程ID统称为PID。

程序:通常是二进制文件,放置于存储媒介如硬盘中。

进程:当存储在硬盘中的程序被触发,即由用户调用开始执行时会将其加载到内存中开始与cpu交互即开始执行这个程序,执行中的程序就称为进程。

进程pcb

如图当我们打开计算机时,操作系统会自动加载,然后我们查看进程就能看到如此多的进程已经是在运行中了。而我们计算机运行的本质就是一个个进程执行的结果。操作系统也就是一个功能更多,更复杂的一个进程。

但是如此多的进程计算机当然需要对其进行管理,不同功能的进程会有优先级的不同,状态的不同,CPU一次就只能处理少量的进程,就算是八核,十六核CPU也不可能并行处理如此多的进程,而且进程需要空间存放相应的数据,所以操作系统就会对所有的进程进行整合与管理使用PCB的数据结构模式对每一个进程进行描述和组织。

而进程不是一个个相同的数据不能如同整形和字符型数据一样简单的定义所以linux操作系统使用一个结构体去定义描述一个进程:struct task_struct{........};里面包含进程ID(PID),进程状态,优先级信息等非常多的对进程的描述这里只是列举了很少的几点。这个结构体也叫进程控制块(PCB:process control bolck),没创建一个进程的时候,操作系统就会为这个进程创建一个PCB,讲所有的PCB通过链表的形式链接起来,通过对PCB的管理从而实现对进程的管理。

进程管理

查看进程

ps指令:ps指令是静态指令可以查看某个时间点下的进程。

ps  aux指令可以查看系统中所有的进程。

ps -lA指令也是查看系统的所有进程但是显示的属性是不同的,这些属性都是来自PCB中截取。

选项参数:

-A:所有的进程均显示,与-e有同样的效果

-a:不显示与终端有关的所有进程。

-u:有效使用者(effective user)相关的进程。

x:通常与a一起使用可列出比较完整的信息。

输出格式

l:较长较详细的将该PIF的信息列出。

j:任务的格式(job format)。

-f:做一个比较完整的输出。

一般最常使用的指令是:ps -l 可以只查看自己bash的进程。ps aux 可以查看系统所有运行中的进程。

进程状态

当我们使用ps -l查看进程时看到显示出了多种进程的属性

F:代表进程标识(process flags),说明这个进程的权限,4代表root管理员权限。1代表此子进程仅执行复制(fork)没有实际执行(exec)。

S:代表这个进程的状态(STAT),主要的状态有:

1、R:running,运行中,可能正在执行也可能是在执行队列中都用R标识

2、S:sleep,睡眠状态,该进程没有在执行但是进程PCB还在资源也没有释放,是可以被唤醒的。

3、D:disk sleep,不可被唤醒的深度睡眠。通常这个进程可能在等待I/O的情况。这种进程只能被资源唤醒,即使我们使用kill -9也杀不掉。

4、T:停止状态我们可以使用kill -19让一个进程进入停止状态,进程处于停止状态通常是由于接收了一个信号,例如SIGSTOP(Ctrl-Z产生的SIGTSTP信号)或者SIGTSTP(通常由shell的暂停命令引发)。这种状态下的进程被挂起,暂时停止执行,但可以通过发送SIGCONT信号来恢复执行。

tracing Stop(跟踪停止)状态:
进程处于跟踪停止状态通常是由于调试器(如GDB)或者ptrace系统调用的作用。在这种状态下,进程被调试器所追踪,通常是因为调试器在进行单步执行、观察或者修改进程的内存等操作。这种状态下的进程暂时停止执行,直到调试器允许其继续执行。这两种都是属于T停止状态。

5、Z:zombie 僵尸状态,进程已经终止但是无法被删除至内存外,一般由于子进程结束并发送状态码给父进程,但是父进程一直没有接收。这样会导致进程的内存泄漏,一般尽量避免。

ID:UID:拥有者  PID:进程号唯一用以区分不同进程 PPID:父进程的PID。

C:cpu使用率

PRI/NI:priority代表优先级此值小优先级越高,nice值与PRI一起标识一个进程的优先级,nice值加上PRI值就是完整的优先级,因为进程在执行过程中无法对优先级进行调整所以引入nice值就是优先级数值的调整值。

ADDR/SZ/WCHAN:内存有关的属性,addr是kernel function ,指出该进程在内存的哪个部分,如果是R一般显示【-】。sz代表占用了多少的内存。wchan代表目前进程是否运行,与addr一样运行中就显示【-】。

TTY:登录者的终端位置,若是远程登陆则使用动态终端接口名称(pts/n)。

TIME:使用的cpu时间,进程实际花费cpu运行的时间而不是系统时间。

CMD:command,表示造成该进程触发的进程的命令是什么。

http://www.lryc.cn/news/437950.html

相关文章:

  • LeetCode: 2552. 统计上升四元组 动态规划 时间复杂度O(n*n)
  • Unity 编辑器设置中文
  • springboot-创建连接池
  • matlab绘制不同区域不同色彩的图,并显示数据(代码)
  • Docker Desktop 的安装与汉化指南
  • 前端form表单+ifarme方式实现大文件下载
  • Leetcode面试经典150题-141.环形链表
  • sh文件执行提示语法错误: 未预期的文件结尾
  • 基于SpringBoot的甜品店管理系统
  • 动态规划-不同的子序列
  • 如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰
  • D - 1D Country(AtCoder Beginner Contest 371)
  • 怎么很多张图片拼接成一张?试试这几种图片拼接方法!
  • Python实现优化的分水岭算法
  • 智慧交通基于yolov8的行人车辆检测计数系统python源码+onnx模型+精美GUI界面
  • Linux开发工具的使用
  • 【devops】devops-git之介绍以及日常使用
  • 012复杂度07leetcode
  • 4.网络编程
  • OpenCV GUI常用函数详解
  • Tuxera NTFS for Mac破解版下载 Tuxera NTFS for Mac2023激活码 mac电脑ntfs磁盘软件
  • oceanbase(ob)基于备份集搭建备租户方式
  • Javase复习day21算法、arrays、Lamdba表达式
  • 移动硬盘无法读取?别慌!这些方法助你恢复数据!
  • Java集合面试(上)
  • Python画笔案例-046 绘制小红伞
  • 使用 .NET 6 构建跨平台 Worker Service 服务:跨越平台的 C# 服务开发——解决Windows服务跨平台问题
  • terminator-gnome
  • 7.测试用例设计方法 + Bug
  • uniapp小程序,使用腾讯地图获取定位