首页 > 其他分享 >TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE

TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE

时间:2023-04-22 19:45:31浏览次数:35  
标签:UNINTERRUPTIBLE TASK 函数 INTERRUPTIBLE 信号 ERESTARTSYS

TASK_INTERRUPTIBLE 和TASK_UNINTERRUPTIBLE 的区别

TASK_INTERRUPTIBLE是可以被信号和wake_up()唤醒的,当信号到来时,进程会被设置为可运行。
而TASK_UNINTERRUPTIBLE只能被wake_up()唤醒。

信号本质

信号是在软件层次上对中断机制的一种模拟,软中断

信号来源

信号事件的发生有两个来源:
硬件来源:(比如我们按下了键盘或者其它硬件故障);
软件来源:最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。

区分是什么原因唤醒进程,用如下:

        if (signal_pending(current)) {
            retval = -ERESTARTSYS;
            break;
        }

检查当前进程是否有信号发生,返回不为0表示有信号需要处理。-ERESTARTSYS 表示信号处理函数执行完毕后重新执行信号处理函数前的某个系统调用。也就是说,如果信号发生前有发生系统调用,在执行信号处理函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用,如果返回值是-ERESTARTSYS,并且当前调度的信号具备-ERESTARTSYS属性,系统就会在信号处理函数返回之后再执行该系统调用。

标签:UNINTERRUPTIBLE,TASK,函数,INTERRUPTIBLE,信号,ERESTARTSYS
From: https://www.cnblogs.com/god-of-death/p/17343762.html

相关文章

  • 通过django-background-tasks执行定时任务
    1.安装django-background-taskspipinstalldjango-background-tasks2.在Django项目的settings.py文件中添加以app:INSTALLED_APPS=[#otherapps'background_task',]3.创建一个包含需要执行的任务函数:frombackground_taskimportbackgroundimportrando......
  • vscode 当做记事本,用任务 tasks 自动提交git - ctrl shift B
    vscode当做记事本,用任务tasks自动提交git-ctrlshiftB起因开始用的joplin本地记事本挺好,唯一缺点不能同步。用了一下,发现markdown是两栏的,变成一栏就是html的。如果要是两栏,我能接受的话,那就直接vscode不就完了吗代码tasks.json{//Seehttps://go.microsof......
  • 使用Task的一些知识优化了一下同事的多线程协作取消的一串代码
    最近在看一个同事的代码,代码的本意是在main方法中开启10个线程,用这10个线程来处理一批业务逻辑,在某一时刻当你命令console退出的时候,这个时候不是立即让console退出,而是需要等待10个线程把检测状态之后的业务逻辑执行完之后再退出,这样做是有道理的,如果强......
  • ThreadPoolTaskExecutor和ThreadPoolExecutor区别
    ThreadPoolExecutor是Java原生的线程池类,而ThreadPoolTaskExecutor是Spring推出的线程池工具  一、从核心参数看两者关系 ThreadPoolExecutor(java.util.concurrent) publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,......
  • 频繁设置CGroup触发linux内核bug导致CGroup running task不调度
    1.说明1>本篇是实际工作中linux上碰到的一个问题,一个使用了CGroup的进程处于R状态但不执行,也不退出,还不能kill,经过深入挖掘才发现是Cgroup的内核bug2>发现该bug后,去年给RedHat提交过漏洞,但可惜并未通过,不知道为什么,这里就发我博客公开了3>前面的2个帖子《极简cfs公平调度算......
  • HDU 4864Task(多校联合训练1)(贪心)
    题目地址:HDU4864这题又是一上来认为是最小费用流,但是边太多,果然,敲完交上去后不断TLE。。小优化了两次也没过。。。sad。。后来看了题解才发现是贪心。。。贪心也不好想。大体思路是很好想的,就是先都按时间从大到小排序,再遍历任务,从机器里找能匹配的,并在能匹配的里边找等级尽量小的......
  • android AsyncTask
    在Android中每一个应用都拥有自己的独立进程,而一个进程可以拥有多个线程,在这些线程中有一个线程叫做MainThread(也叫UIThread).它负责显示、更新UI,与用户交互.其他的线程叫做WorkerThread(也叫工作线程),由于在主线程中做耗时的操作会阻塞主线程,影响UI更新,会让用户感觉到应......
  • SPRING ThreadPoolTaskExecutor示例
    0、前言当我们需要实现并发、异步等操作时,通常都会使用到ThreadPoolTaskExecutor。它是springcore包中的,而ThreadPoolExecutor是JDK中的JUC。ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理。1、示例1.1、配置类importorg.springframework.context.annotation......
  • 语义通信论文阅读(1):Beyond Transmitting Bits: Context, Semantics, and Task-Orient
    @目录引言语义信息度量知识图谱机器学习在语义通信的应用远程模型训练![在这里插入图片描述](https://img-blog.csdnimg.cn/dd937c25348649b8ac03b210baad237c.png#pic_center=360x70)《超越比特传输:上下文、语义和面向任务的通信》这是2022年10月发布在IJSAC上的一篇语义通......
  • COMP20007 Task 2: C Problem
    Task2:CProblemAssignment1GeneralTask1:AlgorithmicDesignTask2:CProblemAssignmentSubmissionAcademicHonestyLatePolicyRequirements:CProgrammingProgrammingStyleMarkBreakdownAdditionalSupportAcknowledgementsTask2:CProblemOlivia'sgrandfa......