(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf_第1页
(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf_第2页
(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf_第3页
(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf_第4页
(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

(计算机应用技术专业论文)东软dcse系统的进程管理和通信框架的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

善h at h e s i sf o rt h e d e g r e e o fm a s t e ri nc o m p u t e r a p p l i c a t i o nt e c h n o l o g y f j l i f y 1 8 4 4 0 ”训5 “” t h e d e s i g na n di m p l e m e n t a t i o no fp r o c e s s m a n a g e m e n t a n dc o m m u n i c a t i o ns k e t c hu s e d f o rn e u s o f td cs es y s t e m b y z uh a i f e n g s u p e r v i s o r :p r o f e s s o rz h a oh o n g ,e n g i n e e rx u x i a o f e i n o r t h e a s t e r nu n i v e r s i t y j u n e2 0 0 9 ,a 独创性声明 本人声明所呈交的学位论文是在导师的指导下完成的。论文中取得的 研究成果除加以标注和致谢的地方外,不包含其他人已经发表或撰写过的 研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示诚挚 的谢意。 学位论文版权使用授权书 本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。 作者和导师同意网上交流的时间为作者获得学位后: 半年一年口一年半口两年口 导师签名: 签字日期: 硝 研 名弋 签 w 粼 驴 文 目 彩 期 位 , 剿 日 ,一弓丙、(“。r 诬v 名 门 魏1 人 i 东北大学硕士学位论文摘要 东软d o s e 系统的进程管理和通信框架的设计与实现 摘要 短信增值业务系统d c s e ( d a t ac e n t e rf o rs h o r tm e s s a g es e r v i c ee x t e n d e d ) ,是为手 机用户提供基于短信的个性化增值业务系统。 与其它大型的电信级应用系统类似,d c s e 系统内部模块结构复杂,模块内部进程 数量庞大,因此,开发人员除了关心具体业务的逻辑细节外,还要关心系统内部模块和 进程间的组织、管理和通信方式。 为了使开发人员将精力更多的集中在客户的业务需求处理上,作者在硕士论文期 间,除了一直参与d c s e 系统的开发工作外,还特别研究了d c s e 系统背后的进程管理 和通信机制,重点从通用性出发,设计出适合开发类似于d c s e 系统的进程管理和通信 框架。 首先,给出进程池和框架模块化的思想,完成多进程管理框架m p m ( m u l t i p l e p r o c e s s e sm a n a g e m e n t ) 的设计与实现;并以m p m 框架为基础,结合d c s e 系统的应用 需求,分别设计并实现组织管理子系统模块的c o r es e r v e r 框架和组织管理并发多进 程的a c t i v es e r v e r 框架。 然后,结合d c s e 作为一种网络服务器的特点,设计实现并发服务器t c ps e r v e r 框架,作为系统与外部网元通信的框架;并给出消息内存块池和消息队列机制的设计与 实现,作为系统内部通信的框架。 最后,介绍本文的框架在d c s e 系统设计实现中的应用。目前d c s e 系统已经成功 在现网运行,满足了客户的业务和性能需求,得到客户和手机用户的一致好评。 关键词:多进程;并发服务器;网络通信;短信增值业务系统 、 - 、 东北大学硕士学位论文 a b s t r a c t t h ed e s i g na n di m p l e m e n t a t i o no f p r o c e s s m a n a g e m e n t a n dc o m m u n i c a t i o ns k e t c hu s e df o r n e u s o f td c s e s y s t e m a b s t r a c t d c s e ( d a t ec e n t e rf o rs h o r tm e s s a g es e r v i c ee x t e n d e d ) i sv a l u e - a d d e ds h o r t m e s s a g eb u s i n e s ss y s t e m ,w h i c hc a np r o v i d et h es u b s c r i b e rw i t hb a s e dp e r s o n a l i z e dd a t a s i m i l a rt oo t h e rl a r g e s c a l et e l e c o ma p p l i c a t i o ns y s t e m ,d c s ei n c l u d e sal a r g en u m b e r o fc o m p l e xm o d u l e sa n dw i d er a n g eo fp r o c e s s e si ne v e r yo n e s o ,d e v e l o p e r sn e e dt o c o n c e r na b o u tt h ed e t a i l so fs p e c i f i cb u s i n e s sl o g i c ,a l s ot l l e ym u s tc o n c e r na b o u to r g a n i z a t i o n , m a n a g e m e n ta n dc o m m u n i c a t i o n , a n dp r o c e s s e sw i t h i nt h es y s t e m m o d u l e s i no r d e rt of o c u sd e v e l o p e r se n e r g yo nt h ec l i e n t sb u s i n e s sn e e d s ,t h ea u t h o rc o n t r i b u t e s t ot h ed c s ed e v e l o p m e n tw o r k ,a n ds t u d i e st h ec o m m u n i c a t i o na n dm a n a g e m e n tm e c h a n i s m b e h i n dt h ed c s es y s t e m ,i np a r t i c u l a r , ad e v e l o p m e n tf r a m e w o r ko ft h ep r o c e s s c o m m u n i c a t i o na n dm a n a g e m e n tw h i c hf o c u so nc o m m o na p p l i c a t i o n si sa l s op r o p o s e d f i r s t ,t h em e m o r yp o o la n ds k e t c hm o d u l a rt h o u g h ta n dt h ed e s i g na n di m p l e m e n t a t i o n o fm p m ( m u l t i p l ep r o c e s s e sm a n a g e m e n t ) s k e t c hi sp r o p o s e d t h e n ,d c s e sb u s i n e s s n e e d sb a s e do nt h em p ms k e t c h ,a n dc o r es e r v e rs k e t c hw h i c hm a n a g es u b s y s t e m m o d u l e sa r eg i v e n ,w i t ha na c t i v es e r v e rf r a m e w o r kw h i c hc a nm a n a g ec o n c u r r e n t s e c o n d ,at c ps e r v e rs k e t c hb a s e dd c s e sn e t w o r ks e r v e rf e a t u r e si sd e s i g n e da n d i m p l e m e n t e da sac o n c u r r e n ts e r v e ra n do u t s i d ec o m m u n i c a t es k e t c h t h e n ,am e s s a g eb l o c k p o o l sd e s i g na n dam e s s a g eq u e u em e c h a n i s ma r eg i v e ni n s i d ec o m m u n i c a t es k e t c h f i n a l l y , t h ed e s i g no ff r a m e w o r k sa p p l i c a t i o ni nt h ed c s es y s t e mi s i n t r o d u c e d a t p r e s e n t ,d c s eh a sb e e ns u c c e s s f u lt e s t e do nt h ea c t u a ln e t w o r k ,a n di t c a nm e e tt h ec l i e n t s b u s i n e s sa n dp e r f o r m a n c er e q u i r e m e n t s i th a se a r n e dg r e a tp r a i s e sf r o mt h ec u s t o m e r sa n d m o b i l ep h o n eu s e r s k e y w o r d s :m u l t i p l ep r o c e s s e s ;c o n c u r r e n ts e r v e r ;n e t w o r kc o m m u n i c a t i o n ;d c s e - i i i _ j 广 东北大学硕士学位论文目录 目录 独创性声明i 摘要i i a b s t r a c t i i i 第1 章绪论1 1 1 课题背景l 1 2 课题来源2 1 3 课题研究意义和内容”3 1 - 3 1 课题研究意义”3 1 3 2 课题研究内容一3 1 4 论文结构j 4 第2 章技术基础与系统概述6 2 1 进程的相关概念6 2 2 进程间通信技术基础一7 2 2 1 进程间通信方式的划分”7 2 2 2i p c ( i n t e r p r o c e s sc o m m u n i c a t i o n s ) 对象的持续性7 2 2 3f o r k 、e x e c 和e x i t 对i p c 对象的影响7 2 3u n i x 进程间通信方法8 2 3 1 共享内存”8 2 3 2 套接字“9 2 4d c s e 系统概述1 0 2 4 1 业务种类1 0 2 4 2 处理流程1 1 2 4 3 软件部署l2 2 5 本章小节1 4 第3 章进程管理框架的设计与实现1 5 3 1 问题背景与框架需求分析1 5 3 2 解决方案分析1 6 3 3 多进程管理框架的设计与实现1 7 3 3 1 设计思路分析1 7 一i v 东北大学硕士学位论文目录 3 3 2 方案分析与实现2 0 3 3 3c o r es e r 、,e r 框架的设计与实现- 2 5 3 3 4a c t i v es e r v e r 框架的设计与实现”2 9 3 4 本章小结31 第4 章进程通信框架的设计与实现3 2 4 1 框架总体结构3 2 4 2 并发服务器的设计与实现3 3 4 2 1 系统需求分析与问题提出3 3 4 2 2 解决方案比较与分析3 4 4 2 3 设计思路分析3 5 4 2 4t c ps e r v e r 框架设计与实现3 8 4 3 消息队列机制的设计与实现4 1 4 - 3 1 问题背景分析4 2 4 3 。2 解决方案分析4 3 4 3 3 设计思路分析4 4 4 3 4 消息队列实现4 7 4 4 本章小结5 2 第5 章d c s e 系统中进程管理和通信框架的应用5 3 5 1d c s e 系统总体结构5 3 5 2 设计方案分析5 4 5 2 1 外部网元前置机“5 4 5 2 2 前置机与流量5 5 5 2 3 分子系统设计5 5 5 2 4 业务子系统并发处理5 6 5 3 解决方案分析5 6 5 3 1 外部网元通信子系统的设计与实现5 6 5 3 2 业务处理子系统的设计与实现6 0 5 3 3 服务器子系统的设计与实现6 2 5 4 系统测试6 4 5 5 本章小结6 5 第6 章结束语6 7 6 1 工作总结6 7 6 2 未来研究方向6 8 一v 一 东北大学硕士学位论文 目录 参考文献6 9 致谢7 2 一v i 东北大学硕士学位论文第1 章绪论 第1 章绪论 1 1 课题背景 s o l a r i s 是s u n 公司开发的u n i x 系统版本。它基于s v r 4 ( u n i xs y s t e mvr e l e a s e , u n i x 系统v 第4 版) ,并在1 0 余年间由s u n 公司的工程师对其进行了不断的增强。 它是唯一在商业上取得成功的s v r 4 后裔,并被正式验证为u n i x 系统。 s o l a r i s 一直作为企业级的操作系统而存在,随着s o l a r i s1 0 t l 】的发布,系统性能更加 优越,主要体现在以下3 个方面: ( 1 ) 更好的系统稳定性:通过联机错误检测和自动恢复来提供预测及自我修复应急 方案。s o l a r i s 通过s o l a r i sf a u l tm a n a g e r 提前删除故障组件,从而使c p u 、存储器和i o 问题可以在几秒内得到诊断和纠正。 ( 2 ) 更好的系统安全保证:s o l a r i s1 0 提供了一种简便易用并且与现有应用程序和管 理做法完全兼备的突破性系统安全方案。s o l a r i s1 0 通过控制对关键设施的访问,从更尖 端的验证和智能卡接口开始登陆以验证用户身份,并能扩展到进程权限管理,从而淘汰 了传统u n i x “孤注一掷”的根机制,代之以一套细化的权限。s o l a r i s1 0 平台的全新加 密基础架构提供了一个编程接口集,可确保数据流的安全性。另外,进程权限管理能够 限制进程对系统资源的未授权访问,降低入侵攻击的风险。为进一步保护数据中心的每 一个系统,s o l a r i s1 0 还包含集成的口过滤功能。s o l a r i s1 0 容器通过将应用程序和数据 与错误传播或入侵隔离,为系统提供了更好的安全措施,每个容器都是一个隔离的虚拟 环境【2 】,在一个容器中运行的进程不能访问该容器之外的进程或资源。 ( 3 ) 更优秀的系统综合性能:s o l a r i s1 0 性能提升的一个关键要素是针对最新处理器 技术的优化。对新型u l t r a s p a r ci v 3 l 处理器的支持能使从u l t r a s p a r ci i i 处理器升级 的系统达到其以前两倍的性能,而专门针对a m do p t e r o n 和i n t e lx e o n 处理器进行的新 优化能够在科学工作负载下提供高达x 8 6 系统两倍的总体性能;重新设计的t c p i p 堆 栈提供3 0 - - 一5 0 的网络吞吐率性能改进,并且c p u 负载降低了1 0 一- - 1 5 。总体上, 用户可以在w e b 服务器上体验到最高1 0 的性能改进,在应用服务器上体验高达5 0 的性能改进。 正是s o l a r i s1 0 尤为出众的安全性和稳定性,才使得s o l a r i s1 0 系统成为企业级用户 的首选操作系统,尤其是对稳定性和安全性有较高要求的单位和企业,例如大型银行、 电信、军工部门等。同时s o l a r i s1 0 系统提供了优秀的编程接口和开发环境【4 】,为程序 一1 一 东北大学硕士学位论文 第1 章绪论 员和终端用户提供了一个易掌握、易操作、简洁方便的工作平台,所以s o l a r i s1 0 系统 逐渐发展为一种非常成功的商用操作系统。近年来,针对企业各自业务的需求和特点, 不少企业基于s o l a r i s1 0 系统提供的应用编程接口开发出适合各自业务开发特点的开发 框架,简化了开发平台的复杂性,提高了应用程序的开发效率,缩短了产品的开发周期, 为企业创造了大量的利润。 1 2 课题来源 该课题来源于东软集团移动互联网事业部的短信增值业务系统d c s e ( d a t ac e n t e r f o rs h o r tm e s s a g es e r v i c ee x t e n d e d ) 项目。 2 0 0 7 年3 月,中国移动研究院与各主要短信中心设备厂商联合制定了短信增值业务 技术规范。规范要求支持短信主叫回执【5 】、被叫回执、短信转移、短信过滤、短信签名 档和短信仓库这6 种短信增值业纠6 1 ,并组织厂家各自选择试点进行试运行,东软负责 建设的d c s e 系统选择在北京移动作为试点进行试运行,并要求支持各短信中心厂家的 接口,同时还需要支持与省外d c s e 系统的互连。 如图1 1 所示,d c s e 系统主要分为代理通信层、业务处理层和数据存储层。代理 通信层主要负责为d c s e 系统提供外部通信代理,使d c s e 的外部通信接口更加统一, 这一层由两台同时运行的主机组成,各部署一套通信代理子系统,以热备方式运行,其 中,与通信代理子系统通信的外部网元有s m s c ( s h o r tm e s s a g es e r v i c ec e n t e r ,短信中 心【7 】) 、i s m g ( i n t e m e ts h o nm e s s a g eg a t e w a y ,短信网关) 、b o s s ( b u s i n e s so p e r a t i o n s u p p o r t i n gs y s t e m ,业务运营支撑系统【8 】) 、s p ( s e r v i c ep r o v i d e r ,服务提供商) 和外省 d c s e 系统。 业务处理层主要负责提供最核心的业务处理功能,首先判断用户已订购业务之间的 优先级关系,然后依次对各个业务进行查询与处理,在进行业务处理时,按照事前和事 后两种逻辑进行处理,这一层至少需要两台主机,每台主机上部署一套核心业务处理子 系统,各子系统都以并发方式运行,为本省d c s e 业务提供服务,并处理外省d c s e 业 务用户查询请求。 数据存储层主要负责对d c s e 数据进行存储,主要数据包括系统配置数据、用户业 务数据和网管统计数据。这一层需要两台服务器主机,使用o r a c l er a c ( o r a c l e r e a la p p l i c a t i o nc l u s t e r s ,o r a c l e 真正应用集群1 9 】) ,以并发方式提供数据库服务。 一2 一 东北大学硕士学位论文 第1 章绪论 短 图1 1d c s e 系统组网结构图 f i g1 1t h en e t w o r ks t r u c t u r eo fd c s es y s t e m 1 3 课题研究意义和内容 1 3 1 课题研究意义 由于d c s e 系统结构复杂,内部包含不同的子系统,各子系统内又包含大量的功能 模块和接口模块,各模块之间由于业务优先级和事前事后业务而导致逻辑关系复杂,需 要大量的进程相互精确有效的协作才能完成业务的正确处理和数据的高效传输。所以在 该系统中,数据的传输和进程间的交互通信无处不在,包括系统进程间、各子系统间、 各子模块间以及与外部网元间等。因此,面对这样的大型复杂系统,如何有效的组织和 管理大量进程以及它们之间的交互通信就显得非常重要。 目前,基于s o l a r i s1 0 的短信业务系统的开发应用非常广泛,例如“短信网关的设 计与实现”、“短信数据中心的设计与实现等等,这些论文普遍关注的是具体业务的流 程实现,偏向于解决复杂逻辑业务系统的设计与实现,而本文主要结合d c s e 系统项目 背景,剥离项目中的具体业务信息,抽象d c s e 系统背后的模块组织和管理机制,重点 从通用性的角度考虑,设计出适合开发类似于d c s e 系统的进程管理和通信框架。 1 3 2 课题研究内容 本课题基于s o l a r i s1 0 系统,通过c 语言编程来实现进程管理和通信框架,主要包 一3 一 东北大学硕士学位论文第1 章绪论 括多进程管理框架m p m ( m u l t i p l ep r o c e s s e sm a n a g e m e n t ) 和消息队列机制。 其中,在作为底层支持的m p m 框架的基础上,结合d c s e 系统实际开发中模块的 功能角色差异,对m p m 框架进行二次封装,分别形成针对子系统模块管理的c o r e s e r v e r 框架和针对并发多进程管理的a c t i v es e r v e r 框架;同时,结合m p m 的进 程池优势和网络通信原理,设计并实现并发服务器t c ps e r v e r 框架,作为d c s e 系 统的网络服务器框架。 然后,根据d c s e 系统内部模块和进程之间需要频繁的数据交互和内存操作,为了 简化模块间数据的传输和模块内部内存的分配和管理的复杂度,设计出内存统一管理的 机制,即消息内存块池,对系统内所有内存的分配、释放集中管理。 最后,在消息内存块池的基础上,以消息块结构为基本单位,设计消息队列,作为 d c s e 系统内部模块之间的数据通信方式,从而将模块之间的消息传递由原来的通过函 数传参的方式简化为模块对消息队列的读写,降低了复杂性,同时提出了消息队列的调 度机制,为消息的收发提供了统一的标准。 在设计该框架的过程中,要区分实际应用系统的业务信息和通信管理机制,解析出 系统的设计构思以及模块的部署和协作方式,从而体现出进程管理和通信框架设计的实 用性和通用性。 而在框架的具体实现中,剥离与实际应用系统相关的业务数据,更加关注通信和管 理方式的选择而不是业务数据的具体形式,这样在应用该框架进行实际系统开发时,由 开发人员根据实际系统自行封装业务数据并加载到框架,从而实现了通信和管理方式与 业务数据的分离,提高了框架的通用性。 1 4 论文结构 本文共分为六章,具体内容以如下方式组织: 第一章:绪论部分,介绍课题背景,课题来源,阐述课题研究的意义和内容。 第二章:技术基础与系统概述,介绍相关技术基础及d c s e 系统的业务流程和软件 部署。 第三章:进程管理框架的设计与实现,结合d c s e 系统的模块设计,详细分析设计 思路和解决方案。 第四章:进程通信框架的设计与实现,结合d c s e 系统的通信特点,详细分析设计 思路和解决方案。 第五章:d c s e 系统中进程管理和通信框架的应用,介绍框架是如何在d c s e 系统 的设计中应用的。 4 - 东北大学硕士学位论文 第1 章绪论 第六章:结束语,总结论文期间完成的主要工作,并对未来研究方向进行了展望。 一5 一 东北大学硕士学位论文第2 章技术基础与系统概述 第2 章技术基础与系统概述 进程间通信( i p c ,i n t e r p r o c e s sc o m m u n i c a t i o n s ) 1 0 】,传统上该术语描述的是运行 在操作系统之上的不同进程间消息传递的不同方式。本章主要介绍本文框架实现所需的 相关技术基础,以及基于该框架的d c s e 系统的业务流程和体系结构。 2 1 进程的相关概念 进程是s o l a r i s1 0 系统中的一个重要概念,简而言之,进程就是程序的执行实例, s o l a r i s1 0 系统确保每个进程都有一个唯一的数字标识符,称为进程i d ( p r o c e s s1 1 9 ) 。 一般来说,每个进程都有专用的系统堆栈空间和独立的存储空间【1 1 1 ,在内核中都有该进 程的进程控制块( p c b ,p r o c e s sc o n t r o lb l o c k ) 数据,描述进程所占有的资源,包括: 内存区域、文件描述符、信号处理和进程状态等,这样进程才能接受内核的调度。 在s o l a r i s1 0 系统中,基于进程的操作主要有进程的创建、执行和消亡。 一个现有进程通过调用f o r k 函数创建一个新的进程,由f o r k 创建的新进程被称为 子进程( c h i l dp r o c e s s ) ;f o r k 函数调用一次,但返回两次,两次返回的唯一区别是子进 程的返回值是0 ,而父进程的返回值是子进程的进程i d 。f o r k 函数调用之后,父子进程 继续执行f i o r k 调用之后的指令,子进程是父进程的副本,并获得父进程的数据空间、堆 和栈的副本。 由于在f - 0 r k 之后经常跟随着e x e c 执行一个新的程序,所以现在的很多实现并不执 行一个父进程数据段、栈和堆的完全复制。作为替代,使用了写时复制f 1 2 】 ( c o p y - o n w r i t e ,c o w ) 技术。这些区域由父子进程共享,而且内核将它们的访问权 限改为只读。如果父子进程中的任一个试图修改这些区域,则内核只为修改区域的那块 内存制作一个副本,通常是虚拟存储器系统中的一“页”。 一般情况下,父进程f o r k 创建一个子进程去执行一个新的程序,该子进程调用一种 e x e c 函数以执行另一个程序。当进程调用e x e c 函数时,该进程执行的程序完全被替换 为新程序,并且新程序从其m a i n 函数开始执行。因为调用e x e c 并不创建新进程,所以 前后的进程i d 并未改变,e x e c 只是用一个全新的程序替换了当前进程的正文、数据、 堆和栈段。 当一个进程终止时,内核逐个检查所有活动进程,以判断是否是正要终止进程的子 进程,如果是,则将该进程的父进程i d 更改为1 ( i n i t 进程的i d ) ,这种处理方法保证 一6 一 东北大学硕士学位论文 第2 章技术基础与系统概述 了每个进程都有一个父进程。由于内核为每个终止子进程都保存了一定量的信息,所以 当终止进程的父进程调用w a i t 或w a i t p i d 时,就可以得到这些信息,其中,这些信息至 少包括:进程i d 、该进程的终止状态、以及该进程使用的c p u 时间总量。内核可以释 放该进程所使用的所有存储区,关闭其所有打开文件。在u n i x 术语中,一个已经终止、 但其父进程尚未对其进行善后处理( 获取终止子进程的有关信息,释放它所占有发资源) 的进程被称为僵死进程( z o m b i e ) 。 。 2 2 进程间通信技术基础 本小节主要介绍进程通信方式划分的依据,各种进程间通信对象在进程生存周期不 同阶段的状态。 2 2 1 进程间通信方式的划分 计算机系统内部并发执行的进程通过进程间通信来协调一致的完成指定的任务。根 据通信进程的物理位置来分,系统中的通信进程主要包括两种方式:即单一节点上不同 进程间的通信和位于不同节点上的进程间通信。对于一个节点上不同进程之间的通信, s o l a r i s l o 系统提供了信号( s i g n a l ) 、管道( p i p e ) 、有名管道f i f o ( f i r s ti nf i r s to u t ) 、 消息队列( m e s s a g eq u e u e ) 、共享内存( s h a r e dm e m o r y ) 等通信机制;对于不同节点 上的进程间通信,主要采用套接字( s o c k e t ) 通信方式。 2 2 2i p c ( i n t e r p r o c e s sc o m m u n i c a t i o n s ) 对象的持续性 我们可以把任意类型i p c 的持续性定义成该类型的一个对象保持存在的时间, s o l a r i s1 0 系统下i p c 对象主要有以下三种类型的持续性: ( 1 ) 随进程持续的( p r o c e s s - p e r s i s t e n t ) i p c :一直存在到打开着该对象的最后一个进 程关闭该对象为止。例如:管道和f i f o 。 ( 2 ) 随内核持续的( k e r n e l p e r s i s t e n t ) i p c :一直存在到内核重新自举或显式删除该 对象为止。例如:s y s t e mv 消息队列、信号灯和共享内存区;p o s i x 消息队列、信号灯 和共享内存区必须至少是随内核持续的,但也可以是随文件系统持续的,具体取决于实 现。 ( 3 ) 随文件系统持续的( f i l e s y s t e m p e r s i s t e n t ) i p c :一直存在到显式删除该对象为 止,即使内核重新自举了,该对象还是保持其值。例如:p o s i x 消息队列、信号灯和共 享内存区如果是使用映射文件实现的,那么它们就是随文件系统持续的。 2 2 3f o r k 、e x e c 和e x i t 对i p c 对象的影响 一7 一 东北大学硕士学位论文 第2 章技术基础与系统概述 每一个i p c 对象都有不同的实现来支持其各自的应用场景,正确选择这些对象需 要我们了解进程创建、执行和结束对这些对象的影响。表2 1 所示,当调用f o r k 、e x e c 和e x i t 这些最常用的进程控制方式时对i p c 对象的影响。 表2 1f o r k 、e x c c 和e x i t 对 p c 对象的影响 t a b l e2 1t h e i m p a c to fi p co b j e c t sa f t e rc a l l e df 0 r k ,e x e co re x i t i p c 类型 f o r ke x e ce x i t 管道和f i f o 子进程取得父进 所有打开着的描述字继续打关闭所有打开的描述字后 程打开的描述字开着,除非已设置描述字的删除管道或f i f o 中残留的 拷贝 f dc l o e x e c 位 所有数据 p o s i x 互斥锁,条件变若驻留在共享内除非在继续打开着的共享内除非在继续打开着的共享 量,读写锁,基于内存区中且具有进存区中而且具有进程间共享受内存区中而且具有进程 存的信号灯程间共享属性,则属性,否则消失间共享属性,否则消失 共享 p o s i x 有名信号灯父进程中打开的关闭所有打开着的有名信号关闭所有打开着的有名信 有名信号灯在子 灯 号灯 进程中继续打开 内存映射和p o s i x 共父进程的内存映去除内存映射去除内存映射 享内区射存留到子进程 2 3u n i x 进程间通信方法 本小节介绍目前u n i x 系统中具有代表性的共享内存和套接字通信方式,并介绍它 们各自的特点和具体操作方法。 2 3 1 共享内存 共享内存是最快的可用i p c 形式。一旦这样的内存区映射到共享它的进程的地址空 间,这些进程间数据的传递就不再涉及内核。共享内存可以通过系统调用m m a p 映射普 通文件( 特殊情况下还可以采用匿名映射机制实现) ,也可以通过s y s t e mv 的共享内存 机制来实现【1 3 】。进程间通信的共享内存方法虽然应用接口和原理很简单,但是内部机制 却很复杂。为了实现安全通信,往往需要合适的同步机制来配合。所以我们在这里就共 享内存的创建操作先做一个简单的介绍。 m m a p 系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被 映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用 r e a d ,w r i t e 等操作。m m a p o 系统调用形式如下: v o i d 半m m a p ( v o i d 木a d d r ,s i z e tl e n ,i n tp r o t ,i n tf l a g s ,i n tf d ,o f f to f f s e t ) ; 参数f d 为即将映射到进程空问的文件描述字,一般由o p e n 函数返回,同时,f d 可 一8 一 东北大学硕士学位论文第2 章技术基础与系统概述 以指定为一l ,此时须指定f l a g s 参数中的m a pa n o n ,表明进行的是匿名映射( 不涉及 具体的文件名,避免了文件的创建及打开,很显然只能用于具有亲缘关系的进程间通 信) ;l e n 是映射到调用进程地址空间的字节数,它从被映射文件开头o f f s e t 个字节开始 算起;p r o t 参数指定共享内存的访问权限,可取如下几个值的逻辑或:p r o tr e a d ( 可 读) 、p r o tw r i t e ( 可写) 、p r o te x e c ( 可执行) 、p r o tn o n e ( 不可访问) ;f l a g s 参数影响映射存储区的多种属性,由以下几个常值指定:m a ps h a r e d 、 。 m a pp r i v a t e 、m a pf i x e d ,其中,m a ps h a r e d 、m a pp r i v a t e 必选其一,而 m a p f i x e d 则不推荐使用;o f f s e t 参数一般设为0 ,表示从文件头开始映射;参数a d d r 指定文件应被映射到进程空间的起始地址,一般被指定一个空指针,此时选择起始地址 的任务留给内核来完成。函数的返回值为最后文件映射到进程空间的地址,进程可直接 操作起始地址为该值的有效地址。 通过m m a p 系统调用,我们可以有以下三种创建共享内存的方法: ( 1 ) 使用普通文件提供的内存映射:适用于无亲缘进程之间通信;此时,需要打开 或创建一个文件,然后再调用m m a p 函数映射已打开的文件。 ( 2 ) 使用s y s t e mv 共享内存区对象:适用于无亲缘进程之间通信;s y s t e mv 共享内 存通过系统调用s h m g e t 获得或创建一个i p c 共享内存区域,返回相应的标识符,然后 被m m a p 函数映射到当前进程的地址空间。 ( 3 ) 使用特殊文件提供匿名内存映射:适用于具有亲缘关系的进程之间通信;尤其 是父子进程之间,在父进程中先调用m m a p ,然后调用f o r k ,子进程继承父进程匿名映 射后的地址空间,同样也继承m m a p 0 返回的地址,这样,父子进程就可以通过映射区 域进行通信了。注意,这里不是一般的继承关系。一般来说,子进程单独维护从父进程 继承下来的一些变量,但m m a p 0 返回的地址却由父子进程共同维护。 因此,对于具有亲缘关系的进程实现共享内存最好的方式应该是采用匿名内存映射 的方式。此时,不必指定具体的文件,只要设置相应的标志即可。 2 3 2 套接字 一个套接字可以看作是进程间通信的端点( e n d p o i n t ) ,每个套接字的名字是唯一的, 其它进程可以发现,连接并与之通信。通信域用来说明套接字通信的协议,不同的通信 域有不同的通信协议以及套接字的地址结构,因此,创建一个套接字时,要指明它的通 信域。比较常见的是u n i x 域套接字( 采用套接字机制实现单机内的进程间通信) 和网 际套接字【1 4 1 。s o l a r i s1 0 目前的网络内核套接字主要基于伯克利的b s d 的u n i x 实现, 整个结构采用面向对象的分层机制,层与层之间有严格的接口定义。同样,目前的s o l a r i s 一0 一 东北大学硕士学位论文第2 章技术基础与系统概述 1 0 网络a p i 也是基于b s d 套接字的。下面分别介绍网际套接字和u n i x 域套接字。 网际套接字是工作在传输层,提供面向连接的和无连接的通信服务。每一个网际套 接字都以一个三元组结构【i s 协议、本地地址、本地端口) 进行描述,本地操作系统为每 一个套接字分配一个唯一的套接字描述符。在进程通信之前,通信双方各自申请一个套 接字,并初始化各自的三元组结构;然后双方开始建立连接一个完整的网络进程间通信 连接,由一个五元组结构 协议、本地地址、本地端口、远程地址、远程端口) 描述。 u n i x 域套接字是套接字和管道之间的混合物,主要用于同一台机器上运行的进程 之间的通信。虽然网际套接字可用于同一目的,但u n i x 域套接字的效率更高。u n i x 域套接字仅仅复制数据,它们并不执行协议处理,不需要添加或删除网络报头,无需计 算检验和,不要产生顺序号,无需发送确认报文。 u n i x 域套接字提供流和数据报两种接口,并且u n i x 域数据报服务是可靠的,既 不会丢失消息,也不会传递出错。为了创建一对非命名的、相互连接的u n i x 域套接字, 用户可以使用它们面向网络的域套接字接口,不过,我们一般使用s o c k e t p a i r 函数: i n ts o c k e t p a i r ( i n td o m a i n ,i n tt y p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论