分享
 
 
 

事务内存

王朝百科·作者佚名  2011-05-10
窄屏简体版  字體: |||超大  

事务内存事务内存是一种并行程序设计的方式,其来自于数据库管理系统(DBMS)中的事务(Transaction)概念。事务内存目前有两种实现方式,基于软件的STM(Software Transactional Memory)和基于硬件的HTM(Hardware Transacational Memory)。

背景采用任务并行时必须考虑线程间同步的问题:最初步也是最通常的方法是使用锁,只有获得了锁的线程在允许访问临界区,但是使用锁会发生一些问题,诸如优先级反转(Priority inversion)、死锁(Deadlock)、护航(Convoying)等问题;于是后来产生了无锁编程(Lockless programming)的概念,即使用原子操作(Atomic Operations)和同步路障(Memory barrier)来完成线程间同步的功能,这种方法规避了使用锁时出现的上述问题并极大的提高了并行度,但是面临着原子操作本身功能局限性和组合性(Compositionality)不佳的问题。原子操作的局限性使得无锁编程的算法设计很难,组合性则是指数个同步的原子对象组合应该也是一个同步的原子对象。

事务的概念事务的概念源自于数据库管理系统(DBMS)中数据库事务的概念。在数据库管理系统中,事务必须满足ACID性质,即原子性,一致性,隔离性和持久性。原子性指的是事务中的动作要么全部执行,要么一个都不执行;一致性指的是任何时刻,数据库必须处于一致性状态,即必须满足某些预先设定的条件;隔离性是指一个事务不能看见其他未提交事务所涉及到的内部对象的状态,而持久性则是指一个已提交的事务对数据库系统的改变必须是永久的。

事务内存的分类和涉及到的基本术语事务内存按照更新数据时的机制不同,可分为延迟更新(deferred-update) 和直接更新(direct-update) 两大类。延迟更新软件事务内存实现的基本思想是一个线程对仅对对象的一个副本进行改变,如果此次执行不与其他线程发生同步冲突,则此事务成功并执行提交(Commit)动作,如果失败则执行回滚(Abort 或 Rollback)动作。直接更新则是直接对对象进行更新,并使用显式的同步语句避免其他事物在进行更新的时候修改此对象。显然在直接更新时需要系统记录此对象的原始值,以便在回滚时可以恢复。

根据在事务冲突时的处理机制不同,TM又可以分为悲观和乐观的并发控制(pessimistic & optimistic concurrency control)两大类。在悲观的并发控制中,冲突一旦发生就必须要得到侦测并加以解决,而在乐观的并发控制里,冲突的侦测和解决可以延迟,只要是在事务提交之前进行就可以了。

事务还有粒度(granularity)的概念:最容易让程序员理解的粒度是对象粒度;在此粒度下,任何冲突发生的判决是在对象范围内进行的:即使两个事务修改的内存块不重合,只要他们是在同一个对象内,那么就可以判断这两个事务冲突。更精细的粒度是字粒度(word granularity)和字节粒度(byte granularity),在这两种粒度下,冲突的检测更精细,更利于事务内存系统性能的提升,但是却会给程序员带来不小的麻烦。

软件事务内存(STM)软件事务内存的实现包括原子对象(Atomic object)、冲突判决器(Conflict manager)。其中原子对象的实现是最重要的,它是各事务之间通信同步的媒介。原子对象的实现又分为顺序性实现和事务实现:其中事务实现还要要求实现同步和恢复(recovery)功能,同步功能即意味着要求有检测事务冲突的能力,而恢复功能则意味着需要在事务失败的时候将对象回滚到事务执行之前的状态。目前提出的原子对象一般是基于读/写冲突(Read/Write conflict)的机制:原子对象提供两个接口,一个为读接口,一个为写接口,通过读借口可以得到一个可以读的对象,而通过写接口则可以得到一个可以写的对象。为了检测冲突(即多个事务并发时的同步情况),事务中可以设立两个集合,一个为读集(Read set),一个为写集(Write set),分别记录该事务所要处理的读写原子对象集。如果一个事务的读集或写集与另一个事务的写集有交叉,则表明两个事务冲突,需要冲突判决器进一步采取决策。

硬件事务内存(HTM)Azul Systems在2009年推出的 Vega 2 微处理器支援硬件事务内存。

相关的话题内存一致性模型 (Memory consistency model)无锁编程(Lockless programming)任务并行事务提升(Transactional boosting)

参考书目Transactional Memory,Synthesis Lectures on Computer Architecture,MarkD. Hill, University of Wisconsin, Madison

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有