(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机应用技术专业论文)基于symbian操作系统的短信防火墙的设计与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 短信防火墙的基本功能是对新到短信进行过滤,根据用户设置作出相应的处理, 以避免垃圾短信的骚扰。本文从用户需求角度出发,提出短信防火墙在基础性的短信 过滤功能之外,还应提供以下功能: 1 、提供短信加密功能以解决短信的安全传送问题。 2 、提供信箱隐藏功能保护用户隐私。 3 、集短信过滤和短信管理于一体,方便用户使用,用户不必再切换到系统的短 信管理软件。 4 、自动回复、自动转发、短信搜索、短信聊天、短信备份和恢复等。 本文作者在深入了解s y m b i a n 操作系统的功能特点、熟练掌握s y m b i a n 操作系统 应用开发关键技术的基础上,针对目前短信防火墙软件和短信管理软件结合不足的问 题,设计并编码实现了一个功能比较完善的s y m b i a n 操作系统智能手机短信防火墙系 统。具体工作如下: 1 、根据短信防火墙系统的功能目标,结合s y m b i a n 操作系统的特点,对系统架 构和模块划分进行了设计。短信监听程序作为一个轻量级的后台e x e 一直运行在后 台,有新短信到达时负责接收并启动主程序,主程序负责短信过滤、短信管理、短信 发送。 2 、设计并实现用户界面。主程序采用a v k o n 视图切换应用程序架构,分为6 个 视图:短信管理视图、短信查看视图、短信编辑视图、短信聊天视图、系统设置视图、 防火墙设置视图,这6 个视图分别对应6 个主要的用户界面。 3 、设计数据库表,定义数据结构。数据库表是永久存储的数据文件,数据结构 是数据的内存表示,程序将完成两者之间的同步。 4 、对每一个模块描述了详细设计和编码实现过程。 5 、设计并运行测试方案,结果表明本系统完成了设计目标。 本文工作对手机的短信管理软件设计有一定的参考价值,对s y m b i a n 平台上的应 用程序开发也有一定的指导意义。 关键词:s y m b i a n 操作系统;短信防火墙;消息类型模块 a b s t r a c t a b s t r a c t t h eb a s i cf u n c t i o no fs m sf i r e w a l li st of i l t e ra n dp r o c e s st h ei n c o m i n gs m s m e s s a g e sa c c o r d i n gt ot h eu s e r s c o n f i g u r a t i o n ,s ot h a tt h ej u n ka n du n w a n t e dm e s s a g e s c a nb es t o p p e d t om e e tm o r ed e m a n d sf r o mu s e r s ,t h es m sm e s s a g ef i r e w a l ls h o u l da l s o p r o v i d e st h ef o l l o w i n gf e a t u r e sb e y o n dt h eb a s i cm e s s a g ef i l t e r i n gf u n c t i o n : 1 s m sm e s s a g ee n c r y p t i o nw h i c ha d d r e s st h ei s s u eo fm e s s a g et r a n s m i s s i o ns e c u r i t y 2 h i d i n gs p e c i a lm e s s a g eb o xt op r o v i d ep r o t e c t i o no fu s e r sp r i v a c y 3 i n t e g r a t i n gt h es m sm e s s a g ef i l t e r i n ga n dm a n a g e m e n tf u n c t i o ni n t oo n es o f t w a r e 4 a u t or e p l y , a u t of o r w a r d i n g ,s m sm e s s a g es e a r c h i n g ,s m sm e s s a g ec h a t t i n g ,s m s m e s s a g ed a t a b a s eb a c k u pa n dr e c o v e r y , a n ds oo n a f t e rh a v i n gad e e pu n d e r s t a n d i n go ft h ef u n d a m e n t a lo fs y m b i a no sa n db e i n g f a m i l i a rw i t ht h ek e yt e c h n o l o g i e so fs y m b i a no sa p p l i c a t i o n sd e v e l o p m e n t t h ea u t h o r d e s i g n e da n di m p l e m e n t e das m sm e s s a g ef i r e w a l la p p l i c a t i o no ns y m b i a no sw i t hr i c h f e a t u r e s t h ea u t h o r sw o r ki n c l u d e st h ef o l l o w i n g : 1 m a k eas y s t e ma r c h i t e c t u r ed e s i g na n dm o d u l ed e s i g n , a c c o r d i n gt ot h ed e s i g n t a r g e t so fs m sf i r e w a l la n dt h ef e a t u r e so fs y m b a i no s s m sm o n i t o r i n gp r o g r a ma sa l i g h t w e i g h te x e h a sb e e na l w a y sn m n i n gi nt h eb a c k g r o u n d ,i ts t a r t st h em a i np r o g r a m w i t hag u lw h e nan e wm e s s a g ei sc o m i n g t h em a i np r o g r a mi sr e s p o n s i b l ef o rf i l t e r i n g , m a n a g i n g ,s e n d i n ga n dr e c e i v i n gm e s s g e s 2 d e s i g na n di m p l e m e n tt h eu s e ri n t e r f a c eo ft h es y s t e m t h em a i np r o g r a mu s e st h e a v k o nv i e ws w i t c h i n ga r c h i t e c t u r e i ti n c l u d e s6v i e w s ,e a c hv i e wc o r r e s p o n d st oau s e r i n t e r f a c e 3 d e s i g nd a t a b a s et a b l e sa n dd e f m ed a t as t r u c t u r e so fs y s t e m d a t a b a s et a b l e sa r e u s e dt os t o r et h ep e r m a n e n td a t al i k em e s s a g ec o n t e n ta n ds y s t e mc o n f i g u r a t i o n d a t a s t r u c t u r e sr e p r e s e n tt h ed a t ai nt h em e m o r y t h e ya r es y n c h r o n i z e di nt h ep r o g r a m 4 h a v ed o n ed e t a i l e dd e s i g na n dc o d i n gr e a l i z a t i o nt oe a c hm o d u l e 5 d e s i g na n dr u nt e s tc a s e s ,t h er e s u l ts h o w st h a tt h ed e s i g nt a r g e t sa r ec o m p l e t e d t o t a l l yi nt h i ss y s t e m t h i st h e s i si sv a l u a b l et ot h ed e s i g no fs m sm a n a g e m e n ts o f t w a r e ,a n dp r o v i d e ss o m e u s e f u li n s t r u c t i o na n dr e f e r e n c et ot h ea p p l i c a t i o nd e v e l o p m e n tw i t hs y m b i a no s k e yw o r d s :s y m b i a no s ;s m sf i r e w a l l ;m e s s a g et y p em o d u l e i i 学位论文版权使用授权书 本人完全了解北京信息科技大学关于收集、保存、使用学位论文的 规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子 版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供本 学位论文全文或者部分的阅览服务;学校有权按有关规定向中国科学技 术信息研究所等国家有关部门或者机构送交论文的复印件和电子版;在 不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用 于学术活动。 学位论文储签绣庶卫 帅阴j 铺 经指导教师同意,本学位论文属于保密,在年解密后适用本授 权书。( 注:论文属公开论文的,作者及导师本处不签字) 指导教师签名:学位论文作者签名: 年月 日年月日 硕士学位论文原创性声明 本人郑重声明:所呈交的论文题目为基于s y m b i a n 操作系统的短 信防火墙的设计与实现学位论文,是本人在导师指导下,进行研究工 作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论 文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的 作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体, 均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人 承担。 作者签字:褫壬 叫9 彳年j 其j 亏日 第一章引言 1 1 课题背景 第一章引言 2 0 0 0 年5 月1 7 日,中国移动通信有责任公司正式开通了短信服务,发出了中国 的第一条短信【l 】。时至今日,短信已经成为人们生活中不可或缺的一部分。不仅体现 在日常的人际沟通中,而且深入到个人生活的各个层面,成为人们获取资讯和休闲娱 乐的重要方式之一。当一种媒介形式的发展达到和人的日常生活伴生状态的时候,其 所传播的内容也就完全社会化了,庞杂化了。社会万象无所不有,天南海北无所不包, 短信的使用也引起一些问题。 一方面,垃圾短信猖獗。目前,欺诈、反动、广告、色情、骚扰等垃圾短信几乎 对每一个手机用户都造成了困扰或伤害,已经成为一个越来越严重的社会问题。不法 之徒往往借助群发器以每天成千上万条的发送量进行大规模短信覆盖,让人防不胜 防。但是,从保护用户隐私权等个人权利的层面考虑,运营商又难以对非法短信进行 内容审查和过滤。另一方面,由于不法分子发送短信所用的手机号码基本上都没有进 行身份登记,公安部门要追查线索造成了很大的难度。公安部为了治理欺诈色情等违 法短信开通了1 1 0 举报系统,但由于举报时间的延迟,等到相关部门做出反应时,垃 圾短信发送者早已将相应的号码内的钱用尽,并更换了新的号码,从而收效甚微。部 分运营商也有采用过滤敏感字的方法来治理垃圾短信,但存在垃圾短信认定困难,治 理范围小,漏报率高,服务器负荷增大等问题【2 】。 另一方面,短信在传输过程中存在很大的安全隐患。移动用户对短消息中心的接 入包括两段【3 j :第一,移动用户和基站之间的无线链路;第二,基站到m s c ( m o b i l e s w i t c h i n gc e n t e r ) 再到g m s c ( g a t e w a ym s c ) 的有线网络,这一段的传输利用控制信道 来进行传输,其利用的协议是s s 7 中的m a p 。短消息数据包在空中链路( 从m s 到 b s s ) 的传输可以利用a 5 来进行加密,不过目前的g s m ( g l o b a ls y s t e mf o rm o b i l e c o m m u n i c a t i o n s ) 网络并没有启用a 5 对语音、数据和信令进行加密,所以在空中链路 中传送的短消息数据包是以明文的形式来传输,这里就存在安全危险,因为对空中传 送的信号进行侦听只需要简单的设备就可以达到。在这种情况下,如果利用短消息来 传输一些商业机密或者与支付有关的信息就存在着安全隐患,攻击者可以将信息截取 下来,同时伪造假的消息前传给合法用户。这一部分没有采取任何安全措施,因此不 能保证数据的保密性。 针对以上两个比较突出的问题,可以采用短信防火墙技术,并加入端到端加密传 第章引言 输来解决。短信防火墙的作用是:当接收到新短信的时候,软件自动打开过滤功能, 对该信息的来源和内容进行判断,如果来自手机主人不希望接收的号码,或者其中包 含了手机主人预先设定的过滤内容,则自动删除该短信或移至短信回收站,并阻止铃 声和新短信到达提示对话框的弹出。短信加密的作用是保证端到端的整个传输过程中 短信内容的保密性。 1 2 发展现状 目前智能手机市场正处于一个高速发展的时期,从手机技术的发展方向来看,未 来的3 g 技术也决定了智能手机将会逐渐取代目前的传统手机而一统手机天下l 引。在 智能手机操作系统的大家族中,形成了s y m b i a n 、w i n d o w sm o b i l e 、l i n u x 三足鼎立 的格局。g a r t n e r 的数据显示1 5 ,2 0 0 6 年全球交付的智能手机数量达到了7 2 9 0 万部, s y m b i a n 凭借7 0 9 6 的份额处于市场领导地位,l i n u x 占智能手机交付量的2 0 9 6 ,而微软、 p a l m 和r i m 共占交付量的1 0 。2 0 0 7 年上半年在全球共出货3 4 6 0 万部s y m b i a n 智能 手机,同比上升了5 2 ,s y m b i a n 智能手机累计出货量已经达到1 4 5 亿部,在智能手 机市场的份额达到了7 2 。s y m b i a n 操作系统智能手机的用户在数量在占有绝对的优 势,这个优势使之成为智能手机应用开发的首选平台。 s m ss p a mm a n a g e r 是一款基于s y m b i a ns 6 0 手机的短信防火墙,它可以提供四 种不同的模式来拒绝垃圾消息和你不想接受的短消息:接受全部( 程序停止) ,电话 将会接收所有的短消息;阻止全部,电话将会拒接所有短消息;仅接受电话簿联系人 的短消息,电话会仅接受来自你电话簿上联系人的短消息;拒接黑名单上,电话将会 拒接列在你黑名单上联系人的短消息f 6 】。它的缺点是功能有限,用户使用不方便。因 为它只能简单设置过滤模式,仍然使用系统的短信管理软件来管理和发送短信。 网秦通讯管家是一款功能强大的手机通讯管理产品,也具有短信防火墙的功能。 它的优点是不需要用户设置,系统内置反骚扰信息库对短信内容进行过滤【7 1 。它的缺 点一是和s m ss p a mm a n a g e r 一样不方便用户使用,只有过滤功能,用户还要切换到 系统的短信管理程序去管理短信;二是内置的反骚扰信息库有可能会对垃圾短信判断 错误,缺乏用户设置的灵活性。 针对市场上现有短信防火墙和短信管理软件的不足,本文将设计并实现一种功能 更加丰富、用户使用更加方便的短信防火墙系统,有效提高手机短信系统的安全性。 1 3 目的和意义 本课题通过对s y m b i a n 智能手机操作系统开发平台和s m s ( 短消息服务) 子系 2 第一章引言 统的研究,以及对现有s y m b i a n 智能手机平台上的短信防火墙软件的调查,从短信过 滤、短信安全和个人隐私保护三个方面加强现在短信防火墙和短信管理软件的功能, 设计并实现具有以下功能的短信防火墙软件: l 、手机号码黑名单、白名单过滤,短信内容关键字过滤; 2 、短信内容加密传输; 3 、自定义v i p 人物,自动将v i p 人物的短信放入隐秘信箱; 4 、短信数据库的备份和恢复; 5 、短信搜索、短信聊天、自动回复和自动转发。 本课题的意义在于:提出一个较高安全性的手机防火墙系统设计方案,实现4 方面功能:第一、在手机终端根据用户设置有效地控制垃圾短信;第二、对短信内容 进行加密传输,大大增强了手机短信的安全性;第三、自定义v i p 人物的隐藏短信保 护,有效保护手机用户的隐私;第四、集短信防火墙和短信管理于一体,使用户的短 信操作更加方便,以有效满足用户短信安全性和易用性需求。 1 4 工作与创新 本文作者在深入了解了s y m b i a n 操作系统自身的功能特点,熟练掌握了s y m b i a n 操作系统应用开发的关键技术以后,针对目前短信防火墙软件和短信管理软件结合的 不足之处,依托在实习公司个人所承担的技术开发项目,设计并编码实现了一个功能 比较完善的s y m b i a n 操作系统智能手机短信防火墙系统。 具体工作如下: 1 、通过对市场上现有的s y m b i a n 智能手机上短信防火墙的调查,发现其功能和 实现的不足之处,提出可改进的方面,设定本系统的功能目标。 2 、熟悉s y m b i a n 开发平台,搭建s y m b i a n 开发环境,研究s y m b i a n 应用开发的 关键技术,研究并掌握s y m b i a n 消息传送接口的重要概念和接口类。 3 、根据系统的设计目标进行了模块划分,根据s y m b i a n 操作系统的特点进行了 系统架构设计,并分析了短信接收流程、短信过滤流程和短信发送流程。这一部分工 作主要在第三章体现。 4 、明确了系统架构与模块功能以后,对各个模块进行了详细分析和编码实现, 其中最核心的是对数据库表的设计和其内存表示数据结构的设计。这一部分工作主要 体现在第四章。 5 、针对系统的目标功能设计测试方案并进行测试,这一部分工作主要体现在第 五章。 本文的创新点在于: 3 第章引言 1 、集短信防火墙与短信管理于一身,用户不必再回到系统短信管理程序中管理 短信。 2 、短信监听程序和主程序分离,在关闭主程序的时有新短信到达也可收到并启 动主程序。 3 、用数据库保存短信内容,方便用户对大量短信的管理、备份和搜索。 4 、设置系统管理员和v i p 人物的隐藏信箱以保护用户隐私。 1 5 论文结构 全文共分为六章,对基于s y m b i a n 操作系统的短信防火墙的设计与实现进行了详 细的描述,本文作者的工作主要集中在第三、四、五章。论文结构如下: 第一章是全文的引言。主要介绍了本文的课题背景、研究意义,并指出作者的主 要工作和创新点。 第二章是s y m b i a n 开发关键技术研究。主要研究了s y m b i a n 操作系统和$ 6 0 平 台的特点以及s y m b i a n 应用开发中所用到的关键技术。其中关键技术主要集中在本文 系统开发中所必须的六种技术:异常退出、清除栈、两阶段构造、活动对象、客户端 朋艮务器框架和开机自启动。最后研究了s y m b i a n 操作系统提供的消息传送接口,包 括消息传送的重要概念和关键的消息类,正是通过这些类来进行各种短信操作。 第三章是系统的设计原则和总体设计。设计原则指出本系统不同于其他短信防火 墙系统的特点。总体设计介绍了本系统的设计目标、模块划分、系统架构、系统流程 以及开发环境。 第四章是系统的详细设计与实现。其中包括六个主要界面的设计,四个主要数据 库表的设计和数据结构的定义,以及各个功能模块的设计与实现。 第五章是系统安装和测试。系统安装主要介绍了生成安装文件的步骤和传送安装 文件到手机上的五种径;系统测试主要介绍了测试环境、测试方案和测试结果。 第六章是总结与展望。对全文做出系统全面的总结,并对今后需要进一步研究的 方向做了展望。 4 第二章s y m b i a n 开发关键技术研究 第二章s y m b i a n 开发关键技术研究 2 1s y m b i a n 操作系统概述 s y m b i a n 操作系统是一个专用于手机的操作系统,与传统的桌面操作系统有很多 根本上的不同,主要体现在以下6 个方面【8 】: 1 、手机的内存较少,并且很少关机和启动,所以s y m b i a n 操作系统必须非常注 意内存的泄漏,哪怕只有一个组件泄漏内存,不久之后用户也会收到内存耗尽的通知, 只能通过重新启动手机来回收内存。而且手机用户比p c 用户更不能容忍需要重新启 动才能解决的错误,所以程序员要尽可能的在程序中捕获错误,自动关闭某个出现问 题的程序而不要重启系统。 2 、电源管理也是需要十分重视的问题,例如,系统要求用户数秒内没有操作时 需要自动关闭背光以节约电源。 3 、支持s y m b i a n 手机的c p u 一般在1 0 0 2 6 0 m h z 之间。相对于p c 机来说,这 是一个非常低的速度。开发一个对c p u 要求较高的程序时,开发人员无法保证它在 手机上和在p c 模拟器上一样运行良好。因此,程序员一定要追求算法的效率。 4 、手机中存储器的概念不同于p c 。所有的手机程序,包括系统组件都在存储地 址中运行,而不是像p c 那样从硬盘提取数据到内存然后运行。s y m b i a n 操作系统内 核本身存储在一个不可写的2 0 m b 大小的r o m 中,被映射为z 盘。系统还有r a m , 是用来存储临时数据的,被映射为c 盘。 5 、手机的显示屏幕普遍较小,而且不同的手机往往屏幕大小也不同,所以“所 见即所得 模式设计界面就不适用了。开发人员需要借助很多系统提供的框架来设计 应用程序。 6 、手机的输入设备与p c 有明显的区别,手机没有鼠标的概念,只有少数的高 端产品提供触摸屏。所以设计界面时要考虑用户需要按键的复杂度,以设计出人性化 的程序。 这些不同造成s y m b i a n 平台应用程序的开发和传统的桌面操作系统平台的开发 有很大的差异,所以首先需要研究s y m b i a n 平台上应用程序开发的关键技术。 2 1 1s y m b i a n 操作系统模型 s y m b i a n 操作系统模型是操作系统架构的高级表现形式,显示了操作系统组件的 5 第二章s y m b i a n 开发关键技术研究 分层视图,如图2 1 所示。s y m b i a n 操作系统分为五层:u i 框架、应用程序服务、操 作系统服务、基本服务、内核服务和硬件接口,j a v ej 2 m e 作为一个独立模块,跨越 了s y m b i a n 操作系统的最高两层。每一层均抽象下一层的复杂性,并为上一层提供服 务。每一层中组件均依照功能进行封装,封装为操作系统架构提供了可管理的层次。 尽管层模型很适合于s y m b i a n 的目标,但是为了满足操作系统的效率要求,有必要对 层进行放松, u i 框架 应用程序 服务 操作系统 服务 基本服务 内核服务和 硬件接口 匝亟匦蒌亟匣垂囹 医堕圜匣匦 m i d p 2 0 分析 m i d p 2 0 包 j a v a 虚拟机 通用操作系统 通话服务 串行通信与短程 网络服务图形服务 服务连接服务 图2 1s y m b i a n 操作系统模型 2 1 2s y m b i a n 操作系统的功能特点 作为专用的嵌入式手机操作系统,s y m b i a n 操作系统具有以下6 大功能特点【l o l : 1 、客户服务器的系统结构 在s y m b i a n 系统中,客户端是由一些带有互动界面的程序组成;而在服务器方面 却能够与其他的程序实现特定的交互。客户端被应用程序直接使用,而服务器则必须 对所有的客户端做出响应从而保证系统资源的利用。 2 、多任务 这一点与其他系统并不相同,s y m b i a n 采用了多线程技术,使得开发商在开发程 6 第二章s y m b i a n 开发关键技术研究 序的时候,把内部联系和表现作为主要的因素。因此,程序设计变得更加交互。 3 、面向对象 这一点使得s y m b i a n 兼容不同种类的硬件,而且它的设计结构也很好地支持了这 一点,使得o e m 厂家方便地选择合适的部件来装配合适的机器。 4 、最小化电量消耗 s y m b i a n 是针对智能手机,也就是全功能移动设备所开发的。所以要求电源管理 程序必须实现最小的功耗。最主要的特点就是,当外设不被使用的时候会自动关闭。 5 、稳定性 s y m b i a n 系统作为智能手机的另一个优点就是稳定和可靠,尽量减少数据丢失、 死机和重启。s y m b i a n 系统通过两种方法实现这一目的:每个进程都运行在一个保护 的内在空间上,禁止被任何其他程序改写。核心的运算也是在一个保护的内存地址上 进行的,所以一个程序的问题无法改变内核运算的寄存栈。客户端的程序还允许进行 安全的数据传输。 6 、内存优化 为了保持智能设备的轻巧灵便,内在容量受到一定的限制。这就使得内存的使用 率变得非常的重要。 2 2s y m b i a n 开发关键技术 c + + 是s y m b i a no s 软件开发的主要语言,因为a p i 本身就是以c + + 来编写的。 在开发s y m b i a n 软件时,会使用到许多标准的c + + 语言功能,包括继承、封闭、虚函 数、函数重载和模板。但是s y m b i a no s 的一些功能却是以非标准c + + 的方式实现的。 这要求一般的程序员,甚至是有经验的c + + 程序员做相应的调整。例如,s y m b i a no s 实现它自己的基于异常退出来进行错误处理,而不是标准c + + 的异常处理机制;对字 符串和复杂集合类型,s y m b i a no s 也没有使用标准模板库,而是使用特有的实现类。 s y m b i a no s 做出这样的决定出于种种原因,包括为了使资源有限的设备实现更高效 率【1 2 1 。 因为手机属于资源受限的设备,所以在手机上开发应用程序与在p c 上开发有非 常大的区别。它更加强调程序的高效性、健壮性、代码尺寸、内存的使用和能耗。 s y m b i a n 操作系统针对手机应用程序开发的特点作了相应的处理,诸如为了有效的管 理内存、防止内存泄漏而提出的异常退出和清除栈等概念,为了在单个线程中完成高 效的事件驱动多任务而提出的活动对象。这些都是s y m b i a n 操作系统很有针对性地设 计,是开发s y m b i a n 应用的关键技术。 7 第二章s y m b i a n 开发关键技术研究 2 2 1 异常退出 s y m b i a no s 强调简洁的操作系统和客户代码,而标准c + + 的异常处理不管是否 有异常被抛出都会增加编译出来的代码大小,并会带来运行时存储器的开销,因此“异 常退出作为一种简单高效的轻量级的异常处理机制被开发出来,并成为s y m b i a n o s 的标准之一【l3 1 。事实上,一个异常捕获模块就是一个高效的仃y 和c a t c h 的组合。 异常退出一般发生在程序执行了不能保证一定成功的操作,例如在低内存容量的 情况下分配内存。当异常退出函数发生了异常,它会产生一个错误代码,并将其沿着 调用栈传递,直到能够被某处的异常捕获模块所“捕获,并妥善处理。如果一个函 数是异常退出的,则它的名字应以“l ”作为后缀来加以辨认。必须遵守这样的命名 约定。在所有的s y m b i a no s 命名约定中,这个约定是最重要的。如果没有按照约定 对异常退出函数进行命名,代码的调用者可能就不会对异常退出做出防范,从而可能 导致潜在的内存泄露。 s y m b i a no s 采用t r a p 和t r a p d 两个宏来捕获异常。 每个程序必须至少有一个t r a p ,如果它只是在最外层的话,它就将捕获所有的 异常退出,而在其他地方就不会有异常退出被捕获。应用程序框架默认提供了一个 t r a p ,所以即使开发人员没有在程序中写异常捕获,程序异常也会被应用程序框架 捕获,只不过难以确定异常产生的位置。 2 2 2 清除栈 s y m b i a no s 被设计成能够在受限的内存下良好运行的系统,所以在设计时不可 避免地要考虑当错误发生时如何进行内存管理,清除栈就是用来处理当发生异常退出 而被“遗弃( 泄漏) 的内存【1 4 1 。 所谓内存泄漏是指申请的内存没有被释放,导致这块内存无法再使用。如果一个 局部变量是一个指向堆上对象的指针,当异常退出发生时,指针就会在没有释放内存 的情况下被销毁掉,此时就会发生内存泄漏。清除栈就是事先将可能发生内存泄露的 指针压入栈中,如果发生了异常退出,虽然局部变量的内存指针己经被销毁,但是清 除栈中还保存着一份该指针的拷贝,此时将清除栈中的指针弹出并且将其指向的内存 回收就可以保证内存不会泄露。 可以通过c l e a n u p s t a e k 类的静态成员函数访问清除栈,清除栈的具体使用方法如 下: v o i ds a f e f u n c t i o n l ( ) r 第二章s y m b i a n 开发关键技术研究 c c l a n g e r 掌c l a n g e r = n e w ( e l e a v e ) c c l a n g e r ; 调用异常退出函数之前将其压入清除栈中 c l e a n u p s t a c k :p u s h l ( c l a n g e r ) ; c l a n g e r - d o s o m e t h i n g e l s e l ( ) ; 从清除栈中弹出 c l e a n u p s t a c k :p o p ( c l a n g e r ) ; d e l e t ec l a n g e r ; 如果d o s o m e t h i n g e l s e l ( ) 执行成功,紧跟着将把c l a n g e r 指针从清除栈中弹出并 且将其指向的内存收回。如果d o s o m e t h i n g e l s e l ( ) 异常退出了,c l a n g e r 对象就会被 清除栈销毁,整个过程都是异常退出处理过程的一部分。如果在上述代码中没有添加 有关清除栈的代码p u s h l ( c l a n g e r ) 和p o p a n d d e s t o r y ( c l a n g e r ) ,当d o s o m e t h i n g e l s e l ( ) 函数发生异常退出时,c l a n g e r 指针会被销毁,那么c l a n g e r 对象所占用的内存则发生 泄漏。 2 2 3 两阶段构造 首先考虑下面这行代码: c e x a m p l e 木f o o - - - n e wc e x a m p l e ( ) ; 代码调用n e w 操作符,首先在存在可用内存的情况下,在堆上分配一个c e x a m p l e 对象,然后会调用类c e x a m p l e 的构造函数初始化这个对象。如果c e x a m p l e 的构造 函数发生了异常退出,那么分配给该对象的内存和在构造函数中分配的内存都将被遗 弃。这种情况下,两阶段构造将会避免内存泄漏的发生。 当编写一个新类时,将构造函数的代码分为两部分或两段: 1 、一个基本不会发生异常退出的构造函数。 这个构造函数将被n e w 操作符调用。它隐式的调用基类的构造函数,还会调用 那些不会发生异常退出的函数,或者以默认值或以传入构造函数的参数来初始化成员 变量。 2 、一个类方法( 通常叫做c o n s t r u c t l ( ) ) 。 只要前一段中分配并构造的对象指针被压入清除栈,该方法就可以被单独调用。 它将完成对象的构造过程,并且能够安全的执行那些可能发生异常退出的操作。如果 发生异常退出,清除栈将调用析构函数来释放所有已经成功分配的资源,并回收分配 给对象本身的内存。 一个典型两阶段构造的类如下: 9 第二章s y m b i a n 开发关键技术研究 c l a s sc e x a m p l e :p u b l i cc b a s e p u b l i c : s t a t i cc e x a m p l e 宰n e w l ( ) ; s t a t i cc e x a m p l e 木n e w l c ( ) ; c e x a m p l e ( ) ; p r i v a t e : c e x a m p l e ( ) ; v o i dc o n s t r u c t l ( ) ; ) 典型的n e w l ( ) 和n e w l c ( ) 实现如下: c e x a m p l e 木c e x a m p l e :n e w l c ( ) c e x a m p l e 水m e = n e w ( e l e a v e ) c e x a m p l e ( ) ;第一阶段构造 c l e a n u p s t a c k :p u s h l ( m e ) ;将对象指针压入清除栈 m e - c o n s t r u c t l ( ) ;第二阶段构造 r e t u r nm e ; ) c e x a m p l e 宰c e x a m p l e :n e w l ( ) c e x a m p l e + m e 2c e x a m p l e :n e w l c ( ) ; c l e a n u p s t a c k :p o p ( m e ) ; r e t u r n m e ; ) n e w l ( ) 和n e w l c ( ) 两个函数都会返回一个完全构造的对象,唯一的不同点是后 者对象指针留在清除栈中,使用时需要手动弹出;而前者已经将对象指针从清除栈中 清除。如果出现下列两种情况,程序会发生异常退出:无法为对象分配足够内存;第 二阶段构造函数c o n s t r u c t l ( ) 发生异常退出。如果第二阶段构造失败,清除栈能够保 证没有完全构造的对象被销毁,并且将其占用的内存回收。 2 2 4 活动对象 2 2 4 1 活动对象简介 1 0 第二章s y m b i a n 开发关键技术研究 运行s y m b i a n o s 的设备所拥有的资源通常比桌面p c 更有限,因而在s y m b i a n o s 上除了要快速响应以及谨慎的处理能量消耗以外,尽量减少事件处理代码的内存消耗 和高效使用处理器资源也很重要。活动对象通过支持轻量级的、事件驱动多任务模型 来帮助实现高效程序设计。活动对象将传统的等待循环封装到了一个类中。它们被设 计成这样:在同一个线程中运行的活动对象之间切换的代价要比线程上下文切换代价 低( 在速度上的差别可能达到1 0 倍,另外一个线程大约在内核中有4 k b 的空间开销, 在用户空间有8 k b 用于程序栈的空间开销,而一个活动对象的大小可能只有几百个 字节,甚至更小) 。这就使得活动对象更适合s y m b i a no s 的事件驱动多任务。 除了上下文切换带来的运行期代价,使用抢占式多线程对于事件处理而言也不方 便,因为抢占式多线程需要通过诸如互斥体或信号量的同步原语来保护共享对象。此 外,在s y m b i a no s 的缺省情况下,资源所有权也是线程相关的。如果一个文件被主 线程打开,那么在没有调用r s e s s i o n b a s e :s h a r e ( ) 显式共享旬柄的情况下,即使是同 一进程的其他线程也无法使用该文件。由于这个限制,s y m b i a no s 很难将多线程作 为实现事件驱动多任务的一种可行方法。 在s y m b i a no s 中,活动对象相互协作并顺序的实现多任务,也不需要对共享资 源进行同步保护。另外,因为活动对象在同一个线程中运行,所以可以更容易的共享 内存和对象。尽管活动对象存在于同一个线程,但它们仍然是各自独立运行的,就像 同一个进程中的线程一样。 然而,一旦一个活动对象在处理事件了,它就无法被另外一个活动对象的事件处 理程序所抢占( 因为虽然在一个线程内的活动对象是非抢占的协同运行的,但在 s y m b i a no s 中它们所在的线程确实是被抢占式调度的 ) ,这就意昧着它们不适合实时 任务。在s y m b i a no s 中,实时任务应当用高优先级线程和进程来实现,并根据相对 的实时性要求选择恰当的优先级。 2 2 4 2 使用活动对象 一个典型的s y m b i a no s 应用程序或服务器由一个单独的事件处理线程构成,该 线程运行着配合一个或多个活动对象的调度器。每个活动对象请求一个异步服务,并 在请求过了一段时间后才会处理相应的完成事件。同时它也提供一种撤销特定请求的 方法,还有异常情况下的错误处理。使用活动对象的步骤如下: l 、构造 一个活动对象类必须派生自c a c t i v e 类,从c a c t i v e 派生的类必须调用基类中的 作为保护成员的构造函数,并传递一个参数来设置活动对象的优先级。作为构造的一 部分,活动对象代码应当对活动调度器调用一个静态函数c a c t i v e s c h e d u l e r :a d d ( ) 。 这可以将对象加入到那个线程中事件处理活动对象的调度器所维护的列表中。 第二章s y m b i a n 开发关键技术研究 2 、提交请求 首先检查确认在试图提交个请求之前没有请求己经被提交,每个活动对象只能 够有一个当前的请求。 然后活动对象向服务器提供者发送请求,传入其t r e q u e s t s t a t u s & 类型的i s t a t u s 成员变量作为参数。 最后如果请求被成功提交,请求方法将调用c a c t i v e 基类中的s e t a c t i v e ( ) 方法, 从而向活动调度器表明请求应经被提交。 3 、事件处理 每个活动对象必须实现c a c t i v e 基类的纯虚成员函数r u n l ( ) ,当来自异步服务 提供者的完成事件发生,且活动调度器选择了活动对象处理该事件时,它就会在活动 对象上调用r u n l ( ) 4 、撤销 如果正在运行的应用程序线程想要中止,那么活动对象必须能够撤销任何选定 的、自己产生的异步请求。c a c t i v e 基类实现了一个c a n c e l ( ) 方法,该方法调用纯虚 方法d o c a n c e l 0 ,活动对象的派生类通过实现d o c a n c e l ( ) 来进行撤销工作。 2 2 5 客户端服务器框架 2 2 5 1 客户,且匣务器框架的意义 一个客户要使用服务器提供的服务。服务器接受来自客户的请求消息并同步或异 步的处理它们。数据可以通过请求信息本身从客户传递给服务器,或者通过客户地址 空间中的描述符指针来传递,此时服务器可以使用内核中介的数据传输来访问这些数 据。在s y m b i a no s 中,服务器通常用来管理对系统资源和服务的共享访问。使用服 务器是高效的,因为它可以服务多个客户会话,并且可以并发地被运行于不同线程的 客户所访问。服务器也保护了系统的完整性,因为它可以确保资源在客户间恰当的共 享,并且确保所有客户都正确地使用资源。当服务器运行在它自己的进程中时,它具 有一个单独的、隔离的地址空间,并且只通过定义良好的接口来访问正在获取服务的 客户。通过将服务器放在一个单独的进程中,系统可以保证具有不良行为的客户无法 破坏它正在操作的但是由服务器管理的资源或者其他客户的资源。s y m b i a no s 就是 利用这个原理来保护文件系统的,所有对基于文件的数据访问都必须通过文件服务器 的客户e f s r v d u 或者通过更高层的、使用到文件服务器客户的组件( 例如,流存储 e s t o r d u ) 来完成。 服务器也可以用来提供异步服务,因为它们运行在与其客户分离的线程中。 1 2 第二章s y m b i a n 开发关键技术研究 s y m b i a no s 的大多数系统服务,尤其是那些提供异步功能的服务,都是用客户端朋艮 务器框架加以支持的:例如窗口服务器( 用来访问u l 资源,诸如屏幕和键盘) 、串行 通信服务器( 用于访问串口) 和电话服务器。 2 2 5 2 客户端与服务器如何通信1 1 5 1 对于客户端与服务器的操作系统接口,s d k 第三版与以前的第一版和第二版有 所不同,这里以第三版为准进行介绍。 当运行于不同进程时,它们无法互相访问彼此的虚地址空间,所以它们使用消息 传递协议来进行通信。这种通信的渠道称为会话,会话是由内核创建的,同时内核还 在所有的客户端用民务器通信中充当媒介

温馨提示

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

评论

0/150

提交评论