




已阅读5页,还剩76页未读, 继续免费阅读
(电力系统及其自动化专业论文)变电站嵌入式通信及其接口的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华北电力大学工程硕士学位论文 摘要 通信技术是厂站自 动化技术发展的核心环节,但总的来讲,国内在这方面还比 较落后。本文围绕变电站自 动化通信体系进行了研究,并参与实施了部分研究开发 工作,论文选题具有很好的实用价值。 本文在大量比较国内外同类技术、深入研究相关技术成果的基础上,提出了基 于嵌入式技术的通信方案:提出了基于 p o w e r p c微处理器、v x w o r k s 实时多任务操 作系统下的通信解决方案;开发了嵌入式远动平台下的相关程序,在研究开发过程 中,进行了大量试验和测试,其结果是可靠的,代码正确。 关键词:变电站综合自动化系统,嵌入式操作系统,远动, 建模 abs tract c o m m u n i c a t i o n t e c h n o l o g y i s t h e k e y f a c t o r o f t h e a u t o m a t i c t e c h n i c a l d e v e l o p m e n t i n s u b s t a t i o n a u t o m a t i o n s y s t e m , b u t g e n e r a l l y s p e a k i n g , i t i s s t i l l r e l a t i v e l y b a c k w a r d in t h i s r e s p e c t i n o u r c o u n t r y . t h i s a r t i c l e h a s c a r r y o n r e s e a r c h a r o u n d t h e a u t o m a t i c c o m m u n i c a t i o n s y s t e m o f t h e s u b s t a t i o n a u t o m a t i o n s y s t e m , h a s p a rt i c i p a t e d i n i m p l e m e n t i n g s o m e r e s e a r c h a n d d e v e l o p m e n t , t h e t h e s i s s e l e c t e d h a s v e ry g o o d p r a c t i c a l v a l u e . a ft e r f u rt h e r i n v e s t i g a t i n g g e n e r o u s r e l a t i v e ly d o m e s t i c a n d in t e rn a t i o n a l s i m i l a r t e c h n o l o g y , a n d o n t h e f o u n d a t i o n s o f r e l e v a n t t e c h n o l o g i c a l a c h i e v e m e n t , t h i s a rt i c l e h a v e p r o p o s e d t h e s c h e m e o f c o m m u n i c a t i o n b a s e d o n e m b e d d e d t e c h n o l o g y ; h a v e p r o p o s e d t h e c o m m u n i c a t i o n s o l u t i o n u n d e r t h e o p e r a t i n g s y s t e m o f v x w o r k s a n d p o w e r p c m i c r o p r o c e s s o r ; h a s d e v e l o p e d t h e r e l e v a n t p r o c e d u r e s u n d e r t h e e m b e d d e d p l a t f o r m , i n t h e c o u r s e o f r e s e a r c h i n g a n d d e v e l o p i n g , h a v i n g c a r r i e d o n a l a r g e n u m b e r o f t e s t s a n d t e s t e d , i t s r e s u l t i s r e l i a b l e , t h e c o d e i s c o r r e c t . l i j i h u a ( e l e c t r i c p o w e r a n d i t s a u t o m a t i o n ) d i r e c t e d b y p r o f . ; l i u w a n s h u n k e y wo r d s : s u b s t a t i o n a u t o m a t i o n s y s t e m , e m b e d d e d o p e r a t i o n s y s t e m, r e m o t e t e r mi n a l u n i t , u ml 二 士 二0口 尸明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究l作 所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果 不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个 人和集体,均己在文中以明确方式标明。 特此申明。 签名:il u 华日期 : 21 0 01 . l. ?, o 关于学位论文使用授权的说明 本人完全了 解华北电力大学有关保留、使用学位论文的 规定,即:学校有权保管、 并向 有关 部门 送交学位论文的原件与复印件; 学校可以 采用影印、 缩印或其它复制手段复制并保存学 位论文; 学校可允许学位论文被查阅或借阅:学校可以学术交流为目 的, 复制赠送和交换学 位论文;同意学校可以用不同方式在不同媒体上发表、传播学位论文的全部或部分内 容。 作 者 签 、 : 寿。 今 导 师 签 名 : 尸 7 夕 自墓 日期:,叮 . . zd日期:; -在实时信息处理系统中,用户通过终端设备向系统提出服务请求,系统完成服 务后通过终端回答用户。 实时系统的典型应用一一嵌入式应用:嵌入式应用就是一种计算机部件内装于 专用设备/ 系统的应用。 大多数实时系统都是嵌入式应用 ( e m b e d d e d a p p l i c a t i o n s ) 系统。嵌入式计算机是一种智能部件内装于专用设备/ 系统的高速计算机。它的主 要功能是作为一个大型工程系统中的信息处理部件,用来控制专门的硬件设备的。 这种嵌入式系统自动化程度高、威力大、反应速度快。用户不需知道装置内计算机 的存在, 一般不能被用户编程, 它有一些专用的工 / 0 设备, 对用户的接口是专用的。 嵌入式计算机广泛应用于办公自动化、消费、通信、汽车、工业和军事领域, 其中,办公自动化、消费和通信领域占据的份额最大,约9 0 % 以上。 2 . 1 . 2嵌入式实时系统软件的基本特征和分类 不难看出,与一般的计算机相比,嵌入式实时应用系统是具有高速处理、配置 专一、 结构紧凑和坚固可靠等特点的实时系统, 相应的软件系统应是一种别有特色、 要求更高的实时软件。对这种实时软件的主要要求是: ( 1 )实时性。实时软件对外部事件做出反应的时间必须要快。 ( 2 )有处理异步并发事件的能力。 ( 3 )快速启动、并有出错处理和自动复位功能。 ( 4 )嵌入式实时软件是应用程序和操作系统两种软件的一体化程序。 ( 5 )嵌入式实时软件的开发需要独立的开发平台。 开发平台称为宿主机,应用系统称为目标机。宿主机可以是和目标机相同或者 不相同的机型。这种不同机型的开发平台又称作交叉式开发系统。显然,在这种独 立的实时软件开发系统上,应配备完整的实时软件开发的工具,如高级语言、在线 华北电力大学工程硕士学位论文 第二章 嵌入式实时操作系统v x w o r k s 简介 2 . 1嵌入式实时操作系统 ( r t o s ) 2 . 11定义和应用 实时 2,表示 “ 立即、及时” ,实时系统就是对外来事件在限定时间内能做出 反应的系统。限定时间的范围很广,可以从微秒级 ( 如信号处理)到分级 如联机 查询系统) 。实时控制系统和实时信息处理系统统称为实时系统。在实时控制系统 中, 计算机通过特定的外围设备与被控对象发生联系, 被控对象的信息经过加丁后, 通过显示屏向控制人员显示或通过外设向被控对象发出指示,实现对被控对象的控 制;在实时信息处理系统中,用户通过终端设备向系统提出服务请求,系统完成服 务后通过终端回答用户。 实时系统的典型应用一一嵌入式应用:嵌入式应用就是一种计算机部件内装于 专用设备/ 系统的应用。 大多数实时系统都是嵌入式应用 ( e m b e d d e d a p p l i c a t i o n s ) 系统。嵌入式计算机是一种智能部件内装于专用设备/ 系统的高速计算机。它的主 要功能是作为一个大型工程系统中的信息处理部件,用来控制专门的硬件设备的。 这种嵌入式系统自动化程度高、威力大、反应速度快。用户不需知道装置内计算机 的存在, 一般不能被用户编程, 它有一些专用的工 / 0 设备, 对用户的接口是专用的。 嵌入式计算机广泛应用于办公自动化、消费、通信、汽车、工业和军事领域, 其中,办公自动化、消费和通信领域占据的份额最大,约9 0 % 以上。 2 . 1 . 2嵌入式实时系统软件的基本特征和分类 不难看出,与一般的计算机相比,嵌入式实时应用系统是具有高速处理、配置 专一、 结构紧凑和坚固可靠等特点的实时系统, 相应的软件系统应是一种别有特色、 要求更高的实时软件。对这种实时软件的主要要求是: ( 1 )实时性。实时软件对外部事件做出反应的时间必须要快。 ( 2 )有处理异步并发事件的能力。 ( 3 )快速启动、并有出错处理和自动复位功能。 ( 4 )嵌入式实时软件是应用程序和操作系统两种软件的一体化程序。 ( 5 )嵌入式实时软件的开发需要独立的开发平台。 开发平台称为宿主机,应用系统称为目标机。宿主机可以是和目标机相同或者 不相同的机型。这种不同机型的开发平台又称作交叉式开发系统。显然,在这种独 立的实时软件开发系统上,应配备完整的实时软件开发的工具,如高级语言、在线 华北电力大学工程硕士学位论文 调试器和在线仿真器等。因此,嵌入式实时软件开发过程较为复杂。 嵌入式实时系统的分类: 主要介绍按软件结构来分, 可将嵌入式系统分为以下儿 f 中 : 1 、单线程程序 ( s i n g l e - t h r e a d e d p r o g r a m ) ;也称为顺序程序,分为两种:a 、循 环轮循系统:是最简单的软件结构,程序依次检查系统的每一个输入条件,一旦条 件成立就进行相应的处理。它适合于慢速和非常快速的简单系统。b 、有限状态机 2 ,事件驱动系统 ( e v e n t - d r i v e n s y s t e m ) 事件驱动系统是能对外部事件直接响应的系统。它包括前后台、实时多任务、 多处理器三个系统。是嵌入式系统的主要形式。 ( 1 )前后台系统 ( f o r e g r o u n d / b a c k g r o u n d ) 又叫中断驱动系统, 后台是一个 循环轮循系统,一直运行,前台是由一些中断处理过程组成的。当有一 前台事件 ( 外部事件)发生时,引起中断,中断后台运行,进行前台处 理,处理完成后又回到后台 ( 通常又称主程序) 。 这种系统需要考虑的是中断的现场保护和恢复、中断嵌套、中断处理过 程与主程序的协调 ( 共享资源)问题。系统的性能主要由中断延迟时间, 响应时间和恢复时间来刻画。 中断延迟时间是指从中断发生到系统获知中断,并且开始执行中断服务 程序所需要的最大滞后时间。 ( 2 ) 实时多任务 ( m u l t i t a s k i n g 或m u l t i - t h r e a d p r o g r o m m o d e l )系统,如 下图 1 所示。 m a i n 2 ( ) i s r 1 i s r 2 i s r n 图1 实时多任务系统示意图 对于一个复杂的嵌入式实时系统来说,当采用中断处理程序加一个后台主程序 这种软件结构难以实时的、准确的、可靠的完成时,或存在一些互不相关的过程需 要在一台计算机中同时处理时,就需要采用实时多任务系统。 其中,i s r 即中断服务例程 ( i n t e r r u p t s e r v i c e r o u t i n e ) , 其主要特点是: 华北电力大学工程硕士学位论文 1 )多个顺序执行的程序并行运行。 2 )宏观上看,所有程序同时运行,每个程序运行在自己独立的c p ul 。 3 )实际上,不同的程序是共享同一个c p u 和其他硬件。因此,需要 r t o s 来对 这些共享的设备和数据进行管理。 4 )每个程序都被编制成无限循环的程序, 等待特定的输入, 执行相应的任务等。 5 )这种程序模型将系统分成相对简单的、相互合作的模块。 其主要优点是: 1 )将复杂的系统分解为相对独立的多个线程,达到 “ 分而治之”的目的。 2 )降低系统的复杂性。 3 )保证系统的实时性。 4 )系统的模块化好,提高系统的可维护性。 缺点是: 1 )需要采用一些新的软件设计方法。 2 )需要增加功能:线程间的协调、同步和通信功能。 3 )需要对每一个共享资源互斥。 4 )导致线程间的竞争。 5 )需要使用 r t o s , r t o s 要增加系统的开销。 实时多任务系统实际上是由多个任务、多个中断处理过程、实时操作系统组成 的有机的整体。每个任务是顺序执行的,并行性通过操作系统来完成,任务间的相 互通信和同步也需要操作系统的支持。 r t o s 的要求是: 1 )足够的快 ( 上下文切换和系统调用等) 。 2 )可确定的性能。 3 )任务调度机制是基于优先级的。 4 )最小的中断延迟。 5 )可伸缩、可配置的体系结构。 6 )可靠、健壮。 实时多任务系统的实现必须有实时多任务操作系统的支持,操作系统主要完成 任务切换,任务调度,任务间通信、同步、互斥,实时时钟管理,中断管理。 ( 3 ) 多处理机系统。 当有些工作用单台计算机来处理难以完成时, 就需要增加另 外的计算机,这就是多处理机系统的由来。在单处理机系统中,多个任务在宏观上 看是并发的,但在微观上看实际是顺序执行的;在多处理机系统中,多个任务可以 分别在不同的处理机上执行,宏观上看是并发的,微观上看也是并发的。前者称为 伪并发性,后者称为真并发性。 华北电力大学工程硕士学位论文 2 . 2 v x w o r k s 任务与任务编程接口 2 . 2 . 1 v x w o r k s 任务 多任务 3 :软件设计时通常将应用划分为独立的、相互作用的程序集合。对 于每一个程序,当其执行时,称之为任务。v x w o r k s的任务可以直接或共享访问大 多数系统资源,同时拥有足够的分离的上下文来维护各自的控制线程。这些任务共 同合作来实现整个系统的功能。 v x w o r k s 实时内核w i n d 提供基本的多任务环境。 在单 c p u 系统中,多任务构造出多个线程并发执行的假象。事实上,系统根据 一个调度算法,将 w i n d内核插入到这些任务中执行。每一个明显独立的程序称为 一 个任务。每个任务都有自己的上下文 ( 指 c p u环境、系统资源等) 。任务由系统 内核调度执行。在上下文交换时,任务的上下文保存在任务控制块 ( t c b )中。一 个任务的上下文包括以下内容: 冷 任务的执行点,也就是任务的程序计数器。 令 c p u 寄存器和浮点计数器。 令 动态变量和函数调用的堆栈。 令 标准输入输出和错误的 工 / 0 分配。 个 一个延时定时器。 个 一个时间片定时器。 令 内核控制结构。 命 信一号处理器。 个 调试和性能监视器。 与w i n d o w s系统不同,v x w o r k s 操作系统的内存是线性的,所有代码执行在单 一的公共地址空间内,因而内存地址空间不属于任务上下文。 任务状态转换:任务状态反映任务当前在系统中所处的情形。内核负责维护系 统中所有任务的当前状态。一个任务从一个状态转变为另一个状态是内核调用的结 果。 w i n d内核状态说明如下表 1 : 表 1 w i n d 内核状态 状态符号描述 就绪 ( r e a d y)处于这种状态的任务除了等待c p u 外,不需要等待其他资源 阻塞 ( p e n d )由于某些资源不可用而阻塞的任务状 态 华北电力大学工程硕士学位论文 2 . 2 v x w o r k s 任务与任务编程接口 2 . 2 . 1 v x w o r k s 任务 多任务 3 :软件设计时通常将应用划分为独立的、相互作用的程序集合。对 于每一个程序,当其执行时,称之为任务。v x w o r k s的任务可以直接或共享访问大 多数系统资源,同时拥有足够的分离的上下文来维护各自的控制线程。这些任务共 同合作来实现整个系统的功能。 v x w o r k s 实时内核w i n d 提供基本的多任务环境。 在单 c p u 系统中,多任务构造出多个线程并发执行的假象。事实上,系统根据 一个调度算法,将 w i n d内核插入到这些任务中执行。每一个明显独立的程序称为 一 个任务。每个任务都有自己的上下文 ( 指 c p u环境、系统资源等) 。任务由系统 内核调度执行。在上下文交换时,任务的上下文保存在任务控制块 ( t c b )中。一 个任务的上下文包括以下内容: 冷 任务的执行点,也就是任务的程序计数器。 令 c p u 寄存器和浮点计数器。 令 动态变量和函数调用的堆栈。 令 标准输入输出和错误的 工 / 0 分配。 个 一个延时定时器。 个 一个时间片定时器。 令 内核控制结构。 命 信一号处理器。 个 调试和性能监视器。 与w i n d o w s系统不同,v x w o r k s 操作系统的内存是线性的,所有代码执行在单 一的公共地址空间内,因而内存地址空间不属于任务上下文。 任务状态转换:任务状态反映任务当前在系统中所处的情形。内核负责维护系 统中所有任务的当前状态。一个任务从一个状态转变为另一个状态是内核调用的结 果。 w i n d内核状态说明如下表 1 : 表 1 w i n d 内核状态 状态符号描述 就绪 ( r e a d y)处于这种状态的任务除了等待c p u 外,不需要等待其他资源 阻塞 ( p e n d )由于某些资源不可用而阻塞的任务状 态 华北电力大学工程硕士学位论文 睡眠 ( d e l a y)处于睡眠的任务状态 挂起 ( s us p e nd)这种任务状态不能执行。主要用于调 试。不会约束状态转换,仅仅约束任 务的执行,因此, p e n d e d - s u s p e n d 任 务仍然可以 解锁, d e l a y e d - s u s p e n d e d 任务仍然可以唤醒 de l ay十 s p e nd+ s p e nd+ t p e nd+ s + t 既处于睡眠又处于挂起的任务状态 既处于阻塞又处于挂起的任务状态 带有超时值处于阻塞的任务状态 s t a t e + t 带有超时值处于阻塞又处于挂起的任 务状态 处于s t a t e 带有一个继承优先级的任 务状态 v x w o r k s 任务状态转换图 2 如下所示: 图2 v x w o r k s 任务状态转换图 w i n d 任务调度:调度针对多任务而言,是根据一定的约束规则,将分配给符合 条件的任务使用,这些约束规则就是所谓的一个调度算法。多任务系统使用多条算 法来给处于就绪态 ( r e a d y )的任务分配 c p u . w i n d内核默认采用基于优先级的抢 占式调度 ( p r i o r i t y - b a s e p r e e m p t i v e s c h e d u l i n g )算法,同时,还可以选用轮 转 ( r o u n d - r o b i n ) 调度算法。 ( 1 ) 基于优先级的抢占式任务调度: 采用这种调度算法,系统中的每个任务都拥有一个优先级,任一时刻,内核将 c p u分配给处于就绪态的优先级最高的任务运行。之所以称其为抢占,是因为如果 7 华北电力大学工程硕士学位论文 系统内核一旦发现一个优先级比当前正在运行的任务优先级更高的任务转变为就 绪态时,内核立即保存当前任务的上下文,当前任务状态变为阻塞,插入到相应队 列,并且切换到这个高优先级任务的上下文执行。 w i n d 内核有 2 5 6 个优先级,编号0 - 2 5 5 ,优先级0 最高,2 5 5 最低。任务的优 先级在创建时指定。然而,当任务执行时,它可以调用 t a s k p r i o r i t y s e t() 改变 自己的优先级。 ( 2 ) 轮转调度: 基于优先级的抢占式调度可以与轮转调度相结合。 轮转调度算法试图让优先级相同的、处于就绪的任务公平的分享使用 c p u 。它 是使用时间片来实现这种相同优先级任务c p u公平分配的。一组任务中的每个任务 执行一个预先确定的时间段,称为一个时间片;然后另一个任务执行相等的一个时 间片,依次进行。这种分配保证一个优先级组中,在所有任务都得到一个时间片之 前,不会有任务得到第二个时间片。这种调度算法特别适用于通用操作系统,如 w i n d o w s 操作系统。 在v x w o r k s 系统中,可以调用函数 k e r n e l t i m e s l i c e( )来使用轮转调度,其 参数是时间片的长度。 时间片是每个任务在放弃c p u 给另一个相同优先级任务之前, 系统允许它运行的时间长度。 更确切的说,如果使用轮转调度算法,系统中的每个任务都有一个运行时间计 数器。这个计数器随系统时钟增加而增加。当达到规定的时间片的值时,这个计数 器清零,调度器将这个任务放到相应任务优先级队列的尾部,将 c p u 交给队头的任 务执行。新加入一个优先级组队列的任务将放到队列的尾部,计数器初始化为 0 . 如果任务在它的时间片中被高优先级的任务抢占,调度器保存它的运行时间计 数器,当它再一次符合执行条件的时候,调度器恢复运行时间计数器。 ( 3 ) 抢占上锁: 实际应用中,并不是每次抢占都是合理的,非期待性的抢占可能会导致系统出 现意料不到的情况。因此,操作系统应当提供避免抢占的机制。 w i n d的调度器提供了允许或禁止调度的功能调用: t a s k l o c k ( ) t a s k u n l o c k( ) 当一个任务调用 t a s k l o c k ( ) ,将禁止调度器抢占调度, 那么当该任务执行时, 将不会发生基于优先级的抢占式调度。调用 t a s k u n l o c k ( )将恢复抢占调度。需要 注意的是,抢占上锁只能防止任务上下文交换,但是不能禁止中断。抢占上锁主要 用来实现互斥。 华北电力大学工程硕士学位论文 2 . 2 - 2 v x w o r k s 任务编程接口 任务控制函数 4 : v x w o r k s 函数库 t a s k l i b 包含了任务创建、删除、启动和停 止等功能的内核函数。 创建和启动任务: i n t t a s k s p a w n ( n a m e , p r i o r i t y , o p t i o n s , s t a c k s i z e , e n t r p t , a r g 。二, a r g 9 ) 参数说明如下表2 : 表2任务创建函数参数表 nam e字符串任务名称 p r i o r i t y 任务优先级,从0( 最高)到2 5 5( 最 低 ) o p t i o n s 任务选项指定任务是否使用浮点,是 否断点有效等 s t a c k s i z e任务栈大小, 创建 后就不再 变化, 可 以用 b r o w s e r 监测栈的使用 e n t r p t任务将执行的函数 a r g 0 . . . a r g 9 传给 e n t r p t 函数 1 0 个 4 字节参数, 将 参数强制转换为整数类型避免编译错 误 t a s k s p a w n 函数返回任务标识 i d ,其他 t a s k l i b函数使标识 i d 来引用任务。 任务 工 d 其实是指向该任务控制块 t c b 的指针。 e n t r p t 是创建任务的主函数调用。 任务延时:s t a t u s t a s k d e l a y ( t i c k s ) 任务调用 t a s k d e l a y函数使自己退出运行,进行延时状态。延长长度由t i c k s 参数指定。 任务功能扩展:简单的内核接口和互斥方法使内核功能扩展相当容易。在某些 情况下,应用可以利用内核钩子 ( h o o k )函数来实现特定的扩展。 为了不修改内核而能够向系统增加额外的任务相关的功能, w i n d 提供了任务创 建、 切换和删除的钩子函数。 在任务创建、 切换和删除时, 可以调用扩展功能函数 任务控制块 t c b 有空闲区保留,可用于实现应用扩展。 2 . 3任务之间的通信机制 v x w o r k s中任务 丁 a s k )之间的通信机制,包括信号量、管道、消息队列、共 享内存以及s o c k e t o 华北电力大学工程硕士学位论文 2 . 2 - 2 v x w o r k s 任务编程接口 任务控制函数 4 : v x w o r k s 函数库 t a s k l i b 包含了任务创建、删除、启动和停 止等功能的内核函数。 创建和启动任务: i n t t a s k s p a w n ( n a m e , p r i o r i t y , o p t i o n s , s t a c k s i z e , e n t r p t , a r g 。二, a r g 9 ) 参数说明如下表2 : 表2任务创建函数参数表 nam e字符串任务名称 p r i o r i t y 任务优先级,从0( 最高)到2 5 5( 最 低 ) o p t i o n s 任务选项指定任务是否使用浮点,是 否断点有效等 s t a c k s i z e任务栈大小, 创建 后就不再 变化, 可 以用 b r o w s e r 监测栈的使用 e n t r p t任务将执行的函数 a r g 0 . . . a r g 9 传给 e n t r p t 函数 1 0 个 4 字节参数, 将 参数强制转换为整数类型避免编译错 误 t a s k s p a w n 函数返回任务标识 i d ,其他 t a s k l i b函数使标识 i d 来引用任务。 任务 工 d 其实是指向该任务控制块 t c b 的指针。 e n t r p t 是创建任务的主函数调用。 任务延时:s t a t u s t a s k d e l a y ( t i c k s ) 任务调用 t a s k d e l a y函数使自己退出运行,进行延时状态。延长长度由t i c k s 参数指定。 任务功能扩展:简单的内核接口和互斥方法使内核功能扩展相当容易。在某些 情况下,应用可以利用内核钩子 ( h o o k )函数来实现特定的扩展。 为了不修改内核而能够向系统增加额外的任务相关的功能, w i n d 提供了任务创 建、 切换和删除的钩子函数。 在任务创建、 切换和删除时, 可以调用扩展功能函数 任务控制块 t c b 有空闲区保留,可用于实现应用扩展。 2 . 3任务之间的通信机制 v x w o r k s中任务 丁 a s k )之间的通信机制,包括信号量、管道、消息队列、共 享内存以及s o c k e t o 华北电力大学工程硕士学位论文 本文所介绍的通信机制如信号量、 管道、 消息队列和共享内存机制均是针对单c p u 系统 2 1 0 2 . 3 . 1信号量 v x w o r k s 下的信号量经过优化后成为任务之间通信最快的机制。信号量机制可 以用于互斥临界区以及任务之间的同步。 v x w o r k s中的信号量有三种,即b i n a r y , m u t u a l e x c l u s i o n 和c o u n t i n g 。在 等待一个信号量时,任务可以有按优先级排队以及按 f 工 f o 排队这两种方式。 下面分别介绍这三种信号量: ( 4 ) b i n a r y 信号量:用于互斥临界区的访问和任务之间的同步。 ( 5 ) m u t u a l e x c l u s i o n 信号量:属于b i n a r y 信号量,但提供了优先级继 承、安全删除以及递归处理的特性。 ( 6 ) c o u n t i n g 信号量: 它与b i n a r y 信号量的最大不同是, 它不是互斥的, 它可以允许多个任务同时在临界区内。 v x w o r k s 下的信号量机制 ( m u t u a l e x c l u s i o n 模式的信号量)解决了优先级逆 转的问题。所谓的优先级逆转是指低优先级的任务拥有高优先级的任务所需的资 源,从而阻塞了高优先级任务的执行。v x w o r k s使用优先级继承的方法解决了这个 问题 。 2 . 3 . 2管道 在v x w o r k s中,管道是 d r i v e r p i p e d r v 所管理的虚拟 1 / 0 设备,因此我们可 以使用标准的 1 / 0 过程 ( o p e n r e a d w r i t e i o c t l ) 来操作它。 它的实现与一般 u n i x 系统有所不同,它将一个消息队列与管道相关联,解决了传统管道中的无界字节流 的问题。 管道提供了消息队列机制所没有的特征,那就是管道可以使用 s e l e c t( )调 用。用户可以使用 : e l e c t ( )来同时等待来自几个管道,网口和串行的数据,这种 模式可以简化编程。 调用管道的过程:首先,创建一个双向管道。然后用户任务可以像操作普通 1 / 0设备那样使用 。 p e n ( )打开管道进行读写。v x w o r k s 下的管道实际上是一个虚 拟设备。下面是管道的结构: s t a t u s p i p e d e v c r e a t e ( c h a r * n a m e , / * n a m e o f p i p e t o b e c r e a t e d * / i n t n m e s s a g e , / * m a x . n u m b e r o f m e s s a g e i n p i p e * / i n t n b v t e s / * s i z e o f e a c h m e s s a g e * / 华北电力大学工程硕士学位论文 本文所介绍的通信机制如信号量、 管道、 消息队列和共享内存机制均是针对单c p u 系统 2 1 0 2 . 3 . 1信号量 v x w o r k s 下的信号量经过优化后成为任务之间通信最快的机制。信号量机制可 以用于互斥临界区以及任务之间的同步。 v x w o r k s中的信号量有三种,即b i n a r y , m u t u a l e x c l u s i o n 和c o u n t i n g 。在 等待一个信号量时,任务可以有按优先级排队以及按 f 工 f o 排队这两种方式。 下面分别介绍这三种信号量: ( 4 ) b i n a r y 信号量:用于互斥临界区的访问和任务之间的同步。 ( 5 ) m u t u a l e x c l u s i o n 信号量:属于b i n a r y 信号量,但提供了优先级继 承、安全删除以及递归处理的特性。 ( 6 ) c o u n t i n g 信号量: 它与b i n a r y 信号量的最大不同是, 它不是互斥的, 它可以允许多个任务同时在临界区内。 v x w o r k s 下的信号量机制 ( m u t u a l e x c l u s i o n 模式的信号量)解决了优先级逆 转的问题。所谓的优先级逆转是指低优先级的任务拥有高优先级的任务所需的资 源,从而阻塞了高优先级任务的执行。v x w o r k s使用优先级继承的方法解决了这个 问题 。 2 . 3 . 2管道 在v x w o r k s中,管道是 d r i v e r p i p e d r v 所管理的虚拟 1 / 0 设备,因此我们可 以使用标准的 1 / 0 过程 ( o p e n r e a d w r i t e i o c t l ) 来操作它。 它的实现与一般 u n i x 系统有所不同,它将一个消息队列与管道相关联,解决了传统管道中的无界字节流 的问题。 管道提供了消息队列机制所没有的特征,那就是管道可以使用 s e l e c t( )调 用。用户可以使用 : e l e c t ( )来同时等待来自几个管道,网口和串行的数据,这种 模式可以简化编程。 调用管道的过程:首先,创建一个双向管道。然后用户任务可以像操作普通 1 / 0设备那样使用 。 p e n ( )打开管道进行读写。v x w o r k s 下的管道实际上是一个虚 拟设备。下面是管道的结构: s t a t u s p i p e d e v c r e a t e ( c h a r * n a m e , / * n a m e o f p i p e t o b e c r e a t e d * / i n t n m e s s a g e , / * m a x . n u m b e r o f m e s s a g e i n p i p e * / i n t n b v t e s / * s i z e o f e a c h m e s s a g e * / 华北电力大学工程硕士学位论文 本文所介绍的通信机制如信号量、 管道、 消息队列和共享内存机制均是针对单c p u 系统 2 1 0 2 . 3 . 1信号量 v x w o r k s 下的信号量经过优化后成为任务之间通信最快的机制。信号量机制可 以用于互斥临界区以及任务之间的同步。 v x w o r k s中的信号量有三种,即b i n a r y , m u t u a l e x c l u s i o n 和c o u n t i n g 。在 等待一个信号量时,任务可以有按优先级排队以及按 f 工 f o 排队这两种方式。 下面分别介绍这三种信号量: ( 4 ) b i n a r y 信号量:用于互斥临界区的访问和任务之间的同步。 ( 5 ) m u t u a l e x c l u s i o n 信号量:属于b i n a r y 信号量,但提供了优先级继 承、安全删除以及递归处理的特性。 ( 6 ) c o u n t i n g 信号量: 它与b i n a r y 信号量的最大不同是, 它不是互斥的, 它可以允许多个任务同时在临界区内。 v x w o r k s 下的信号量机制 ( m u t u a l e x c l u s i o n 模式的信号量)解决了优先级逆 转的问题。所谓的优先级逆转是指低优先级的任务拥有高优先级的任务所需的资 源,从而阻塞了高优先级任务的执行。v x w o r k s使用优先级继承的方法解决了这个 问题 。 2 . 3 . 2管道 在v x w o r k s中,管道是 d r i v e r p i p e d r v 所管理的虚拟 1 / 0 设备,因此我们可 以使用标准的 1 / 0 过程 ( o p e n r e a d w r i t e i o c t l ) 来操作它。 它的实现与一般 u n i x 系统有所不同,它将一个消息队列与管道相关联,解决了传统管道中的无界字节流 的问题。 管道提供了消息队列机制所没有的特征,那就是管道可以使用 s e l e c t( )调 用。用户可以使用 : e l e c t ( )来同时等待来自几个管道,网口和串行的数据,这种 模式可以简化编程。 调用管道的过程:首先,创建一个双向管道。然后用户任务可以像操作普通 1 / 0设备那样使用 。 p e n ( )打开管道进行读写。v x w o r k s 下的管道实际上是一个虚 拟设备。下面是管道的结构: s t a t u s p i p e d e v c r e a t e ( c h a r * n a m e , / * n a m e o f p i p e t o b e c r e a t e d * / i n t n m e s s a g e , / * m a x . n u m b e r o f m e s s a g e i n p i p e * / i n t n b v t e s / * s i z e o f e a c h m e s s a g e * / 华北电力大学工程硕士学位论文 s e l e c t( )函数: v x w o r k s 操作系统通过利用多文件描述符的挂起功能提供与u n i x 和w i n d o w s 操 作系统相兼容的选择功能。库文件 s e l e c t l i b 即提供任务级支持一一允许等待多个 设备中的一个变为活动状态,又提供对设备驱动程序的支持一一使驱动程序能够检 测是否有任务因等待对设备进行 工 / 0 操作而处于等待状态。应用程序中必须包括头 文件s e l e c t 工 i b . h 才能实现该功能。 任务级应用不支持任务同时等待对多个设备进行 1 / 0 操作,还能够指定等待过 程的最长时间。一个利用多文件描述符执行选择操作的例子是客户机/ 服务器模型。 在该模型中服务器同时对本地和远端的客户机提供服务。在服务器上运行的任务利 用管道与本地客户机通信,利用套接字与远端客户机通信。它必须尽可能快地响应 客户机的请求。如果服务器仅仅因为等待多个通信流中其中一个的响应而处于挂起 状态,那么它在收到第一个响应之前将不会响应其他通道流传来的请求。这种情况 将会导致对本地请求的响应产生延迟。选择功能将使服务器不论正处在处理哪个通 信流,都将同时监视所有套接字和管道中传来的服务请求信息。这样可以很好地解 决上述问题。 在数据变为有效或设备变为可写状态之前,任务一直处于拥塞状态。通过 s e l e c t( )函数可以知道何时一个或多个文件描述符变为有效状态或发生了超时的 j清况。 通过s e l e c t ( ) 函数可以指定某一个任务等待哪些文件描述符变为活动状态。 在 s e l e c t( )函数中使用位域标志设置有关文件的读/ 写状态。通过 s e l e c t( )函 数返回值中位域标志的改变情况反映相应的文件描述符是否有效。下表 3 列出建立 和操纵这些位域标志的宏函数。 表 3选择功能中的宏函数 宏函数名功能介绍 f d z e r o将所有标志位设置为 0 f d s et对指定文件描述符的标志位设置为 1 少 f d cl r对指定文件描述符的标志位设置为 0 f d i s s e t如果指定标志位值为 1 , 则返回 1 ; 否则返回 0 在应用程序中可以通过调用 s e l e c t ( )函数使得字符型 1 / 0 设备 ( 如管道、串 行设备、套接字)具有上述功能。 华北电力大学工程硕士学位论文 2 . 33消息队列 用于协作任务之间的通信。 消息队列机制主要用于协作任务之间的通信。 可以 实现多个任务向消息队列中写,而一个或多个任务读。 可以通过创建两个消息队列来进行任务之间的全双工通信。 消息队列允许多的 消息排队,而且每个消息可以有不同的长度,在这一点上,消息队列要比传统管道 优越, 因为传统管道中的数据仅仅是一个数据流, 没有边界 ( 实际上在v x w o r k s 中, 管道中的数据由消息组成,这一点不同于传统管道) 。 内核 w i n d 的消息队列机制同样有优先级排队和 f i f o 这两种模式。 所谓的优先 级排队是指由于消息队列空或者消息队列满而阻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论