事务内存中的稳定调度
1. 引言
在并发编程中,线程在访问共享对象时需要进行同步,以避免冲突。传统的低级线程同步机制,如锁和屏障,存在死锁和优先级反转等问题。事务内存作为多处理器系统功能的高级抽象应运而生,它将程序代码块指定为“事务”,这些事务需要原子性地执行。
事务采用推测执行的方式,如果由于同步冲突或失败而中止,其执行会回滚并在稍后重新启动。当多个事务同时尝试访问同一对象时,会产生访问冲突,可能导致部分事务中止。这种同步冲突由调度器(也称为竞争管理器)处理,调度器的任务是确定事务的执行顺序,以避免对共享对象的访问冲突。
事务生成的对抗模型受到对抗排队理论的启发,该理论用于研究持续注入数据包的路由算法的稳定性。在事务内存中,并发执行多个事务受到限制,因为事务需要对其要交互的每个对象具有独占访问权才能成功执行。
计算机系统包含一组固定的共享对象,事务会持续产生。系统是同步的,事务调度算法的执行被划分为多个轮次,成功执行一个事务需要一轮时间。多个事务可以同时调用,但事务需要对其要交互的每个对象具有独占访问权。如果在一轮中多个访问同一对象的事务被调用,则它们都会中止。
事务的到达由对抗模型控制,该模型的参数限制了平均生成率和一轮中可以生成的事务数量。已处理的事务可能还会受到对事务需要访问的对象数量上限的限制。系统的任务是最终执行每个生成的事务,同时尽量减少任何一轮中待处理事务的数量以及待处理事务等待执行的时间。
事务生成有两种模型,分别是无队列模型和基于队列模型,前者每个事务有一个对应的自主处理器负责执行,后者有一组固定的处理器,每个带有事务的线程被分配到一个处理器。我们会考虑集中式和分布式调度器,且这些调度器都是确定性的,
超级会员免费看
订阅专栏 解锁全文
1309

被折叠的 条评论
为什么被折叠?



