在PRAM模型中,多个处理器同步操作以对不同的数据集执行相同的命令。
每种算法都有两种类型的读/写模式;
我觉得难以理解的是这两种模式究竟有什么不同,哪些似乎更精通?
答案 0 :(得分:4)
PRAM machines可以利用以下列出的主要方法之一来处理在任何纯[SERIAL]
系统中未观察到的并发事件处理策略。
鉴于机器物理机构的性质,下面列出的一些政策可能(但不一定)与处理目标相匹配,而基于软件的工具则是允许其他政策(未在下面列出,因此不直接支持)通过PRAM基于硬件的资源),确实需要花费额外的时间(附加开销)来调解这些策略执行步骤和措施。
正如下面3.2.x中所观察到的,一些基于硬件的策略可能直接有益于专门的,非通用的,图像处理或类似情况,而如果不受某些排他性锁定或原子操作的保护,通用计算图不能得到正确的结果,因为以下列出的CRCW政策都没有确保系统有效的结果,否则不合理的“正义” - [CONCURRENT]
预定的代码执行并发发起的冲突写访问。
1.1)不允许多个处理器同时进行内存访问 1.2)如果两个或多个处理器同时尝试读取或写入同一存储器单元,则行为未定义
2.1)同时读取相同的存储单元是可以的 2.2)对同一单元格的两次并发写入导致 未指定的行为
3.1)并发读写都可以 3.2)并发写入的行为 必须进一步指定:
3.2.1)弱CRCW:并发只写如果所有处理器写 0
3.2.2)共模CRCW:所有处理器都需要写相同的值
3.2.3)任意获胜者 - CRCW:对手选择其中一个值(确实是一个抽奖)
3.2.4)优先级 - CRCW:写入具有最高ID 的处理器的值
3.2.5)强CRCW: {最大|最小} - 值写成
答案 1 :(得分:2)
如果两个进程尝试从同一个内存位置同时读取怎么办? (此操作定义明确。)
如果两个进程同时尝试写入同一个内存位置怎么办? (这个操作定义不太明确:最终值是否会被某些过程写成?如果是,哪一个?它会是“混合”吗?)
您可以使用一个或其他模型设计算法,即允许自己并发读/写。
最“强大”的机器是CRCW模型,它可以提供最快的算法,其次是CREW。