问题标签 [multiprocessor]
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.
queue - 有没有办法模拟每个进程需要多个处理器的 M/M/C 队列?
我有一个包含 100k 进程的 CSV,它们各自的到达时间、服务时间和所需的处理器数量。我在 Python 中进行了模拟,但它甚至不接近理论结果。但是,我似乎找不到对这种特殊系统的任何参考,所以我可以看一些例子。在我看来,必须在使用的语言中使用并发来完成,但我确信有更好的方法。
...
这是我们的第一个模拟,但它生成随机值并且只有 5 个处理器,而我们需要 1500 个处理器和现有表中的值。
python - 进程变成僵尸 - Python3 多处理
首先,我将解释我的脚本的结构:
Script1 --(call)--> Script2 函数,该函数通过多处理进一步调用不同脚本中的12-15个函数,在这些函数中有些有无限循环,有些有线程。
包含线程的函数进一步调用了一些在其中具有无限循环的函数。
多处理的代码就像:
现在我面临的问题是:
- 它只打印第一个加入的打印语句,但所有进程都成功启动。(这意味着加入所有未执行的进程)。
- 其次,是一些进程变成僵尸,当运行多处理但没有多处理时,当函数在外部运行时效果很好(所以在这里我知道由于某些问题连接不能正常工作,我们的功能很好)。
- 第三,在我的情况下,我应该使用多处理。池或多处理。流程适合我吗?有什么建议吗?
- 第四,我想知道,除了多线程和多处理之外,是否还有其他选择。游泳池可能吗?
我也尝试了不同的事情,但没有像这样工作:
因为它单独在外部运行每个进程,就像我们在外部通过 popen 运行脚本一样,据我所知
注意:
我使用的是 Ubuntu 16.04。我有一个可以使用多处理的场景。进程,多进程。池和类似多处理的东西,但不能在这里使用多线程。
multithreading - 多处理器系统中线程之间的同步如何执行,其中线程共享数据但在不同的处理器中运行
1.a)在多处理器系统中线程之间的同步如何执行,其中线程共享数据但在不同的处理器中运行。1.b) 如果在多处理器环境中使用,像互斥锁和信号量这样的单处理器线程同步系统技术会失败吗
language-agnostic - 如果我的服务器是单线程进程,它是否只能运行一个客户端。如果是,为什么?
我已经用谷歌搜索了足够多的东西来理解线程和进程。我感到困惑的一件事是关于单线程进程。该场景是服务器-客户端应用程序进程,其中每个客户端都被视为服务器中的单个进程,它是单线程的。一些博客说单线程程序将无法同时处理多个客户端,即它可以启动一个进程,只有在完成后才能启动另一个进程。但是一些博客说这是可能的。
根据我的理解,在单核处理器系统中,如果将其编程为多任务处理,则取决于为每个进程分配的时间片,可以同时处理多个进程。在多处理器系统中,也可以并行处理多个客户端进程。是否只是因为它是迭代服务器而一次不处理多个进程的 Web 服务器?如果它的任何其他并发服务器,它会处理多个进程,而不是等待每个进程完成来处理下一个..?
由于我对不同博客中的许多不同解释感到困惑,因此我期望在具有多任务环境(或)多处理器环境的单处理器环境中,仅针对上述场景给出非常准确的答案。另外,想知道与没有任何线程的进程相比,使用单线程进程是否有任何好处。
对不起,如果我的理解是错误的。请回复。
提前致谢..
assembly - 为什么启动 AP 需要在 mit6.828 示例 OS 内核中进行间接调用?
我正在学习mit6.828课程,我不明白为什么在lab4启动AP时必须间接调用。我尝试直接调用call mp_main
(源代码:)movl $mp_main, %eax; call *%eax
,但它会导致三重错误。这是部分源代码
我不知道如何在多 CPU 中使用 gdb 进行调试,尤其是在启动时,但 entry.S 与此代码类似,并且很容易调试。这是entry.S键码
下面是正确代码的 gdb 输出。之前jmp *%eax
,eip 是低地址,但之后 eip 是高地址。下一条指令是mov $0, %ebp
.
如果我们更改为 directcall relocated
而不是mov $relocated, %eax; jmp *%eax
,则会导致三重错误,并且 gdb 输出:
如果我们查看 objdump 输出
这里虚拟地址 [0xf0000000, 0xf0000000+4MB) 和 [0, 4MB) 都映射到物理地址 [0, 4MB)
我想知道间接调用如何改变这一点。您可以在 github 中找到完整代码,只需在 kern/entry.S 和 kern/mpentry.S 中搜索“mit6.828”
computer-science - 比较单处理器与多处理器的公平性
保护命令循环结构
涉及非确定性选择,如文中所述。与潜在的非确定性计算相关的一个重要理论概念是公平性。如果一个循环无限重复,那么一个公平的非确定性选择最终必须选择每个保护为真的命令。例如,在循环中
这两个命令都有始终为真的守卫。x := x+1
重复执行而不执行是不公平的x := x-1
。
大多数语言实现旨在提供公平性,通常通过提供有界形式。例如,如果有受n
保护的命令,则实现可以保证每个启用的命令将在循环中的每个2n
或多次中至少执行一次。
但是,因为数字or是依赖于实现的,程序员应该只假设每个带有保护的命令最终都会被执行。3n
2n
3n
true
在单处理器语言实现还是在多处理器上更容易提供公平性?
python - 使用多处理器并行创建列表列表
我正在使用一个需要很长时间来计算每个列表元素的函数创建一个列表列表。由于这减慢了我的整个过程,我试图通过使用multiprocessing
python 中的库来使其运行得更快。
但是,当我尝试使用多处理器时,它会使我的代码运行得更慢。知道为什么会这样吗?
示例输出:
任何关于我如何并行创建此列表的注释都值得赞赏。
python - numba、多处理器和随机数生成器可以一起工作吗?
我试图让 numba、多处理器和随机数生成器一起工作。我已将我的真正问题缩小为包含重要元素的以下代码。以下对我有用。
至于我真正的问题,两个函数compute_with_random() 和single() 需要很长时间并且numba 可以加速它们我想使用numba 装饰器,所以使用上面的@jit 装饰器会导致以下错误。
如果我将 x=rng.normal(0,0.3,j) 替换为 x=np.random.normal(0,0.3,j) 并删除 compute_with_random() 中的参数 rng 和 single() 中的 se ,则该示例也可以正常工作麻木。因此,numba 和并行随机数生成器或种子/rng 可能存在问题。带有 rng.normal() 的随机数生成器应该为每个进程生成独立的随机数链。任何想法如何解决这个问题?谢谢