原文:为什么Linux不能在中断中睡眠

中断分析 首先来看中断的流程: 如果条件满足了 即:有中断描述符,并成为调度器的调度单位,栈也不溢出了,理论上是可以做到中断睡眠的 ,中断是可以睡眠的,但会引起很多问题. 例如,你在时钟中断中睡眠了,那操作系统的时钟就乱了,调度器也了失去依据 例如,你在一个IPI 处理器间中断 中,其它CPU都在死循环等你答复,你却睡眠了,那其它处理器也不工作了 例如,你在一个DMA中断中睡眠了,上面的进程还在同 ...

2020-10-15 14:41 0 731 推荐指数:

查看详情

中断不能睡眠的原因

为什么interrupt context不能调用导致睡眠的kernel API呢?如果驱动这么做会导致什么样的后果呢? 本文的实验在X86 64bit + 标准4.4内核上完成。 看下一个中断: #define DRIVER_DESC "context schedule ...

Fri Mar 03 19:47:00 CST 2017 0 1655
中断里为什么不能睡眠

前几天被人问到了“中断里为什么不能睡眠”这个问题,之前我并没有深究过这个问题。后来查了一下资料,基本上所有的论坛和博客都说:因为中断没有上下文,如果睡眠被切换出去之后就无法再切回来。我实在是不能认同这种说法,中断确实没有自己的上下文,但是中断发生的时候它使用的是被中断进程的上下文,如果真的让中断 ...

Thu Apr 30 06:22:00 CST 2020 0 765
linux进程睡眠的介绍

事件. 对于一个 Linux 驱动使一个进程睡眠是一个容易做的事情. 但是, 有几个规则必须记住 以安全的方式编码睡 ...

Sat Jul 06 18:29:00 CST 2019 0 943
linux一个进程如何睡眠

如果我们深入 <linux/wait.h>, 你见到在 wait_queue_head_t 类型后面的数据结构是非 常简单的; 它包含一个自旋锁和一个链表. 这个链表是一个等待队列入口, 它被声明做 wait_queue_t. 这个结构包含关于睡眠进程的信息和它想怎样被唤醒 ...

Sat Jul 06 18:38:00 CST 2019 0 404
Linux进程的睡眠和唤醒

1 Linux进程的睡眠和唤醒 在Linux,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行的进程时间片用完, Linux内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程 ...

Mon Jul 03 05:37:00 CST 2017 0 8824
linux系统中断已连接的用户

1、用w命令查看当前系统登录的用户 USER —登录的用户名TTY —登录后系统分配的终端号FROM—远程主机名,即从哪儿登录来的LOGIN@—何时登录IDLE—空闲了多长时间,表 ...

Wed Jun 22 03:19:00 CST 2016 0 1966
linux nvme 的中断申请及处理

中断的描述符如上所述。作为背景知识,可以理解下面的内容,本文讨论基于的内核版本信息如下: 我们知道,nvme的多队列,默认按照核数的多少来设置,目前nvme的队列有两种,admin队列,IO队列,两者都属于nvme_queue对象,submit queue ...

Tue Dec 19 18:43:00 CST 2017 0 1302
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM