线性化和可序列化(在Java中)有什么区别?您能否举例说明它们之间的区别或提供参考?
两者之间的主要区别是可序列化是一个全局属性。整个操作/交易历史的属性。线性化是一个局部属性 ; 单个操作/交易的属性。另一个区别是线性化包含实时性的概念,而串行化性则不包括:操作的线性化点必须位于其调用和响应时间之间。(见蒂姆·哈里斯:事务内存,2ED看到从赫利希的幻灯片。多处理器编程,对线性化部分的艺术,这是可以在这里找到,对于一些例子和证据。
这两个属性的目标是相同的:顺序一致性。从Herlihy的论文中:
数据库和分布式系统上的许多工作都将可串行化性作为并发计算的基本正确性条件。在此模型中,事务是控制线程,它将有限的原始操作序列应用于与其他事务共享的一组对象。如果历史记录等同于其中事务似乎按顺序执行(即无交织)的历史记录,则可序列化。可以以显而易见的方式在非重叠事务对上定义(部分)优先顺序。如果事务在顺序历史记录中的顺序与其优先顺序兼容,则历史记录可以严格序列化...
...可线性化可以看作是严格可序列化的一种特殊情况,其中事务被限制为由应用于单个对象的单个操作组成。然而,这种单一操作的限制具有深远的实际和形式上的后果,使线性化计算与可序列化的计算方法具有不同的风格。一个直接的实际结果就是,适合串行化的并发控制机制通常不适合线性化,因为它们会引入不必要的开销并对并发施加不必要的限制。
哈里斯(Harris),蒂姆(Tim),詹姆斯·劳斯(James Larus)和拉维·拉杰瓦尔(Ravi Rajwar):事务性记忆,第2版。计算机体系结构综合讲座。Morgn&Claypool,2010年。ISBN9781608452354。URL:http://www.morganclaypool.com/doi/abs/10.2200/S00272ED1V01Y201006CAC011? journalCode = cac
Herlihy,Maurice和Jeanette Wing:线性化:并发对象的正确性条件。ACM Trans。编 郎 和系统。卷 1990年7月12日第3期,第463-492页。网址http://www.cs.brown.edu/~mph/HerlihyW90/p463-herlihy.pdf
Papadimitriou,Christos:并行数据库更新的可序列化性。ACM杂志第26卷。第4期,1979年10月,第631-653页。网址http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-210.pdf
Herlihy,Maurice和Nir Shavit:多处理器编程的艺术。Elsevier,2008年。ISBN978-0-12-370591-4。网址:http: //www.elsevier.com/wps/find/bookdescription.cws_home/714091/description#description有关线性化的PPT幻灯片位于:http : //pub.ist.ac.at/courses/ppc10/slides/线性化
Attiya,Hagit和Jennifer Welch:顺序一致性与线性化。ACM交易计算机系统上。1994年5月12日第2期,第91-122页。网址http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.133.4969&rep=rep1&type=pdf
如果您真的对此很在意,请阅读介绍这些定义的论文。对于线性化,这就是线性化:并发对象 Herlihy和Wing的正确性条件。它很密集,但值得关注。请注意,在软件事务存储社区中,线性化是否是正确的目标/属性是一个悬而未决的问题。
可序列化性是关于操作集合的结果/“系统”可表示为所有操作的特定顺序(“好像执行是按特定顺序执行的...”)。线性化是系统中操作的单个子集的属性...如果一个操作/一组操作在其他操作中看起来像是相对于其他操作在(逻辑)时间的特定时刻出现,则它们是可线性化的。此处的经典论文是Papadimitriou,并行数据库更新的可序列化性。
在考虑“线性化”时,请考虑“原子操作”。当一组(一组)操作(似乎)相对于系统的其他部分原子地发生时,它们是线性的。一个常见的表述是“给人一种错觉,即每个操作在调用和响应之间即刻生效。” 线性化的表述归功于Herlihy,它强调这是局部属性,而不是全局的其他类型的顺序一致性属性,例如“可序列化”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句