TinySTM源代码分析 2.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TinySTM源代码分析 2

tinySTM工作流程: ● Main函数开始 ● Stm_init定义线程副本数据 ● Main函数开始 pthread_create 创建多线程 ● stm_init_thread 线程初始化 ● ● ● ● stm_start 事务开始 事务操作 stm_commit 事务提交 stm_exit_thread 线程退出 ● pthread_join 结束多线程 ● ● Stm_exit 结束事务 函数结束 事务,进程及共享内存的关系: 进程1 共享内存 ● ● 事务 线程 附:同一个线程内部的事务之间的关系暂不考虑 事务状态转移图: 附:同一个线程内部的事务之间的关系暂不考虑 TX_IDLE TX_ACTIVE TX_ABORTED TX_COMMITTED stm_init_thread stm_rollback stm_start stm_commit TinySTM数据结构 元素 类型 意义 DESIGN 0,1,2 写内存方式 Commit Time Locking (WRITE_BACK_ETL,WRITE_BACK_CTL,WRITE_THROUGH) CM Char * 冲突管理SUICIDE (自毁) (SUICIDE,DELAY,BACKOFF,PRIORITY) 0. 全局变量 TinySTM数据结构 1. locks (全局锁指针) 数组 static volatile stm_word_t locks[LOCK_ARRAY_SIZE]; lock最后一位表示是否锁上了 如果锁上了,前面的位表示一个指向当前在写内存的事务的TX 如果没有锁上,前面的位表示版本号 附: CTL模式是不加全局锁的。 数组的每一个元素对应一个内存数据,根据内存数据的地址得到索引 TinySTM数据结构 元素 类型 意义 attr Stm_tx_attr_t * 包含事务id,和是否只读 Status Stm_word_t 事务状态 (TX_IDLE空闲, TX_COMMITTED以提交, TX_ACTIVE活动的 可以读或写, TX_ABORTED中断) R_set R_set_t 读集 W_set W_set_t 写集 Nesting Int 嵌套等级(只是记录嵌套等级,不进行任何操作,为了控制提交和回滚的粒度) 2. stm_tx_t 事务控制块 TinySTM数据结构 3. w_set_t 写集 元素 类型 意义 Entries W_entry_t * 数据列表 Nb_entries Int 数据条数 Size Int 列表总长度 Nb_acuired Int 已获得锁的数目 TinySTM数据结构 4. w_entry_t 写集里面的数据 元素 类型 意义 Addr Stm_word_t * 数据地址 Value Stm_word_t 数据值 Mask Stm_word_t 数据掩码 Version Stm_word_t 数据版本 tinySTM工作流程: ● Main函数开始 ● Stm_init定义线程副本数据 ● Main函数开始 ● stm_init_thread 线程初始化 ● ● ● ● stm_start 事务开始 事务操作 stm_commit 事务提交 stm_exit_thread 线程退出 ● pthread_join 结束多线程 ● ● Stm_exit 结束事务 函数结束 pthread_create 创建多线程 TinySTM初始化 stm_init 相关操作: 操作变量 操作 作用 Thread_tx 创建(pthread_key_create) 指向线程副本数据 Sigaction act 定义(局部变量) Stm_word_t locks[] 赋0值 Stm_word_t gclock 赋0值 Int tx_count 赋0值 Int tx_overflow 赋0值 Sigaction act : __sighandler_t Sa_handler : 信号处理函数,定义为signal_catcher Sigset_t sa_mask:信号集,注册SIGBUS(硬件错误)与SIGSEGV(无效内存引用)两个信号 tinySTM工作流程: ● Main函数开始 ● Stm_init定义线程副本数据 ● 线程初始化 ● stm_init_thread 线程初始化 ● ● ● ● stm_start 事务开始 事务操作 stm_commit 事务提交 stm_exit_thread 线程退出 ● pthread_join 结束多线程 ● ●

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档