问题标签 [preemption]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 什么是不间断进程?
有时,每当我在 Linux 中编写程序并且由于某种错误而崩溃时,它将成为一个不可中断的进程并永远继续运行,直到我重新启动计算机(即使我注销)。我的问题是:
- 是什么导致进程变得不可中断?
- 我该如何阻止这种情况发生?
- 这可能是一个愚蠢的问题,但是有没有办法在不重新启动计算机的情况下中断它?
linux - 什么是抢占/什么是可抢占内核?到底有什么好处呢?
用你自己的话解释一下,什么是抢占,它对(linux)内核意味着什么?
拥有可抢占内核的优点和缺点是什么?
linux - 非抢占式内核控制路径中的上下文切换 (Linux)
Linux 内核是非抢占式的,但我刚刚读到在不同的控制路径中可能存在上下文切换。这不与 Linux 内核的非抢占性质相矛盾吗?
vxworks - VxWorks 调度程序是如何执行的?
想知道如何调用调度程序以便它可以切换任务。就像它的抢占式调度或循环调度一样——调度程序应该参与进来以进行任何类型的任务切换。假设一个低优先级的任务有一个无限循环——调度器什么时候干预并切换到一个更高优先级的任务?
查询是: 1.谁调用调度器?[在 VxWorks 中] 2. 如果它被定期调用 - 该机制是如何实现的?
提前致谢。
——阿什温
c - 如何为具有安全区域的功能设置时间限制
我正在尝试开发一个程序来限制函数的执行。在下面的代码中,我有一个名为的函数Inc
,它进行了很多迭代(由无限循环模拟)。每次迭代的第一部分都很长,第二部分应该很快。
我不介意在代码的第一部分抢占执行,但我想避免在第二部分执行写操作时发出警报。
我的第一个想法是在进入“安全区域”之前关闭警报以节省剩余时间。然后退出后,我会用节省的时间设置闹钟。我不知道如何实现这一点。有人可以帮助我吗?也欢迎替代方法。
c - 如何限制 C/POSIX 中函数的执行时间?
与此问题类似,我想在 C 中限制函数的执行时间——最好以微秒级的精度进行。我想 C++ 异常可用于实现类似于此Python 解决方案的结果。虽然并不理想,但这种方法在纯 C 语言中完全不可用。
那么,我想知道,在 Posix 系统上的 C 语言中的某个时间间隔之后,我如何中断函数的执行?对于相对简单的情况,一些愚蠢的业务工作得很好,但这会增加大量与问题解决方案正交的代码。假设我有这样的功能:
我想在一个鸡蛋上运行煮沸*,每 50μs 中断一次以检查是否执行以下操作:
我意识到可以使用 pthreads 来执行此操作,但我更感兴趣的是避免使用它们。我可以在 SIGALRM 处理程序中在 ucontext_t 之间切换,但是 POSIX 标准指出,setcontext/swapcontext 的使用不能在信号处理程序中使用,实际上,我注意到 Linux 和 Solaris 系统在这样做时的不同行为。
这种效果能达到吗?如果是这样,以便携式方式?
linux - linux内核是否抢占?
Linux 内核是抢占式还是非抢占式?
理解 Linux 内核第 2 版和第 3 版之间存在很大差异。在第 2 部分中写到 Linux 内核不是抢占式的,但在第 3 部分中的同一段中什么也没说。
locking - spin_lock 和 mutex_lock 期间的 Linux 内核抢占
当内核空间中的进程持有 aspin_lock
时,由于以下任何一种情况,该进程不能被抢占:
- 当流程的时间片耗尽时
- 当高优先级进程变为可运行时
- 发生中断时
但是,如果进程阻塞、休眠或显式调用schedule()
. 我的理解正确吗?
当内核空间中的进程持有 amutex_lock
时,由于上述 1、2 和 3 列出的条件,该进程是否可以被抢占。
c - C 代码 - 内存访问/抢占
我写了一段代码,其中有一个数据:
我将每 3 个连续字节的 i/p 数据相加并存储 ans。例如:温度[4096];临时[0] = buf[0] + buf[1] + buf[2];... 直到 4096
然后使用以下代码从 temp 的结果生成直方图:
对直方图进行排序(冒泡排序),然后取前 8 个最常出现的值。代码在linux内核(2.6.35)中运行
我面临的问题是,如果我删除排序部分,执行代码所需的时间非常快(在我的笔记本电脑上为 6 微秒,使用 gettimeofday func 测量)。但是在引入排序之后,这个过程在很大程度上减慢了(44微秒)。排序功能本身需要 20 微秒,我不明白为什么时间会增加这么多。我使用 cachegrind 进行了内存分析,结果是正常的,我什至尝试禁用抢占,但它仍然没有显示任何差异。如果有人可以在这里帮助我。谢谢!