首页 > 系统相关 >linux进程的管理与调度

linux进程的管理与调度

时间:2023-05-01 20:55:45浏览次数:36  
标签:状态 TASK 调度 RUNNING 内核 linux 进程 CPU

 进程的管理与调度是所有操作系统的核心功能。从内核的角度来看,进程是内核分配资源(CPU,Memory)的重要单元,是计算机用来管理这些资源的一种抽象。

进程状态

1、TASK_RUNNING

表示进程要么正在执行,要么准备执行,等待cpu时间片的调度

2、TASK_INTERRUPTIBLE

表示进程被挂起(睡眠),直到某个条件成立触发CPU中断或者发送信号唤醒该进程,将其状态改成TASK_RUNNING,比如某个TASK_RUNNING的进程需要读取文件,发起系统调用从用户态进入内核态,内核将其状态改成TASK_INTERRUPTIBLE,然后调用磁盘驱动程序读取文件,CPU执行其他任务;待磁盘读取文件完毕,磁盘发送CPU中断信号,CPU将读取的文件内容传给进程,进程由内核态切换到用户态,处理文件内容。一般情况下,进程列表中的绝大多数进程都处于TASK_INTERRUPTIBLE状态,除非机器的负载很高。

3、TASK_UNINTERRUPTIBLE

与TASK_INTERRUPTIBLE类似,区别是不能被外部信号唤醒,只能通过CPU中断唤醒。该状态总是非常短暂的,通过ps命令基本上不可能捕捉,主要用于避免内核某些处理过程被中断,如进程与设备交互的过程,中断会造成设备陷入不可控的状态。

4、TASK_STOPPED

表示进程的执行已停止,向进程发送一个SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU信号,它就会因响应该信号而进入TASK_STOPPED状态,向进程发送一个向进程SIGCONT信号,可以让其恢复到TASK_RUNNING状态。

5、TASK_TRACED

表示进程的执行已停止,等待跟踪它的进程对它进行操作,比如在gdb中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于TASK_TRACED状态。处于TASK_TRACED状态的进程不能响应SIGCONT信号而被唤醒,只能等到调试进程通过ptrace系统调用执行PTRACE_CONT、PTRACE_DETACH等操作或调试进程退出,被调试的进程才能恢复TASK_RUNNING状态。

6、EXIT_ZOMBIE

表示进程已终止,正等待其父进程执行wait类系统调用收集关于它的一些统计信息如退出码,内核此时无法回收该进程的进程描述符。如果父进程未执行wait类系统调用并退出了,子进程会转交给上一级的父进程,直到最终的init进程,由上一级父进程执行wait类系统调用。

7、EXIT_DEAD

表示进程已终止,父进程已经执行wait类系统调用,进程即将被内核删除,该状态非常短暂。

Linux Kernel 2.6.25 引入了一种新的进程睡眠状态,TASK_KILLABLE:当进程处于这种可以终止的新睡眠状态中,它的运行原理类似于 TASK_UNINTERRUPTIBLE,只不过可以响应致命信号。 作者:精通Linux内核 https://www.bilibili.com/read/cv19665176/ 出处:bilibili

 

内核如何将进程置为睡眠状态

 

标签:状态,TASK,调度,RUNNING,内核,linux,进程,CPU
From: https://www.cnblogs.com/god-of-death/p/17366985.html

相关文章

  • LINUX C、QT上位机间串口传输数据库文件
    在串口传输文件时,我们通常希望以二进制形式将文件发送出去,因为这样可以避免文件内容被解释为ASCII码,并且可以减少数据传输的时间和数据量。在QT上位机中可以使用以下方式将文件读取并发送出去://读取本地SQLite3数据库文件QStringfilename="wifi_UAV.db";QFilefil......
  • LINUX 串口设备行规程——回车检测机制
    做项目时调用串口,遇到了只有存在回车时才能read到数据的情况,这是设置了行规程的结果。禁用行规程即可取消按行读取机制,如下:(建议大部分情况下都禁用)newtio.c_lflag&=~ICANON;......
  • linux 内核 工作队列
    简介工作队列是将操作延期执行的另一种手段。因为它们是通过守护进程在用户上下文执行,函数可以睡眠任意长的时间。对每个工作队列来说,内核都会创建一个新的内核守护线程。新的工作队列通过调用 create_workqueue 或 create_workqueue_singlethread 函数来创建。前一个函数在......
  • linux 常用命令
    ssh登录:[email protected]上传文件:scp-P11022/d/tmp/[email protected]:/home/program如是windowsscp-P11022 d:/tmp/[email protected]:/home/program下载文件:scp-P11022 [email protected]:/home/program /d/tmp/sim.data如是win......
  • linux cpufreq framework(5)_ARM big Little driver
    1.前言也许大家会觉得奇怪:为什么Linuxkernel把对ARMbig·Lttile的支持放到了cpufreq的框架中?众所周知,ARM的big·Little架构,也称作HMP(具体可参考“LinuxCPUcore的电源管理(2)_cputopology”中相关的介绍),通过在一个chip中封装两种不同类型的ARMcore的方式,达到性能和功耗的......
  • 关于Linux系统-sshd服务-AllowUsers与AllowGroups-选项的安全加固配置
    在一些Linux系统-sshd服务,的主配置文件,/etc/ssh/sshd_config 我们可能会看到配置有AllowUsers与AllowGroups的安全加固选项,关于两个选项的说明如下:从选项名称上就可以知道这两个是选项,是属于白名单选项的,在安全中,如果能使用白名单模式,肯定是更安全的这里我们先说一下 AllowU......
  • 关于Linux系统-sshd服务-PasswordAuthentication-选项的加固配置
    关于sshd服务的主配置文件,/etc/ssh/sshd_config 有一个选项叫做PasswordAuthentication,根据单词意思、就知道此选项是与密码相关的即可以知道此值默认为yes,即使不写或者注释,代表是允许用户通过密码进行ssh登录有时我们可以在加固的操作系统中看到,此值会被配置为noPasswordAu......
  • 电脑上的linux是什么文件夹,Windows中现在有独立的Linux文件夹系统
    三月中旬,微软曾通过博客宣布,WSL2将在Windows102004版本中正式进入普遍可用(GA,GenerallyAvailable)状态。与此同时,微软表示对WSL2所依赖的 Linux 内核的提供方式也会进行一些改进。随着Windows10InsiderBuilt19603版本(即Windows102004预览版)的到来,微软又为......
  • linux下安装redis
    1.安装gccyuminstall-ygcc-c++2.下载安装包https://download.redis.io/releases/redis-6.2.0.tar.gz3.解压tar-zxvfredis-6.2.0.tar.gz4.编译安装cdredis-6.2.0make##/home/redis为安装目录##makeinstallPREFIX=/home/redis5.拷贝配置文件并授权mkdir-......
  • Linux各监控指标及问题排查
    htop/tophtop足以覆盖大多数指标,详细直接查看帮助即可。sort:bymem/cpu/state.根据进程状态排序也至关重要,特别在loadaverage过高的时候。根据内存以及CPU使用率排序用以定位高资源占用者。filterfieldsprocess/count...CPU基本信息在linux中一切皆文件,查看/proc/cpuin......