- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.1有名信号量实现读写互斥-中科大移动云计算系统实验室.doc
基于内存的Nosql分布式数据库技术研究项目
共享内存读写进程互斥读写同一条记录分析报告
Version:1.0.2
2013-1-30
By
中科大移动云计算系统实验室
DOCUMENT HISTORY
Ed.VersionAuthorChange11.0.0牛立国Initial21.0.1牛立国Revision31.0.2牛立国Revision
TOC \o 1-3 \h \z \u HYPERLINK \l _Toc10407 一、 测试平台 PAGEREF _Toc10407 3
HYPERLINK \l _Toc28381 二、 测试目的 PAGEREF _Toc28381 3
HYPERLINK \l _Toc14429 三、 测试方案与测试结果分析 PAGEREF _Toc14429 3
HYPERLINK \l _Toc28708 3.1 有名信号量实现读写互斥 PAGEREF _Toc28708 3
HYPERLINK \l _Toc4582 3.1.1 核心代码 PAGEREF _Toc4582 3
HYPERLINK \l _Toc32656 3.1.2 测试方法 PAGEREF _Toc32656 4
HYPERLINK \l _Toc29492 3.1.3 测试数据 PAGEREF _Toc29492 4
HYPERLINK \l _Toc523 3.1.4 数据分析 PAGEREF _Toc523 5
HYPERLINK \l _Toc31021 3.2 时间片对测试的影响 PAGEREF _Toc31021 6
HYPERLINK \l _Toc17928 3.2.1核心代码 PAGEREF _Toc17928 6
HYPERLINK \l _Toc12584 3.2.2测试方法 PAGEREF _Toc12584 6
HYPERLINK \l _Toc352 3.2.3 测试数据 PAGEREF _Toc352 6
HYPERLINK \l _Toc2010 3.2.4 数据分析 PAGEREF _Toc2010 8
HYPERLINK \l _Toc19257 3.3共享内存文件实现读写互斥 PAGEREF _Toc19257 8
HYPERLINK \l _Toc2087 3.3.2 测试方法 PAGEREF _Toc2087 8
HYPERLINK \l _Toc23017 3.3.3 测试数据 PAGEREF _Toc23017 9
HYPERLINK \l _Toc12781 3.3.4 数据分析 PAGEREF _Toc12781 9
HYPERLINK \l _Toc19767 四、 附录 PAGEREF _Toc19767 9
测试平台
系统测试运行在X86平台上,具体配置如下:
Linux单机,CPU是一块2核X86芯片,每个核有两个超线程。Fedora13,x86_64, GCC 4.45。6G内存。
测试目的
通过有名信号量控制读写进程对同一条记录的互斥操作,并分析测试数据结果;用文件锁的方式来实现读写进程的同步与互斥。
测试方案与测试结果分析
3.1 有名信号量实现读写互斥
3.1.1 核心代码
读进程:
/* db initialize */
Char *name = “abc”; //设置有名信号量
Getnamed( name , semlockp , 1); //获取有名信号量
/*****entry section********/
sem_wait(semlockp);
/*********critical section**************/
rc=GetRecords(id,key,record,1); //读操作
/**********remainder section*************/
sem_post(semlockp);
写进程:
/* db initialize */
Char *name = “abc”; //设置有名信号量
Getnamed( name , semlockp , 1); //获取有名信号量
/**********entry section*************/
sem_wait(s
文档评论(0)