首页 > 系统相关 >Linux多进程02-进程状态转换

Linux多进程02-进程状态转换

时间:2023-05-17 18:48:39浏览次数:37  
标签:02 排序 pid kill Linux 进程 就绪 运行

进程状态

三态模型:就绪态、运行态、阻塞态

五态模型:新建态、就绪态、运行态、阻塞态、终止态

image

image

新建态: 进程刚被创建,未进入就绪队列

就绪态:进程具备运行条件,等待系统分配处理器以便运行。可能会有多个,排成一个队列。

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

阻塞态:进程不具备运行条件,等待某个事件完成

终止态:进程完成任务到达正常结束点,或错误异常终止。之后不再执行,等待其他进程对该终止态进程信息抽取后被操作系统删除

进程命令

  • 查看进程
    ps aux / ajx
    a:显示终端上的所有进程,包括其他用户的进程
    u:显示进程的详细信息
    x:显示没有控制终端的进程
    j:列出与作业控制相关的信息

  • 实时显示进程动态
    top
    可以在使用 top 命令时加上 -d 来指定显示信息更新的时间间隔,在 top 命令执行后,可以按以下按键对显示的结果进行排序:

    • M 根据内存使用量排序
    • P 根据 CPU 占有率排序
    • T 根据进程运行时间长短排序
    • U 根据用户名来筛选进程
    • K 输入指定的 PID 杀死进程
  • 杀死进程
    kill [-signal] pid
    kill –l 列出所有信号
    kill –SIGKILL 进程ID
    kill -9 进程ID
    killall name 根据进程名杀死进程

进程号

  • 进程号(PID)类型为 pid_t(整形), 范围 0~32767
  • 任何进程(除init进程)都由父进程创建,对应进程号为(PPID)
  • 进程组可以接收同一终端的各种信号,关联的进程有一个进程组号(PGID)
  • 相关函数
    • pid_t getpid(void);
    • pid_t getppid(void);
    • pid_t getpgid(pid_t pid);

标签:02,排序,pid,kill,Linux,进程,就绪,运行
From: https://www.cnblogs.com/anqwjoe/p/17409715.html

相关文章

  • Linux多进程04-父子进程虚拟地址空间
    调用fork函数后,相当于复制一份地址空间出来,父子进程代码段(.text)是相同的,但栈空间是没有关系的,它们依据各自栈空间的值执行各自的判断逻辑在内核区中,父进程和子进程的pid是不一样的父子进程的关系:fork()函数的返回值不同pcb(progresscontrolblock进程控制块)中......
  • Linux多进程06-进程退出、孤儿进程、僵尸进程
    进程退出#include<stdlib.h>voidexit(intstatus);#include<unistd.h>void_exit(intstatus);/*#include<stdlib.h>voidexit(intstatus);#include<unistd.h>void_exit(intstatus);status参数:进程退出时一个状态信息,父进程回收子进程资源时可以获得*......
  • Linux多进程05-exec函数族
    execl:执行文件函数#include<unistd.h>intexecl(constchar*pathname,constchar*arg,...); 执行参数path字符串所代表的文件路径参数:-path:需要指定的执行的文件的路径或者名称(推荐使用绝对路径)-arg:是执行可......
  • Linux多进程07-wait和waitpid
    进程回收在每个进程退出的时候,内核释放该进程所有的资源、包括打开的文件、占用的内存等。但是仍然为其保留一定的信息,这些信息主要主要指进程控制块PCB的信息(包括进程号、退出状态、运行时间等)。父进程可以通过调用wait或waitpid得到它的退出状态同时彻底清除掉这个进程。......
  • Linux多进程09-匿名管道实现ps aux
    /*实现psaux|grepxxx父子进程间通信子进程:psaux,子进程结束后将数据发送给父进程父进程:获取到数据,guolvpipe()execlp()子进程将标准输出stdout_fileno重定向到管道的写端dup2()*/#include<stdio.h>#include<stdlib.......
  • Linux多进程08-进程间通信与管道
    进程间通信进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源。不同的进程需要进行信息的交互和状态传递(如:数据传输/通知事件/资源共享/进程控制),因此需要进程间通信(IPC:Int......
  • Linux多进程11-内存映射
    内存映射(Memory-mappedI/O)是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。mmap#include<sys/mman.h>void*mmap(void*addr,size_tlength,intprot,intflags,intfd,off_toffset);功能:将一个文件或者设备的数据映射到内存中参数:......
  • Linux多进程10-有名管道实现简单版聊天功能
    chatA.c//有名管道实现简单版聊天功能#include<unistd.h>#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<stdlib.h>#include<fcntl.h>#include<string.h>intmain(intargc,charconst*argv[]){......
  • Linux多进程13-kill,raise,abort函数
    #include<sys/types.h>#include<signal.h>intkill(pid_tpid,intsig);-功能:给某个进程pid,发送某个信号sig-参数:-pid:>0:将信号发送给指定的进程=0:将信号发送给当前的进程组=-1:将信号发送给每一个......
  • Linux多进程12-信号
    信号概念信号是Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。发往进程的诸多信......