__schedule流程中deactive_task代码学习

__schedule流程中,deactive_task用于从运行队列中删除当前任务。当非内核抢占且任务不运行时,若无待处理信号,此函数将任务设为TASK_RUNNING或彻底删除。本文探讨deactive_task的使用场景和实现细节,包括如何通过dequeue_task操作rq,调度类、调度实体和运行队列之间的关系。
摘要由CSDN通过智能技术生成

deactive_task使用场景

__schedule处理中, deactive_task用于将当前的任务从rq中删除,如下流程图,在非内核抢占且当前任务不处于运行状态,如果当前任务存在待处理的信号量,要将这个任务状态设置成TASK_RUNNING,没有则调用deactive_task,将当前任务从rq中删除。
调用流程
task_struct中的state字段描述进程的当前状态,进程一共有五个状态:

state state description
TASK_RUNNING 运行:进程是可执行的;它正在执行或者在运行队列中等待执行
TASK_INTERRUPTIBLE 可中断睡眠: 进程正在睡眠,即它被阻塞,等待某些条件达成,一旦条件达成,内核就会把进程状态设置成可执行
TASK_UNINTERRUPTIBLE 不可中断睡眠:除了即使接收到信号也不会投入运行,该状态与可终端睡眠状态相同
TASK_TACED 被其他进程跟踪的进程
TASK_STOPPED 进程停止执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值