【问题标题】:comparing fairness in single processor vs multiprocessor比较单处理器与多处理器的公平性
【发布时间】:2021-09-15 15:35:40
【问题描述】:

保护命令循环结构

do
Condition ⇒ Command
...
Condition ⇒ Command
od

涉及非确定性选择,如正文中所述。一个与潜在非终止非确定性计算相关的重要理论概念 是公平。如果一个循环无限地重复,那么一个公平的非确定性选择必须 最终选择所有守卫为真的命令。比如在循环中

do
true ⇒ x := x+1
true ⇒ x := x-1
od

这两个命令都有始终为真的守卫。重复执行x := x+1 而不执行x := x-1 是不公平的。
大多数语言实现是 旨在提供公平性,通常通过提供有界形式。例如, 如果有 n 受保护的命令,那么实现可以保证 每个启用的命令将在每2n3n 次中至少执行一次 通过循环。
因为数字 2n3n 取决于实现, 不过,程序员应该只假设每个带有true 保护的命令 最终会被执行。

在单处理器语言实现上更容易提供公平性吗 还是在多处理器上?

【问题讨论】:

标签: computer-science cpu-architecture processor multiprocessor fairness-indicators


【解决方案1】:

大多数语言都有串行执行模型,就像机器代码一样,不会以任意执行比率并行执行每条语句。例如在 C 中,

  for (int i=0; i<10 ; i++){
     if (true) puts("hello");
     if (true) puts("world");
  }

你总是会得到类似的输出

hello
world
hello
world

按这个顺序。


公平(或至少非饥饿)线程级并行性在单核或多核机器上非常容易,具有抢先式多任务处理。大多数具有线程模型的语言都是围绕抢占式线程调度设计的,其中一个线程运行无限循环(即使没有系统调用)不会饿死其他线程。

多核更难实现正确的操作系统(例如,您需要锁定,而不仅仅是禁用中断),但确实允许同时运行更多线程。

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 2015-12-29
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多