(计算机应用技术专业论文)基于udpip的可靠用户数据报协议的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于udpip的可靠用户数据报协议的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于udpip的可靠用户数据报协议的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于udpip的可靠用户数据报协议的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于udpip的可靠用户数据报协议的设计与实现.pdf_第5页
已阅读5页,还剩41页未读, 继续免费阅读

下载本文档

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

文档简介

华北电力大学( 北京) 硕士学位论文 摘要 近年来嵌入式技术的应用日益广泛。在数字机床,智能工具,以及通信 行业等各行业中,嵌入式技术正在广泛的应用。在嵌入式应用系统中扩通常 包含很多功能不同的设备,分布的处理机之间用通信链路连接起来f t ;因此如 何实现各处理机间实时的、可靠的数据通信,即解决嵌入式分布系统中的进 程间可靠、高效通信的问题,就成为一个关键。 通常选用传输层控制协议 ( t c p )或简单流传输协议 ( s c t p )实现进程 间数据的可靠传递。但这两种协议都不能很好的满足嵌入式实时系统对可靠 性和实时性的要求。 本文根据可靠u d p ( r e l i a b l e u d p , r u d p )协议草案,设计了r u d p 通 信软件模块,目的是实现嵌入式分布系统中进程间可靠、高效的通信。 关键词嵌入式系统;进程:通信:可靠u d p ab s t i d c t r e c e n t l y , t h e e m b e d d e d t e c h n o l o g y i s w i d e l y u s e d . s u c h a s t h e d i g i t a l m a c h i n e a n d i n t e l l i g e n t t o o l a n d c o m m u n i c a t i o n o r i e n t e d a p p l i c a t i o n s , i t s w i d l y u s e d . i n g e n e r a l , t h e r e a r e a l o t o f e q u i p m e n t s i n e m b e d d e d a p p l i c a t i o n s y s t e m . t h e d i s t r i b u t e d p r o c e s s o r s a r e c o n n e c t e d b y t h e c o m m u n i c a t i o n l i n k . s o i t i s i m p o r t a n t t o i m p l e m e n t t h e r e a l - t i m e a n d r e l i a b l e d a t a c o m m u n i c a t i o n a m o n g t h e s e p r o c e s s o r s . t c p a n d s c t p a r e u s u a l l y c h o s e n t o i m p l e m e n t t h e d a t a t r a n s m i s s i o n w i t h h i g h l y r e l i a b i l i t y , w h i c h m u s t t r a n s f e r d a t a r e l i a b l y . b u t t c p a n d s c t p c a n n o t s a t i s f y t h e r e q u e s t o f r e a l t i m e a n d r e l i a b i l i t y i n e m b e d d e d s y s t e m . i n t h i s s t u d y , t h e r u d p ( r e l i a b l e u d p ) s o f t w a r e m o d u l e i s p r o p o s e d t o i m p l e m e n t t h e d a t a t r a n s m i s s i o n w i t h r e l i a b i l i t y a n d h i g h e f f i c i e n c y a m o n g t h e m u l t i p l e p r o c e s s o r s b a s e d t h e t h e o r y o f r u d p d r a f t . k e y w o 川s s y s t e m; p r o c e s s ; c o m mu n i c a t i o n , r u d p 华北电力大学( 北京) 硕士学位论文 第一章引言 1 . 1 课题背景、目 的及意义 在当今日益信息化的社会中,计算机和网络己经全面渗透到日常生活中的每一 个角落。对于我们每个人,需要的己经不再仅仅是那种放在桌上处理文档,进行工 作管理和生产控制的计算机 “ 机器”。各种各样的新型嵌入式系统设备在应用上己 经远远超过通用计算机,一个普通人可能拥有从大到小的各种使用嵌入式技术的电 子产品,小到手机、 m p 3 播放器、p d a 等微型数字化产品,大到网络家电,智能家 电,车载电子设备等。而在工业和服务领域中,使用嵌入式技术的数字机床,智能 工具,工业机器人,服务机器人也正在逐渐改变传统的工业和服务方式。而在这些 嵌入式应用系统中,往往包含很多设备,这时分布式系统便成为实现这种系统最方 便,最现实的方法,即把分布的处理机之间用通信链路连接起来川 。随之而来的多 处理机间数据的可靠传递问题一即嵌入式分布系统中进程间的通信问题一变得很 重 要 2 l 目前保证数据在分布系统进程间可靠通信的方法主要是采用传输控制协议 ( t r a n s m i s s io n c o n t r o l p r o t o c o l , t c p )或简单流传输协议 ( s t r e a m i n g c o n t r o l t r a n s m i s s i o n p r o t o c o l , s c t p ) 。 众 所周知, t c p 和 s c t p 都 是 基于 流的 传输协 议, 是一个无边界的协议,如果将它们应用于基于消息的通信中,就需要用户处理消息 的边界和完整性, 这将不可避免的增加系统的开销并降低通信的效率3 - d 3 。 传输层的 另一 个广 泛使 用的 协 议 一 用户 数据报 协议( u s e r d a t a g r a m p r o t o c o l , u d p ) 是 基于 消息的传输协议,可以被应用在基于消息的通信中,但是由于它是无连接的传输协 议, 所以不能保证进程间 数据的可靠传输阎 。 为此, 就自 然地考虑到在u d p 的基础上 增加一些为保证可靠数据传递所必需的功能,使其成为一个基于消息的可靠传递协 议,这就是可靠u d p 协议 ( r e l i a b l e u d p , r u d p ) 6 i 。本论文主要论述基于r u d p 的可靠数据传递技术的实现原理和实现方法。 本课题是中兴通讯成都研究所操作系统室开发的面向通信行业的嵌入式软件开 发平台项目 ( 国家 “ 8 6 3 项目”)中的一个模块,本文所设计的软件模块就是基于 该平台开发的,目的是实现嵌入式分布系统中进程间的高效的通信,并在保证数据 传递的可靠性的前提下尽可能的提高通信效率。 1 . 2 国内外研究现状 1 . 2 . 1 嵌入式系统的发展情况 嵌入式系统一般指非p c 机系统, 有计算机功能但又不称之为计算机的设备或器 华北电力大学( 北京) 硕士学位论文 材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、 _ 可靠性、成本、 体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的 应用软件与硬件于一体, 类似于p c 中b i o s 的工作方式, 具有软件代码小、 高度自 动 化、响应速度快等特点,特别适合于要求实时性和多任务的体系。嵌入式系统主要 由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可 独 立 工 作 的“ 器 件”7 1 a 嵌入式系统几乎包括了生活中的所有电器设备,如掌上p d a 、移动计算设备、 电视机机顶盒、手机、数字电视、多媒体、汽车、微波炉、数字相机、家庭自 动化 系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自 动化仪表与医疗仪器等等。 嵌入式系统的硬件部分, 包括处理器/ 微处理器、 存储器及外设器件和i / o 端口、 图形控制器等。嵌入式系统有别于一般的计算机处理系统,它不具备像硬盘之类的 大容量的 存储介质, 而大多使用e p r o m , e e p r o m 或闪 存( f l a s h m e m o r y ) 作为存 储 介质。软件部分包括操作系统软件( 要求具有很高的实时性和多任务操作) 和应用软 件。应用软件控制着系统的运作和行为,而操作系统则控制着应用软件与硬件的交 互作用。 虽然嵌入式系统这一名词在最近几年才成为流行,但早在8 0 年代,国际上就有 一些i t 组织、公司,开始进行商用嵌入式系统和专用操作系统的研发。从硬件方面 讲, 3 2 位、6 4 位微处理器是目 前嵌入式系统的核心,它们的性能同样也是未来发展 的一大趋势。 为了抢占这个无限广阔的市场, 各大硬件厂商竞相推出产品, 包括i n t e l , m o t o r o l a , p h i l i p s , a m d 等等均不甘示弱, 几乎每个月都有新产品出 现。市场竞争 日益激烈,同时也给嵌入式技术的发展带来了无限活力。 从软件方面讲,目前的儿大嵌入式实时操作系统平分天下。v x wo r k s 是目前嵌 入式系统领域中使用最广泛、市场占有率最高的嵌入式实时操作系统。它支持多种 处理器,并提供了功能强大、使用方便的开发工具包t o r n a d o 。但由于它的很多a p i 是这个系统本身独有的,使得开发的兼容性受到很大影响。o s - 9 主要是为高科技产 品设计的, 它提供了很好的安全性和容错性, 并且有很好的升级能力和灵活性。 p a l m o s ( p a l m 公司的操作系统) 和微软的wi n d o w s c e 是p d a 操作系统的两大巨头。 由于 wi n d o w s c e 的模块化设计允许它对于从掌上电脑到专用的工业控制器的用户电子 设备进行定制,再加上微软公司强大的技术力量,所以,虽然目 前p a l m 还有大部分 的市场份额, 但是有理由相信, wi n d o w s c e 必将成为p d a 系统软件的一个霸主。由 于国际上p d a 市场的快速增长, 目前对基于p a l m 和基于wi n d o w s c e 的应用软件有着 大量的需求。这类软件由子系统功能的单一,所以功能也趋向专一化。而掌上设备 的各种通讯管理软件需求极大, 同时开发环境齐备, 其开发完全可以在p c 机上进行, 华北电力大学( 北京) 硕士学位论文 通过软件模拟调试, 等到模拟通过后再下载到机器中。 而且因为可以使用大量的p c 机的a p i 函数、 s d k , 所以开发过程是在一己 有的成熟技术基础上进行的, 相对简单18 1 a 本文中 所论及的 操 作系 统是 在封装了 商 用操作 系统 包括v x w o r k s , p s o s 、 嵌入 式l i n u x 和wi n d o w s 15 i t 等之后的面向通信行业的嵌入式应用软件开发的操作系统平 台,为使用上述嵌入式操作系统的各产品线的上层应用提供统一的调度接口 1 9 1 . 11 .2 .2 目 前各传输协议的发展情况 ( 1 ) t c p 协议的发展情况 传输控制协议( t r a n s m i s s i o n c o n t r o l p r o t o c o l , t c p ) , 是一种提供给用户进程的可靠的全双工字节流面向 连接的协议 1 0 1 。 当一台计算机与 另一台远程计算机连接时,t c p 协议会让它们建立一个连接、发送和接收数据以及 终止连接。t c p 协议是目 前i n t e rn e t 上应用最广泛的面向连接的传输层协议,它为通 信的两端提供了可靠的数据传输,而且提供了流量控制和拥塞控制功能,利用重发 技术和拥塞控制机制,向 应用程序提供可靠的 通信连接。 1 1 a 由于原来i p 网提供的是 “ 尽力而为 ( b e s t - e f f o r t )”的服务,因此t c p 存在许多 不足之处1 . t c p 是面向 字节流的, 这意味着消息的描述必须由应用来完成,而且 要在消息结束时显式地通知t c p ,以迫使其立即发送相应的数据。许多应用只需要 信令信息的部分有序, 例如属于同一呼叫或同一会话的消息就是这样1 1 3 1 a而t c p 只 提供严格的数据按序传输,这会导致不必要的队头拥塞并使消息的传输时延增大。 t c p 连接直接由一对传输层地址 ( i p 地址和端口号)识别,无法提供对多宿主机的 、 透明 支持。 典型的 t c p 实 现不允许高 层应用设定协议控制参数“ r l 。 但是一些应用可 能会需要调节传输层协议的属性以满足其要求。例如某些应用有较高的时延要求, 而另一些则只要求较高的可靠性。 ( 2 ) u d p 协议的发展情况 用户数据报协议 ( u s e r d a t a g r a m p r o to c o l , u d p ) , 主要用来支持需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内 的 众多的 客 户/ 服务 器模式的网 络应用都需 要使 用u d p 协 议 ) . u d p 和 t c p 一 样, 属 于 传 输 层 协 议 。 u d p 协 议 的 主 要 作 用 是 将 网 络 数 据 流 压 缩 成 数 据 报 的 殆 式 。 每 一 个 数据报的前8 个字节用来包含报头信息, 剩余字节则用来包含具体的传输数据。 u d p 是基于消息的,提供快速的无连接业务, 这使其适合于传输时延敏感的信令消息。 但是,u d p 本身仅提供不可靠的数据报业务, 而差错控制, 包括消息顺序、消息重复 检测和丢失消息重传等功能只能由 上层应用来完成 1 6 a u d p 协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通 过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据 报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送方和接收方 的校验计算值将不会相符,由此u d p 协议可以检测是否出错。这与t c p 协议是不同 的,后者要求必须具有校验值 1 7 1 a 华北电力大学( 北京) 硕士学位论文 u d p 和t c p 协议的主要区别是两者在如何实现信息传递的可靠性方面不同。 t c p 协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时, 会自 动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其 它信息,否则将一直等待直到收到确认信息为止。与t c p 不同,u d p 协议并不提供 数据传送的 保证机制。 如果在从发送方到接收方的传递过程中出现数据报的丢失, 协议本身并不能做出任何检测或提示1 s ( 3 ) s c t p 协议的发展情况 流控制传输协议 ( s t r e a m i n g c o n t r o l t r a n s m i s s io n p r o t o c o l , s c t p ),它结合了 u d p 和t c p 两种协议的长处。它一方面增强了u d p 业务 并提供数据报的可靠传输;另一方面,s c t p 的协议行为类似于t c p 并试图克服t c p 的某些局限。 正如i e t f r f c 2 9 6 0 中定义的, s c t p 是可靠数据报传输协议, 它运行于 提供 不 可靠传 递的 分 组网 络上, 如 i f 网 1 1 9 1 。 它向 用 户提 供下 列服务: 用户 数据无 错 误无重复的确认传输; 根据检测到的m t u 长度进行用户数据分段处理, 避免i p 层的分 段;在多个流 ( s t r e a m)间的用户消息有序递交,及单独用户消息按到达顺序递交 的选项;可选的多个用户消息至s c t p 数据报的复用; 通过支持一个关联 ( t c p 中的 连接是指两个t c p 端点通过 “ 三次握手” 过程建立的由一对传送层地址 ( i f 地址和 端口号) 识别的传送通道。 在s c t p 中, t c p 中的连接被引申为关联 ( a s s o c i a t i o n ) o ) 的一方或双方节点的多宿特性,实现网络级容错12 0 1 流控制传输协议s c t p 名称中的 “ 流” e s t r e a m)是指该协议能够处理每个关联 中的若干个用户数据报流,并且为每个流中的用户数据报提供有序传送。流子层的 存在使得其他流中数据丢失造成的队头阻塞情况得以避免。 用户数据无错误无重复的确认传输通过分组序列间隙报告和选择性重发来实 现。s c t p 采用了与t c p 基本雷同的流量控制和拥塞控制算法,引用了慢启动机制。 只是在数据分组的确认和重传机制上,明确将选择性确认作为标准的一部分,规范 了选择性重传和快速恢复机制。 1 .2 . 3 r u d p的发展情况 t c p 和s c t p 都是面向连接的传输协议,它们都具有较完备的传输控制机制,因 而能够保证通信双方数据的可靠传递;但是由于t c p 和s c t p 都是基于流传输的, 所 以在基于消息传输的应用中,消息的边界和完整性问题需要由上层用户来处理,从 而降 低了 通信的效率2 1 -2 3 1 。 而u d p 是无连接的传输协议, 尽管它不能保证数据的可 靠传递,但是因为它没有复杂的控制机制,所以系统开销很小,通信速度较快:而 且它是基于消息传输的, 所以在基于消息传输的应用中不存在t c p 和s c t p 中的由用 户处理消息边界和完整性的问题。 嵌入式系统对可靠性、实时性要求严格12 4 1 , 所以如何保证数据在嵌入式系统中 的各设备间可靠快速的传递,在嵌入式系统广泛应用的今天,是一个非常重要的问 华北电力大学( 北京) 硕士学位论文 题。因为嵌入式分布系统中进程间通信的网络环境不如一般意义上的互连网复杂 2 5 , 网络负荷相对较小, 所以 t c p 和s c t p 的复杂控制机制在这种情况下显得没有必 要。而u d p 又不是可靠传输协议,不能够满足嵌入式系统对可靠性的要求。为了实 现嵌入式分布系统中进程间的可靠通信,并提高通信效率,很自然的就会想到结合 t c p 和u d p 的优点,在u d p 之上增加一些保证数据可靠传递的控制机制,满足应用 的需要z e - z , r u d p 草案正是在这种情况下产生的。 可靠用户数据报协议z $ ( r e l i a b l e u d p , r u d p ) 是一个基于传输协议的简单的 包,它的理论基础是r f c s 1 1 5 1 和r f c 9 0 8 2 9 可靠数据报协议。r u d p位于u d p / i p 之 上,为虚拟连接提供可靠的有序的数据发送。 目前关于r u d p 的设计与应用的介绍还较少,本文正是在这个基础上对基于 u d p / i p 的可靠数据传递技术的实现原理和实现方法进行了研究,r u d p 是一种基于 u d p 的可靠数据传递方法,在设计上参考了s c t p 的部分细节。 1 .3 本文研究的主要内容 本文首先讲述了有关操作系统的基础知识,该部分知识主要是围绕进程间通信 展开: 其次介绍了实现r u d p 所必需的网络编程理论【3 0 ; 然后简单介绍了 r u d p 的协 议草案,这是设计的基础;接下来就是r u d p 软件模块的实现部分,包括原理和关 键技术; 最后就是将该模块加载到操作系统平台上, 搭建测试环境3 1 、 进行性能方 面的测试, 并与t c p 通信进行比较, 验证r u d p 的通信效率优于t c p 通信。 具体如下: ( 1 ) 研究r e l i a b l e u d p p r o t o c o l 草案 r f c 2 9 6 0 , t c p - i p 详解卷1 : 协议 用 t c p / i p 进行网际互连3 2 ,中兴内部资料 ( 操作系统源码及全套设计文档) , t c p / i p u n i x 版本 源代 码3 3 ,网 络编程技术等。 ( 2 ) r u d p 软件模块实现的基本原理和总体设计。 ( 3 ) r u d p 协议模块关键技术的解决与实现。主要包括以下关键技术:连接的建 立、连接的关闭、确认技术、定时器的实现。- ( 4 ) 将设计的r u d p 软件协议模块加载到嵌入式操作系统平台上,测试其性能; 并比较r u d p 和t c p 的性能。 其中第( 2 ) 点和第( 3 ) 点是本论文的研究重点。 1 .4 本文结构 第一章首先介绍了课题的背景、目的、意义及来源,主要分析了本文所研究的 课题的国内 外研究现状,即实现嵌入式分布系统中进程间通信所使用的传统的传输 协议的优缺点,其次给出了本文研究的主要内容和结构。 第二章介绍了为实现r u d p 软件模块所需要的预备知识,因为r u d p 的开发设计 是基于嵌入式操作系统开发平台的,所以必须了解有关操作系统的一些基本概念及 华北电力大学( 北京) 硕士学位论文 其特点。在本章的结尾介绍了套接口s o c k e t 的基本知识,包括开发模型和所要调用 到的接口函数。 第三章在第二章的基础上参考了s c t p 设计细节和r f c 9 0 8 协议草案,从整体上 给出了r u d p 的设计和实现的基本原理,其中重点介绍了r u d p 采用的主要控制机 制,是进行r u d p 具体设计的依据。这一章是承上启下的一章。 第四章介绍r u d p 模块所处的大环境面向通信领域的嵌入式软件开发平台。 在这一章中,重点介绍了由中兴通讯股份有限公司成都研究所操作系统室开发的这 一平台,并介绍了本模块在这个平台中的位置。 第五章是r u d p 的具体设计部分。 首先是r u d p 的字段格式设计包括数据包、 应 答包等;其次是具体设计中用到的各种数据结构,如r u d p 包头结构、用户消息包 结构、r u d p 包结构、用户消息节点、用户消息队列、发送队列节点、发送队列和 套接口节点的结构等等。然后是通信任务、守护任务、协议处理任务及其它事件处 理的程序流程设计,根据这些流程就可以进行具体的编码了。在本章的最后将已经 用代码实现的r u d p 加载到嵌入式操作系统平台上运行,进行通信基本功能和效率 方面的实验。通过实验结果,检验本文所设计的r u d p 软件模块是否能够实现嵌入 式分布系统进程间高效率的可靠通信功能。 华北电力大学( 北京) 硕士学位论文 第二章基础理论 2 . 1嵌入式实时操作系统的种类 一般来说,嵌入式实时操作系统可以分为两类,一类是面向控制、通信等领域 的实时操作系统,如w i n d r i v e r 公司的v x w o r k s , i s i 的 p s o s , q n x 系统软件公司的 q n x , a t i 的n u c l e u s 等;另一类是面向消费电子产品的非实时操作系统,这类产品 包括个人数字助理 ( p d a )、移动电话、机顶盒、电子书、we b p h o n e 等。在这类操 作系统中,以p a l m o s 和w i n d o w s c e 为代表。 2 . 1 . 1非实时操作系统 早期的嵌入式系统中没有操作系统的概念,程序员编写嵌入式程序通常直接面 对裸机及裸设备。在这种情况下,通常把嵌入式程序分成两部分,即前台程序和后 台程序。前台程序通过中断来处理事件,其结构一般为无限循环;后台程序则掌管 整个嵌入式系统软、硬件资源的分配、管理以及任务的调度,是一个系统管理调度 程序,这就是通常所说的前后台系统 3 4 。一般情况下,后台程序也叫任务级程序, 前台程序也叫事件处理级程序。在程序运行时,后台程序检查每个任务是否具备运 行条件, 通过一定的调度算法来完成相应的操作。 对于实时性要求特别严格的操作, 通常由 中断 来完成, 仅在中 断服务 程序中 标记事件的发生, 不再 做任何工作就退出 中断,经过后台程序的调度,转由前台程序完成事件的处理。这样就不会造成在中 断服务程序中处理费时的事件而影响后续的其他中断。 实际上,前后台系统的实时性比预计的要差。这是因为前后台系统认为所有的 任务具有相同的优先级别,即所有任务都是平等的,而且任务的执行又是通过先进 先出队列 ( f i f o ) 排队, 因而那些实时性要求高的任务不可能立刻得到处理。 另外, 由于前台程序是一个无限循环的结构,一旦在这个循环体中正在处理的任务崩溃, 整个任务队列中的其他任务就得不到机会被处理,从而造成整个系统的崩溃。但是 由于这类系统结构简单,几乎不需要r a m / r o m的额外开销,因而在简单的嵌入式 应用中被广泛使用。 2 . 1 . 2实时操作系统 实时系统是指能在确定的时间内执行其功能并对外部的异步事件做出响应的计 算机系统3 5 。 其操作的正确性不仅依赖于逻辑设计的正确程度, 而且与这些操作进 行的时间有关。“ 在确定的时间内”是该定义的核心。也就是说,实时系统是对响 应时间有严格要求的。 实时系统对逻辑和时序的要求非常严格,如果逻辑或时序出现偏差将会引起严 重的后果。实时系统有两种类型:软实时系统和硬实时系统。软实时系统仅要求事 华北电力大学( 北京) 硕士学位论文 件响应是实时的,并不要求限定某一任务必须在多长时间内完成:而在硬实时系统 中,不仅要求任务响应要实时,而且要求在规定的时间内完成事件的处理。通常, 大多数实时系统是两者的结合。实时应用软件的设计一般比非实时应用软件的设计 困难。实时系统的技术关键是如何保证系统的实时性。 实时多任务操作系统是指具有实时性、能支持实时控制系统工作的多任务的操 作系统。其首要任务是调度一切可利用的资源完成实时控制任务,其次才着眼于提 高计算机系统的使用效率,它的一个重要的特点是要满足对时间的限制和要求。实 时操作系统具有如下功能:任务管理 ( 多任务和基于优先级的任务调度)、任务间 同步和通信 ( 信号量和邮箱等)、存储器优化管理 ( 含r o m的管理)、实时时钟服 务、中断管理服务。实时操作系统具有如下特点: 规模小,中断被屏蔽的时间很短, 中断处理时间短,任务切换很快13 6 1 实时操作系统可分为可抢占型和不可抢占型两类。 对于基于优先级的系统而言, 可抢占型实时操作系统是指内核可以抢占正在运行任务的c p u 使用权并将使用权交 给进入就绪态的优先级更高的任务,是内核抢了c p u 让别的任务运行。不可抢占型 实时操作系统的内核使用某种算法决定了让某个任务运行后,就把c p u 的控制权完 全交给了该任务,直到它主动将c p u 控制权还回来。中断由中断服务程序来处理, 可以激活一个休眠态的任务,使之进入就绪态;而这个进入就绪态的任务还不能运 行,一直要等到当前运行的任务主动交出c p u 的控制权。使用这种实时操作系统的 实时性比不使用实时操作系统的系统性能好,其实时性取决于最长任务的执行时 间 。 不 可 抢占 型 实 时 操 作 系 统 的 缺 点 也 恰 恰 是 这 一 点 , 如 果 最 长 任 务 的 执 行 时 间 不 能确定,系统的实时性就不能确定。 可抢占型实时操作系统的实时性好,优先级高的任务只要具备了运行的条件, 或者说进入了就绪态,就可以立即运行。也就是说,除了优先级最高的任务,其他 任务在运行过程中都可能随时被比它优先级更高的任务抢占c p u ,让后者运行。通 过这种方式的任务调度保证了系统的实时性,但是,如果任务之间抢占c p u 控制权 处理不好,会产生系统崩溃、死机等严重后果。 2 .2操作系统的基本概念 2 .2 . 1任务 实时 操作系统( r e a l - t i m e o p e r a t i o n s y s t e m , r t o s ) 任务的 概念与通常所说的 通 用计算机操作系统的任务概念不同3 7 1 。通用操作系统的任务是指提交给计算机的 一项工作,一个任务可以包括多个进程,而一个进程又可以包括多个线程。r t o s 的任务是由计算机所执行的一项活动,也就是一段程序,该程序可以认为c p u 完全 只属于该程序自己。它大致等同于分时操作系统中的进程 ( p r o c e s s )的概念。实时 华北电力大学( 北京) 硕士学位论文 应用程序的设计过程包括如何把问题划分成多个任务,每个任务都是整个应用的某 一部分,它包括一段程序和与这个程序有关的数据及计算机资源 ( 有它自己的一套 c p u 寄存器和堆栈空间等)。 系统中的一个任务可以处于各种状态,最基本的状态有四种:运行状态 ( e x e c u t i n g ) , 就绪 状态 ( r e a d y ) , 等 待 状态 ( w a i t i n g ) , 等 待 状 态 通常 又 称为 挂起状态 ( s u s p e n d ) 和休眠状态 ( d o r m a n t )。如图2 - 1显示了在一个任务中这几 种状态之间的关系。 、里了 、 、 fi 砂 沙 , 尝 , 、 中断 、 一 _ 尸 沪 沪 矛 图2 - ;一个任务可能的状态迁移图 ( 钓 休 眠, 一 个 休 眠 的 任 务 是 指 没 有 被 初 始 化 的 未 被 创 建的 任务 , 或 任 务 的 执 行 被终止的任务 ( 任务删除),也可以认为是系统中不存在了的任务。操作系统一般 不为处于休眠状态的任务分配t c b 。任务在它们被创建之前处于休眠状态。当它们 被删除后,又重新回到休眠状态。可以说休眠状态是一个任务的起点和终点。 ( 2 ) 运行 处于运行状态的任务拥有c p u 控制权并正在执行。任何时刻都只有一 个任务处于运行状态。处于运行状态的任务可以被中断打断,当中断发生时,转向 中断处理程序 ( i s r ),原来正在运行的任务暂时不能运行,就进入了中断状态。 ( 3 ) 就绪 就绪状态的任务是指运行的一切条件都准备好,只要获得了c p u 后马 上就能运行的任务。例如,刚被创建的任务就处于就绪状态。但是在可抢占式调度 策略下, 就绪态的任务要成为运行态, 就必须比所有处于就绪态的任务的优先级高。 ( 4 ) 等待 任务发生阻塞,被移到任务等待队列,等待系统实时事件的发生从而 被唤醒,转为就绪或运行。 2 . 2 . 2互斥 实现任务间通信最简便的方法是使用共享数据结构。特别是当所有的任务都在 一个单一地址空间下,能使用全程变量、指针、缓冲区、链表、循环缓冲区等,使 用共享数据结构通信就更为容易。虽然共享数据区的方法简化了任务间的信息交 互,但是必须保证每个任务在处理共享数据时的排它性,以避免竞争和多任务以不 可预料次序访问数据带来的破坏。 华北电力大学( 北京) 硕士学位论文 两个或多个任务访问某些共享数据,其最后的执行结果取决于任务运行的精确 时序,这称为竞争条件 ( r a c e c o n d i t i o n s )。调试包含有竞争条件的程序是一件很头 痛的事情,大多数情况的运行结果都很好,但在极少数情况下会发生一些任务运行 时序带来的无法解释的奇怪现象。实际上凡是涉及到共享内存、共享文件,以及其 它任何共享资源的情况都可能引发类似的错误。要避免这类错误,需要以某种手段 确保当一个任务使用一个共享资源时,其它任务不能做同样的操作,这种手段就是 互斥 ( m u t u a l e x c l u s i o n )。 避免竞争条件的问 题也可以 用一种抽象的方式进行描述,把对共享资源进行访 问 的 程 序片 段 称 作临 界 区 c r it i c a l r e g io n ) 或临 界 段( c r i t i c a l s e c t i o n ) c s l o 如果 能 够适当安排使多个任务不可能同时处于临界区,就可以避免竞争条件。尽管这样可 以防止竞争条件,但它还不能保证使用共享资源的并发任务能够正确和高效地进行 操作。对于一个好的解决方案,需要满足以下四个条件:任何两个任务不能同时处 于临界区:不应对c p u 的速度和数目 作任何假设;临界区外的任务不得阻塞其它任 务;不得使任务在临界区外无休止地等待。 在单处理器环境下,多任务并发执行,实际上它们并不重叠,而是交替执行。 与共享资源打交道时,使之满足互斥条件最一般的方法有:关中断、使用测试并置 位指令、禁止做任务切换或使用信号量等。 2 , 2 3同步 如果各个任务是独立运行的, 则它们之间就不存在in 步问题, 但在实时系统中, 通常情况下几个任务总是协同工作的,需要在确定的时间里执行各自的功能,这样 就产生了同步问题。 对于单个的 任务而言, 所谓同 步就是使它能在指定的时间 执行13 9 1 a 实时 操作系 统都提供时钟功能,一个任务可以通过系统调用来使自己挂起一段时间或者挂起到 某一指定的时刻来实现所谓的单任务下的同步。 但通常所谓的任务同步, 主要是指两个或两个以上的任务需要协调执行的情况。 实现同步主要有两种方式:信号量和事件,本软件模块采用信号量的方式来实现m 步。 利用信号量使某任务与中断服务程序同步 ( 或者是与另一个任务同步,这两个 任务间没有数据交换)。与实现互斥功能的信号量 ( 类似于一把钥匙)不同,完成 同步功能的信号量类似于通行标志。 同步可以分为单向同步 ( u n i l a t e r a l r e n d e z v o u s )和双向同步 ( b i l a t e r a l r e n d e z v o u s )。例如,一个任务做1 1 0 操作,然后等待信号回应,当i / 0 操作完成时, 中断服务程序 ( 或另外一个任务)发出信号,该任务得到信号后,继续执行。这种 情况就属于单向同步。 华北电力大学( 北京) 硕士学位论文 如果内核支持计数信号量,信号量的值表示尚未得到处理的事件数。请注意, 可能会有一个以上的任务在等待同一事件的发生,则这种情况下内核会根据以下原 则之一发信号给相应的任务:发信号给等待事件发生的任务中优先级最高的任务: 发信号给最先开始等待事件发生的那个任务:根据不同的应用,发信号以标识事件 发生的中断服务或任务也可以是多个。两个任务可以使用两个信号量同步它们的行 为, 这称为双向同步。 双向同步类似于单向同步, 只是两个任务要相互同步。 注意: 在任务与中断服务之间不能使用双向同步, 因为在中断服务中不能等待一个信号 量。 2 . 2 , 4任务间的通信 有时很需要任务间的通信和中断服务与任务间的通信,这种信息传递被称为任 务间的 通信4 0 1 。 任务间 通信主要有两种途径: 通过共享数据结构或发消息给另一个 任务。任务间的通信主要涉及通信机制的选择与实现、临界区的保护以及死锁的预 防等问题。 ( 1 ) 共享数据结构 在多任务系统中,共享内存是任务间通信最简单、最迅速的 方法。但是在实际情况下,特别是在实时操作系统环境下,高优先级任务与低优先 级任务共享同一块内存时,经常会造成共享数据的冲突。因此,在设计任务间的通 信时必须避免共享数据冲突。使用共享数据结构的缺点是,通常一个任务不知道共 享数据结构何时被中断服务程序或其它任务修改了,除非采取同步措施,或者它以 查询方式周期性查询该变量的值。如果要避免这种情况的发生,可以考虑使用邮箱 ( m a i l b o x ) 或者 消 息队 列( m e s s a g e q u e u e ) f4 1 1 , 共享数据结构最简单的实现方式就是全局变量。使用全局变量时,必须保证每 个任务或中断服务程序独占该变量。前面己经提到中断服务中保证独占的唯一方法 就是关中断。如果两个任务共享某个全局变量,可以采用前面介绍的关中断或信号 量等方法。 如果要用共享内存实现较大数据的传送,可能需要考虑采用特殊的缓冲区数据 结构来避免共享数据冲突。 在传送与时间相关的数据时 ( 例如数据处理速度大于数据的输入速度),一般 采用 “ 乒乓”缓冲结构。它由两块缓冲区构成,通过硬件或软件来控制两个缓冲区 之间的切换。其典型应用有磁盘控制器、图形接口卡等设备。 环缓冲结构类似于f i f o 表,但它比f i f o 表易于管理。 在环缓冲结构中,并发的 输入和输出可以通过头尾指针来控制。数据从尾指针处写入,从头指针处读出。环 缓冲结构与信号量一起使用可以控制资源的并发使用。例如在访问内存、打印机等 资源时,可以将资源的请求置于尾指针指向的存储区,资源分配程序从头指针中取 出数据后按照请求分配资源。 华北电力大学( 北京) 硕士学位论文 ( 2 ) 消息邮箱 邮箱是 大多数多任务操作系统实现任务间通信的一种方式ta l l 。 它 是一块公认的内存区域,由一个集中调度者来控制各任务对这块内存区域的读写, 从 而实 现任务间 传 递数 据 的月的。 任务 可以 通过 p o s t 操 作来 写这块内 存, 或 通过 p e n d 操作来读取这块内 存的数据。 这种p e e d 操作与简单轮询邮 箱的区别在于:前者在等 待数据时处于挂起 ( s u s p e n d ) 状态, 不占 用任何c p u 资源: 后者则是占 用c p u , 不 停地检查邮箱。 邮 箱传递的 数据一般是一 个标志 ( f l a g ) 、 单个数据, 或者是指向 链 表或队列的指针。在具体实现时,数据一旦从邮箱读出来7邮箱就置成空状态。这 样, 尽 管 有多 个任 务 能 对同 一 个邮 箱 执 行 p e n d 操作, 但 只 有 一 个 任 务能 从邮 箱中 取 出数据。 在基于任务控制块 ( t c b )模型的任务管理系统中,邮箱是最容易实现的。在 这种模型中, 一般都有一个监管任务和两个列表( 任务资源列表和资源状态列表) , 任务资源列表和资源状态列表保持协调一致。例如,在表2 - 1 和表2 - 2 中,存在着的 资源有打印机及两个邮箱。打印机正在被任务1 0 0 使用,邮箱1 被任务1 0 2 使用,邮 箱2 处于空闲状态。 任务 记资源 状态 1 oo 打印机占用 1 0 2 邮箱 1占用 1 0 4 邮箱2 p e n d 表2 - 1 任务资 源列表 资源状态 使用者 打印机忙 1 0 0 邮箱 1忙 1 0 2 邮箱2空闲 无 表2 - 2资源状态列表 当 超 终 任 务 被 系 统 调 用 或 硬 件中 断 激 活 后 , 它 首 先 检 查 是 杏 有 任务 在 邮 箱 中 处 于p e n d 状态。如果邮 箱中数 据就绪就唤醒该任务。 类似地, 如果某任务已执行p o s t 操作,操作系统则确保数据置于邮箱中, 邮箱除了上 述的 p o s t 和p e n d 操作外, 并更新其状态。 还可以 有a c e 叩 t 操作。 a c e 叩 t 操作允许任务 华北电力大学( 北京) 硕士学位论文 在邮 箱数据就绪的 情况下可立即读 出数据, 否则返回 错误代码。 此 外, 在邮 箱的 p e e d 操作中还可以添加超时控制来防止死锁。-_镬 c 3 ) 消息队列 队列可以认为是由许多邮箱排列而成,im而可以由上述相同的资 源表来实现。 其操作相应 地有g p o s t 操作、 g p e n d 操作和rl a c c e p t 操作。 发 送和接收消 息 的 任 务 约 定 队 列 所 传递的 数 据 应该 是 指 针, 而 不 是 数 组 (4 3 1 。 通 常, 先 进 入消 息 队 列的消息先传递给任务,即先进先出原则 ( f i f o),有些实时内核也支持后进先出 ( l i f o )的方式. 2 . 2 . 5调度策略 任务调度就是从处于就绪状态的任务中,挑选一个任务到处理器上运行。负责 任务调度功能的内核程序称为任务调度程序或任务调度器。任何操作系统的核心和 灵魂都是它的调度程序 ( s c h e d u l e r 或d i s p a t c h e r ) 。 在设计任务调度器时, 首先要决 定选择何种调度算法,然后根据此算法来编制相应的调度程序。而调 度算法实际上 就是系统所采取的调度策略,选择调度算法时所要考虑的因素很多,如系统各类资 源的均衡使用、对用户公平并使用户满意等。 常见的调度算法有:先进先出、短任务优先、轮循调度,它们都是用于非嵌入 式系统的简单调度算法。目 前,大多数实时内核都采用基于优先级 ( p r i o r i t y )的调 度算法。 2 . 3 z j. 1 编程基础 工作原理 s c o k e t 接口是一种网络上跨平台的应用程序进程间通信机制,是加州大学 b e r k e l e y 分校在b e r k e l e y u n i x 操作系统下为t c p / i p 网络通信开发的一个应用程序接 口( a p i ) , 称 为 b s d s o c k e t s 4 4 1 。 由 于 许 多 计 算 机 厂 商, 尤 其是 s u n , m ic r o s y s t e m , t e k t r o n i x 以 及d i g i t a l 这样的 工作站制造商, 都采用了 b e r k e l e y u n i x , 于是在许多 机 器上都可以使用s o c k e t 接口。这样,s o c k e t 接口就被广泛采用,以至于成为事实上 的标准。s o c k e t 是应用程序进程间通信的端点,计算机的两个进程可以分别建立自 己的s o c k e t 。经过连接后,应用程序的两个进程间可以相互交换数据。在应用开发 中就像

温馨提示

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

评论

0/150

提交评论