问题标签 [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.

0 投票
5 回答
104425 浏览

linux - 什么是不间断进程?

有时,每当我在 Linux 中编写程序并且由于某种错误而崩溃时,它将成为一个不可中断的进程并永远继续运行,直到我重新启动计算机(即使我注销)。我的问题是:

  • 是什么导致进程变得不可中断?
  • 我该如何阻止这种情况发生?
  • 这可能是一个愚蠢的问题,但是有没有办法在不重新启动计算机的情况下中断它?
0 投票
5 回答
44942 浏览

linux - 什么是抢占/什么是可抢占内核?到底有什么好处呢?

用你自己的话解释一下,什么是抢占,它对(linux)内核意味着什么?

拥有可抢占内核的优点和缺点是什么?

0 投票
2 回答
320 浏览

linux - 非抢占式内核控制路径中的上下文切换 (Linux)

Linux 内核是非抢占式的,但我刚刚读到在不同的控制路径中可能存在上下文切换。这不与 Linux 内核的非抢占性质相矛盾吗?

0 投票
4 回答
8863 浏览

vxworks - VxWorks 调度程序是如何执行的?

想知道如何调用调度程序以便它可以切换任务。就像它的抢占式调度或循环调度一样——调度程序应该参与进来以进行任何类型的任务切换。假设一个低优先级的任务有一个无限循环——调度器什么时候干预并切换到一个更高优先级的任务?

查询是: 1.谁调用调度器?[在 VxWorks 中] 2. 如果它被定期调用 - 该机制是如何实现的?

提前致谢。

——阿什温

0 投票
1 回答
896 浏览

c - 如何为具有安全区域的功能设置时间限制

我正在尝试开发一个程序来限制函数的执行。在下面的代码中,我有一个名为的函数Inc,它进行了很多迭代(由无限循环模拟)。每次迭代的第一部分都很长,第二部分应该很快。

我不介意在代码的第一部分抢占执行,但我想避免在第二部分执行写操作时发出警报。

我的第一个想法是在进入“安全区域”之前关闭警报以节省剩余时间。然后退出后,我会用节省的时间设置闹钟。我不知道如何实现这一点。有人可以帮助我吗?也欢迎替代方法。

0 投票
3 回答
1734 浏览

c - 如何限制 C/POSIX 中函数的执行时间?

与此问题类似,我想在 C 中限制函数的执行时间——最好以微秒级的精度进行。我想 C++ 异常可用于实现类似于Python 解决方案的结果。虽然并不理想,但这种方法在纯 C 语言中完全不可用。

那么,我想知道,在 Posix 系统上的 C 语言中的某个时间间隔之后,我如何中断函数的执行?对于相对简单的情况,一些愚蠢的业务工作得很好,但这会增加大量与问题解决方案正交的代码。假设我有这样的功能:

我想在一个鸡蛋上运行煮沸*,每 50μs 中断一次以检查是否执行以下操作:

我意识到可以使用 pthreads 来执行此操作,但我更感兴趣的是避免使用它们。我可以在 SIGALRM 处理程序中在 ucontext_t 之间切换,但是 POSIX 标准指出,setcontext/swapcontext 的使用不能在信号处理程序中使用,实际上,我注意到 Linux 和 Solaris 系统在这样做时的不同行为。

这种效果达到吗?如果是这样,以便携式方式?

0 投票
9 回答
22733 浏览

linux - 说“linux内核是抢占式的”是什么意思?

我读到 Linux 内核是抢占式的,这与大多数 Unix 内核不同。那么,内核抢占式的真正含义是什么?

一些类比或例子会比纯粹的理论解释更好。

添加 1 -- 2018 年 12 月 7 日上午 11:00

抢先式只是多任务处理的一种范式。还有其他的,例如协作式多任务处理。通过比较它们可以更好地理解。

0 投票
2 回答
2840 浏览

linux - linux内核是否抢占?

Linux 内核是抢占式还是非抢占式?

理解 Linux 内核第 2 版和第 3 版之间存在很大差异。在第 2 部分中写到 Linux 内核不是抢占式的,但在第 3 部分中的同一段中什么也没说。

0 投票
1 回答
9842 浏览

locking - spin_lock 和 mutex_lock 期间的 Linux 内核抢占

当内核空间中的进程持有 aspin_lock时,由于以下任何一种情况,该进程不能被抢占:

  1. 当流程的时间片耗尽时
  2. 当高优先级进程变为可运行时
  3. 发生中断时

但是,如果进程阻塞、休眠或显式调用schedule(). 我的理解正确吗?

当内核空间中的进程持有 amutex_lock时,由于上述 1、2 和 3 列出的条件,该进程是否可以被抢占。

0 投票
2 回答
884 浏览

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 进行了内存分析,结果是正常的,我什至尝试禁用抢占,但它仍然没有显示任何差异。如果有人可以在这里帮助我。谢谢!