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

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

2020-04-29 22:22 0 765 推荐指数:

查看详情

中断中不能睡眠的原因

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

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

中断分析 首先来看中断的流程: 如果条件满足了(即:有中断描述符,并成为调度器的调度单位,栈也不溢出了,理论上是可以做到中断睡眠的),中断是可以睡眠的,但会引起很多问题. 例如,你在时钟中断睡眠了,那操作系统的时钟就乱了,调度器也了失去依据;例如,你在一个IPI(处理器间中断)中 ...

Thu Oct 15 22:41:00 CST 2020 0 731
[常识]Windows系统休眠和睡眠的区别?

睡眠和休眠都是笔记本电脑的节能方式,但有细微的差别: 睡眠还保持着开机状态的,休眠是关机了,但是再次开机之后和关闭时的系统状态是一样的。 睡眠还是保持着系统运行数据在内存中,而休眠则将内存中的数据保存在硬盘中。(应该是虚拟内存) 睡眠的唤醒时间应该比休眠要短。 参考来源 ...

Mon Nov 19 21:51:00 CST 2018 0 702
中断函数不能用动态内存申请和释放

一个是只要是内存动态申请,必然涉及到了堆,所以必然是要做共享资源保护的,FreeRTOS,用了临界区,没毛病。第二,只要是内存的动态管理,必然涉及到了复杂的算法,他的运行时间是带有很强的不确定性的。在中断跑算法,跑耗时的操作,只会是坑你自己而已。 当你在一个多线程环境内使用堆时,会出 ...

Mon Nov 02 19:26:00 CST 2020 0 547
中断

中断的概念 中断是指在程序执行过程中,出现某种紧急事件,CPU暂停执行现行程序,转去执行处理该事件的程序——中断服务程序,执行完后再返回到被暂停的程序继续执行,这一过程称为中断中断源 引起中断的设备或事件称为中断源。 分类: 可笼统地分为两类:CPU内产生的,称为内部中断 ...

Thu Apr 23 01:25:00 CST 2020 0 913
如何高效睡眠

最近,我看了《睡眠革命》一书,作者介绍了如何使用独创的R90睡眠法进行高效睡眠,颠覆了我以往对睡眠的认知。这本书是英超多个豪门球队(曼联、阿森纳等)特聘睡眠教练、前英国睡眠协会会长——利特尔黑儿斯写的。 下面是我整理的笔记内容。 遵守昼夜节律 图解:身体在晚上9点开始分泌褪黑素让我们产生 ...

Sat Aug 17 07:28:00 CST 2019 0 519
在定时器中断函数执行独立按键的扫描程序

/* 上一例在主函数中利用累计定时器中断的次数来实现独立按键的检测,但是 如果在某些项目中,需要主函数里面间歇性地执行一些一气呵成的耗时任务, 当主函数正在执行一气呵成的耗时任务时(前提没有关闭定时器中断),这个时候 如果有按键按下来,就有可能没有被及时响应而遗漏了。 解决办法 ...

Fri Nov 29 23:48:00 CST 2019 0 433
stm32的定时器在中断重新改变初值

在程序里面使用到定时器,初始化的时候赋值分频系数和自动重装值: TIM3_Int_Init(5000-1,8400-1); 但是在应用里面经常需要这个定时器能够扮演很多时间长度的角色,在中断或者打开定时器前 加入对arr重新赋值,就可以定时不同的长度 TIM3->ARR= arr ...

Thu Mar 16 19:41:00 CST 2017 0 3460
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM