【问题标题】:What is process interleaving? (in the realm of Concurrency)什么是进程交错? (在并发领域)
【发布时间】:2014-04-13 20:36:58
【问题描述】:

我不太清楚这个术语的含义。我在我们学习并发的课程中看到了它。我看过很多数据交错的定义,但我可以找到有关进程交错的任何信息。

当看到这个术语时,我的直觉告诉我它是使用线程同时运行多个进程,对吗?

【问题讨论】:

  • 你能告诉我为什么你对我的问题投了反对票吗?我认为这是有效的..如果我做错了什么,请告诉我

标签: multithreading concurrency process promela


【解决方案1】:

如果您将一个过程想象为一个(可能是无限的)语句序列/轨迹(例如,通过循环展开获得),那么几个过程的可能交错集合由任何这些过程的所有可能的语句序列组成。

以流程为例

int i;

proctype A() {
  i = 1;
}

proctype B() {
  i = 2;
}

那么可能的交织是i = 1; i = 2i = 2; i = 1,即i 可能的最终值是1 和2。这当然可以更复杂,例如在存在保护语句的情况下: 然后下一个交织序列中可能的语句不一定是在下一个程序计数器位置的语句,而只是那些被守卫允许的语句;例如考虑proctype

proctype B() {
  if
    :: i == 0 -> i = 2
    :: else   -> skip
  fi
}

那么可能的交错(如前面给出的A())是i = 1; skipi = 2; i = 1,所以i 只有一个可能的最终值。

事实上,交错的概念对于 Spin 的并发观点至关重要。在跟踪语义中,并发进程的可能跟踪集合是各个进程跟踪的可能交错集合。

【讨论】:

    【解决方案2】:

    它只是意味着以任意顺序执行(数据访问或执行或...)**(见注释)。在并发的情况下,通常指的是动作交错。 如果进程 P 和 Q 是并行组合(P||Q),那么它们的动作将是交错的。考虑以下流程:

    PLAYING = (play_music -> stop_music -> STOP).
    PERFORMING = (dance -> STOP).
    
    ||PLAY_PERFORM = (PLAYING || PERFORMING).
    

    所以每个原始过程可以表示为:(由LTSA模型检查工具生成)

    那么作为动作交错的结果可能的痕迹将是:

    dance -> play_music -> stop_music
    play_music -> dance -> stop_music
    play_music -> stop_music -> dance
    

    这是 LTSA 工具生成的此示例的输出。

    **注意:这里的“任意”是指任意选择进程执行而不是它们的内部代码序列。每个进程中的代码执行总是会按顺序执行。

    如果您仍然不满意,可以查看:https://www.doc.ic.ac.uk/~jnm/book/firstbook/pdf/ch3.pdf

    希望对您有所帮助! :)

    【讨论】:

      【解决方案3】:

      操作系统支持任务(或进程)。但现在让我们考虑一下“活动”。

      活动可以并行执行。这里有两个活动,P 和 Q:

          P:      abc
          Q:      def
      

      a、b、c、d、e、f 是运算。 *

      每个操作始终具有相同的效果,而与其他操作无关 操作可能同时执行(原子性)。

      同时执行这两个活动有什么效果?我们 不确定,但我们知道它将与获得的相同 通过顺序执行两个活动的 INTERLEAVING [交织也称为时间表]。这里有可能 这两个活动的交错:

          abcdef
          abdcef
          abdecf
          abdefc
          adbcef
          ......
          defabc
      

      也就是说,两个活动的操作以所有可能的方式排序,以保持操作在两个活动中出现的顺序。两个活动的串行交错 [串行调度] 是一个活动的所有操作先于另一活动的所有操作。 interleaving 概念的重要性在于它可以让我们表达并发程序的含义:活动的并行执行等价于这些活动的其中一个交错的顺序执行。

      详细信息:https://cis.temple.edu/~ingargio/cis307/readings/interleave.html

      【讨论】:

        猜你喜欢
        • 2016-04-25
        • 2017-03-28
        • 2010-12-24
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        • 1970-01-01
        • 2011-05-23
        相关资源
        最近更新 更多