首页 > 系统相关 >[Linux 高并发服务器] 进程状态的转换

[Linux 高并发服务器] 进程状态的转换

时间:2022-11-25 19:44:31浏览次数:64  
标签:状态 pid CPU 并发 Linux 进程 服务器 ID 终止


[Linux 高并发服务器] 进程状态的转换

根据​​牛客的c++项目课程​​做笔记,图片和知识点均摘录自该课程

进程的状态转换

进程状态反映进程执行过程的变化,这些状态随着进程的执行和外部条件的变化而转换

三态模型

​运行态​​:进程占有处理器正在运行

​就绪态​​:进程具备运行条件,等待系统分配处理器以便运行,如果已经分配到除CPU外的资源,一旦获得CPU就立刻执行。在一个系统当中,处于就绪状态的进程可能有多个,通常将它们排成一个队列,称为就绪队列

​阻塞态​​:又称为等待(wait)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。注意,阻塞态不会直接变成运行态。

[Linux 高并发服务器] 进程状态的转换_linux

五态模型

相比三态模型多了两个状态
​​​新建态​​​:进程刚被创建时的状态,尚未加入到就绪队列
​​​终止态​​:进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止所到达的状态。进程被终止后不再执行,但会保留在操作系统中善后。一旦其他进程完成了对终止态进程的信息抽取之后,操作系统将删除该进程

[Linux 高并发服务器] 进程状态的转换_父进程_02

进程相关的命令

查看进程的信息

ps aux

​a​​​:显示终端上所有进程,包括其他用户的进程
​​​u​​​:显示进程详细信息
​​​x​​​:显示没有控制终端的进程
​​​j​​:列出与作业控制相关的信息(可以看父进程,进程组,会话的ID)

[Linux 高并发服务器] 进程状态的转换_杀死进程_03

显示的是输入​​ps aux​​瞬间的进程信息,并非动态的

​USER​​进程所属用户

​PID​​进程的ID

​%CPU​​CPU的使用

​%MEM​​内存的使用

​VSZ​​是常驻内存集(Resident Set Size),表示该进程分配的内存大小

​RSS​​表示进程分配的虚拟内存

​TTY​​进程所属的终端

​STAT​​状态

[Linux 高并发服务器] 进程状态的转换_进程组_04

​START​​​开始的时间
​​​TIME​​​持续的时间
​​​COMMAND​​执行哪个命令产生的这个进程

ps ajx

[Linux 高并发服务器] 进程状态的转换_杀死进程_05

​PPID​​父进程的ID

​PGID​​进程组的ID

​SID​​会话的ID

​TPGID​​ tty process group ID for the process group leader貌似是终端进程组ID之类的(暂时不了解这玩意)

实时显示进程的动态

top

​-d​​​指定显示信息更新的时间间隔
​​​M​​​根据内存使用量排序
​​​P​​​根据CPU占有率排序
​​​T​​​根据进程运行时间长短排序
​​​U​​​根据用户名字筛选排序
​​​K​​输入指定的PID杀死进程

杀死进程

​kiil PID​

[Linux 高并发服务器] 进程状态的转换_进程组_06


发现如果杀死自己终端是不行的,需要加上参数-9强制杀死进程​​-9​​​实际上就是KILL信息,可以通过​​kill -l​​查看发现是第9个

[Linux 高并发服务器] 进程状态的转换_进程组_07

kill [-signal] pid
kill -l 列出所有信号
kill -SIGKILL 进程ID
kill -9 进程ID
killall name 根据进程名杀死进程

进程号和相关函数

每个进程都由进程号来标识,类型为pid_t整型,进程号的范围是0~32767
进程号是唯一的但是可以重复使用,一个进程终止后,其进程号就可以再次使用。
任何进程(除了init进程)都是有另外一个进程创建的,该进程成为被创建进程的父进程对应的进程号就是父进程号(PPID)
进程组是一个或多个进程的集合。他们之间相互关联,进程组可以接收同一终端的各种信号,关联的进程有一个进程组号(PGID)默认情况下当前的进程号会当做当前的进程组号

pid_t getpid(void);//获取当前进程号
pid_t getppid(void);//获取当前进程的父进程号
pid_t getpgid(pid_t pid);//如果传None获取当前进程的进程组id,如果传进程号获取进程号的进程组ID


标签:状态,pid,CPU,并发,Linux,进程,服务器,ID,终止
From: https://blog.51cto.com/u_15891800/5887525

相关文章

  • [Linux 高并发服务器] 进程概述
    [Linux高并发服务器]进程概述程序和进程程序程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程二进制格式表示,用于描述可执行文件格式的元信息,内核利用......
  • [Linux 高并发服务器]文件IO
    [Linux高并发服务器]文件IO此博客是根据牛客的项目课写的,使用了pdf里的资料​​​各位可以去牛客官网学习一下​​另外注意,本博客和牛客的教程以32位系统为例,如果记忆一些......
  • [Linux高并发服务器]模拟实现 ls -l 指令
    [Linux高并发服务器]模拟实现ls-l指令参考:​​牛客LINUX高并发服务器教程​​利用state函数模拟实现ls-l命令使用​​ls-l​​命令返回了以下信息文件类型文件权限连接......
  • [Linux 高并发服务器]GDB调试
    [Linux高并发服务器]GDB调试[Linux高并发服务器]GDB调试​​[Linux高并发服务器]GDB调试​​​​GDB是什么​​​​预先准备​​​​基本命令​​​​例子​​​​进入和......
  • [Linux 高并发服务器]Makefile
    [Linux高并发服务器]Makefile[Linux高并发服务器]Makefile​​[Linux高并发服务器]Makefile​​​​什么是Makefile​​​​文件命名和规则​​​​Makefile工作原理​​......
  • [Linux 高并发服务器]制作静态库与动态库
    [Linux高并发服务器]制作静态库与动态库[Linux高并发服务器]制作静态库与动态库​​[Linux高并发服务器]制作静态库与动态库​​​​什么是库​​​​静态库的制作和使用......
  • linux ftp 操作命令
    1. Linux 终端连接FTP[oracle@Dave~]$ ftp10.85.7.97Connectedto10.85.7.97.220Serv-UFTPServerv6.4forWinSockready...500'AUTH':commandnotunderstood.......
  • Linux 查看磁盘空间
    linux查看磁盘空间可以使用df和du命令。dfdf以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。例如,我们使用df-h命令来查看......
  • 简述五种开源NAS存储服务器--转
    存储对于公司来说是必不可少的:数据必须被存储、检索、共享和保护。下面小编为大家介绍一下5款开源的NAS存储服务器一、云计算云计算正在蓬勃发展,比任何云存储系统都要快......
  • linux rabbitmq 安装方法
    1.安装erlang运行以下命令,安装erlang所需要的依赖包。yuminstall-ymakegccgcc-c++m4opensslopenssl-develncurses-develunixODBCunixODBC-develjavajav......