首页 > 系统相关 >Linux任务的状态机制

Linux任务的状态机制

时间:2023-09-28 17:44:35浏览次数:30  
标签:状态 task 任务 -.- Linux 进程 机制 CPU

task的生命周期

Linux内核调度就是管理CPU硬件资源,同时决定多任务系统的每一个task应该什么时候上CPU,上CPU运行多久的一个机制。因此调度的机制涉及到两个方面一个是task侧,一个是CPU侧,任务是被管理的对象之一,会随着调度和运行改变状态。因此从task的角度来理解调度机制我认为是一个比较合理的方向。

Linux task状态变迁

首先在Linux系统中,一个task从创建到退出运行会经过一系列的task状态变化。Linux中进程状态常见有五种:

用户进程:

  • R(Running or Runnable):进程通过fork系统调用创建,新的进程会根据调度规则查看能否抢占当前任务,如果可以则获取CPU执行权,如果不可以则加入就绪任务队列,等待调度。
  • D(Uninterrupted Sleep)和S(Interrupted Sleep):当进程运行到需要等待资源就绪时,比如IO waiting或者等待网络请求,此时进程会主动让出CPU 并且进入睡眠状态。睡眠分为两种,一种是不可中断的睡眠,只能被资源就绪唤醒,一般出现在等待IO资源时,为的是避免和IO设备交互过程,被中断干扰(比如SIGINT)出现非预期的行为,此时会不响应信号。另一种是可中断的睡眠,在睡眠过程中可以响应信号从而被唤醒。
  • T(Stopped):在收到SIGSTOP信号时,进程会进入Stopped状态,并且信号无法忽略,该信号是可编程使用的。而SIGSTP通过Ctrl+Z触发,进程可以忽略该信号。 进入Stopped状态的进程,在收到SIGCONT信号可以恢复到R状态。
  • Z(Zombie):进程运行到exit后进入Zombie状态,此时进程不会继续执行了。但是进程的内核资源还没有被系统回收,需要parent进程调用wait或者waitpid接收子进程结束状态后才会完全抹除进程信息。
flowchart TB Entry[START] R[Runnable] D[Uninterrupted Sleep] S[Interrupted Sleep] T[Stopped] Z[Zomebie] Exit[Exit] Entry -.->|fork| R R -.->|wait resource| D D -.->|wakeup| R R -.->|wait resource| S S -.->|signal or wakeup| R R -.->|SIGSTOP/SIGSTP| T T -.->|SIGCONT| R R -.->|exit| Z Z -.->|wait| Exit

可以看到Runnable就是task状态的中转站,因此调度子系统最核心的部分就是管理Runbale task,也就是就绪队列管理。

标签:状态,task,任务,-.-,Linux,进程,机制,CPU
From: https://www.cnblogs.com/wodemia/p/17736236.html

相关文章

  • 实验任务3
     ......
  • 实验任务2
    #include<stdio.h>intmain(){floata,b,c;scanf("%f%f%f",&a,&b,&c);if((a+b)>c)printf("能构成三角形\n");elseprintf("不能构成三角形\n");return0;} ......
  • Django实战项目-学习任务系统-需求说明
    一,需求说明在我最近的阅读中,我深深被一些关于智能或系统的小说吸引。这些小说的主角意外获得某种神秘的智能或系统,然后通过完成系统发布的各种任务,逐渐提升自己的知识和能力。即使是普通的屌丝,也能在系统的管理和奖励下,一步步实现自己的梦想。这种情景让我深感兴趣,于是我......
  • linux安装redis
    一、下载redissudoaptinstallredis-server 二、修改配置文件sudovim/etc/redis/redis.conf daemonizeyes    后端模式启动bind0.0.0.0     外网可访问,且去除ipv6限制requirepass     修改密码 三、服务管理1、重启服务sudoserviceredis-se......
  • linux系统升级ssh
    升级ssh7.7,linux安全问题安装包1.上传压缩包到指定的目录/home1.1或者rz-y上传2.进入home目录cd/home#有的系统缺少,安装gcc插件yuminstallgcc-y#解压unzipopenssh_update_ssh.zipcdopenssh#指定安装脚本./update_ssh.sh......
  • 秒懂Zookeeper原理与工作机制
    什么是ZookeeperZookeeper简称zk,先从字面意思上去理解,那就是动物园管理员。其实zk是大数据领域中的一员,为整个分布式环境提供了协调服务,主要可以用于存储一些配置信息,同时也可以基于zk实现集群。它是一个apache的开源分布式中间件。zk和大数据领域结合比较密切,可以管理很多框架,比如......
  • 秒懂Zookeeper原理与工作机制
    什么是ZookeeperZookeeper简称zk,先从字面意思上去理解,那就是动物园管理员。其实zk是大数据领域中的一员,为整个分布式环境提供了协调服务,主要可以用于存储一些配置信息,同时也可以基于zk实现集群。它是一个apache的开源分布式中间件。zk和大数据领域结合比较密切,可以管理很多框......
  • 《Unix/linux系统编程》教材第7、8章学习笔记
    第七章:文件操作文件操作级别(1)硬件级别fdisk:将硬盘、U盘或SDC盘分区mkfs:格式化磁盘分区,为系统做好准备fsck:检查和维修系统碎片整理:压缩文件系统中的文件(2)操作系统内核中的文件系统函数前缀为k表示内核函数(3)系统调用:用户模式程序使用系统调用来访问内核函数open()、read......
  • ORACLE 11204 for Linux(RAC) 环境配置及数据库参数最佳实践
    ORACLE11204forLinux(RAC)环境配置及数据库参数最佳实践针对Linux6.6(+)版本:1、Linux内核参数配置vm.dirty_ratio=20vm.dirty_background_ratio=3vm.dirty_writeback_centisecs=100vm.dirty_expire_centisecs=500vm.swappiness=10vm.min_free_kbytes=524288##需要根据SGA......
  • Linux TLB 刷新的懒惰模式【转】
    转自:https://blog.csdn.net/Henzox/article/details/41963271我们都知道,在切换页表时会刷新TLB,这样就可以使用新的地址空间,那什么是TLB刷新的懒惰模式呢?TLB是什么这里不作多的解释,可以简单理解为,为了加快MMU对虚拟地址的转换而增加的缓存,它记录了一个虚拟地址......