进程间通信

2024-04-15

进程间通信(通用11篇)

篇1:进程间通信

进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符),

但是,进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信( IPC:Inter Processes Communication )。

进程间通信的目的:

数据传输:一个进程需要将它的数据发送给另一个进程,

通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。

资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供互斥和同步机制。

进程控制:有些进程希望完全控制另一个进程的执行(如 Debug 进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

Linux 操作系统支持的主要进程间通信的通信机制:

篇2:进程间通信

。{ cout<<“Come Over!”<SetStr(“this is semaphore message!!”); sleep(1);//让线程写的速度慢于线程读的速度,可以 //看到互斥等待访问并不影响正常的需求, } return (void*) 0;}void* Read(void *arg){ sem *sm = (sem *)arg; while(1) { cout<GetStr.c_str()<

//下面是Makefile

篇3:进程间通信

关键词:进程间通信 (IPC) ,Linux,消息总线

1 消息总线设计需求

D-Bus消息总线是面向桌面系统设计, 接口丰富, 但占用资源较多。重新设计的消息总线将满足占用系统资源少, 且可以满足路由器软件系统的消息转发需求。消息总线 (Message Bus, 以后简称M-Bus) 模块作为路由器软件系统的基础软件模块, M-Bus被设计成了一个为路由器操作系统各应用程序提供模块间通信的唯一上层平台。M-Bus自身被抽象化成一个提供进程间通信方法的函数功能库, 负责路由器软件系统各模块间的消息转发和消息广播, 实现的方式是向整个系统提供C的API接口以供其他应用程序调用。M-Bus底层是使用套接字、信号量、管道等Linux基本进程间通信方法进行封装。M-Bus在消息处理方式是消息的直接转发。消息的直接转发使用命名管道来实现, 参与通信的各个进程直接调用M-Bus库函数, 各个应用程序根据自身注册到消息总线上的消息处理函数, 做出下一步的动作。

2 消息总线总体设计

消息总线被设计成了一个为路由器操作系统各应用程序提供模块间通信的唯一上层平台。消息总线自身被抽象化成一个提供进程间通信方法的函数功能库, 负责路由器软件系统各模块间的消息转发和消息广播, 实现的方式是向整个系统提供C的API接口以供其他应用程序调用。消息总线底层是使用套接字、信号量、管道等Linux基本进程间通信方法进行封装。消息总线在消息处理方式是消息的直接转发。消息的直接转发使用命名管道来实现, 参与通信的各个进程直接调用消息总线库函数, 各个应用程序根据自身注册到消息总线上的消息处理函数, 做出下一步的动作。消息总线包括以下三个子模块: (1) 消息总线的接口集合, 包括消息的发送、消息的接收、消息发送者与接收者的登记等一系列消息总线能够提供的API函数。 (2) 消息总线的守护进程。 (3) 消息总线内部工作处理, 为上层API函数提供基础。路由器的各应用程序通过调用消息总线的API函数来使用消息总线的功能。消息总线提供了本地资源初始化、销毁本地资源、注册、卸载、发送消息、接收消息、登记消息处理等API函数。消息总线中所定义的消息, 是进程间传递数据的载体, 消息的定义遵循以下原则: (1) 每个消息都有自身的名字, 消息的名字表示要发送的消息是什么命令。 (2) 消息的名字在系统中是唯一的。 (3) 系统能处理消息的种类的能力是有限的。各个模块收到消息后会跟据消息的名字执行相应的处理函数, (4) 消息具有统一定义的数据结构, 包括消息头、携带数据、消息上下文 (Context) 。消息的名字 (也可称为消息的类型) 作为消息头中的一个数据域的形式存在。

3 消息总线数据结构的设计

消息的自身是数据传递的载体并且消息具有相应的结构。消息结构组织分为两类:一类是各模块之间通信的消息结构;另一类是各模块本地维护的消息结构。

其中, 消息头被定义成各模块间通信的唯一结构, 各模块间的通信是通过解析消息头来提取数据, 从而实现进程间的通信。而各模块本地维护的消息结构称之为消息上下文, 每个模块都会有自身的消息上下文, 由各个模块自己组织与管理, 与外界隔离。图1描述了消息头的数据结构:

消息头中包含以下定义内容: (1) 消息的发送者:定义该消息是由哪个模块发送的, 路由器所有模块的名称均用宏定义。 (2) 当前进程PID:该消息的发送进程的PID。 (3) 消息的名字:该消息发的是什么指令。 (4) 消息的同步:当接收进程收到消息后需要做反馈操作, 回复发送进程进行收到确认。如果不做同步操作则不需要回复。 (5) 数据长度:消息所携带的数据长度。 (6) 携带数据起始位:所携带数据的起始位地址。起始位地址加上所携带数据的长度就可以表示该消息携带的所有数据, 即消息的消息体。作者称各模块自身维护的消息为本地消息, 描述本地消息的数据结构称为消息上下文, 路由器软件系统中每个模块 (每个应用程序) 自身只能存在一个消息上下文。设计消息上下文的原因在于是想把使用消息总线的所有数据与操作方式都组织到一起, 然后封装成统一的结构来进行描述。每个应用程序注册到消息总线上的时候, 都会生成自身的消息上下文。图2描述了消息上下文的数据结构定义。

消息上下文中包括了以下内容: (1) 注册到消息总线上的应用程序自身名字。名字由字符串表示, 系统中所有的应用程序名字均使用宏进行定义。 (2) 当前注册到消息总线上的进程ID。进程ID用于表示消息总线使用者的身份。 (3) 当前接收消息的文件描述符。当一个进程新注册到消息总线上时, 该文件描述符设置为-1。当该进程参与消息的发送或接收时, 该文件描述符表示文件操作句柄。 (4) 进程退出函数指针, typedef void (*pf_user_exit) (void) 。当一个已在消息总线上注册过的进程想要从消息总线上卸载时, 调用自身定义的退出函数实现退出。 (5) 消息处理函数指针。当应用程序收到消息时解析该消息, 根据解析到的消息名字调用相对应的消息处理函数。当应用程序向消息总线上注册时, 必须注册对应消息的处理函数。 (6) 默认消息处理函数指针。 (7) 消息头。

参考文献

[1]Bird Intern Articles on Routing Software Openwrt[M].Hephaestus Books, 2011:115-120.

[2]Jim Brown.Articles on Routers[M].Hephaestus Books, 2011:45-59.

篇4:日本现代化进程中民间组织的作用

在上世纪的八九十年代,每一个初次踏上日本国土的中国人都会被日本的现代化程度所震撼,繁华的商业街、四通八达的城市交通、琳琅满目的商品、热情周到的服务……东瀛邻国为刚走上改革开放之路的中国提供了一个现代化国家发展的蓝本。从某种意义上说,中国的现代化是在日本经济高度发展的刺激下起步的。80年代的中国人热衷于探讨日本现代化的成功经验和先进的企业管理,对高品质的日本制造特别是日本电器情有独钟。

二三十年后的今天,经济迅速崛起、国民日渐富裕的中国正逐步缩小着与日本的差距。城市面貌日新月异,特别是北京、上海某些地方的现代化程度让一些日本人失去了优越感,甚至生出一丝妒意。那么,日本还有什么值得我们学习和借鉴的地方吗? 的确,现在去日本旅行、留学或短期访问的中国人已没有了上世纪80年代那时的心灵震撼了。然而,当在日本住上一阵子,细细品味,你还是会发现日本社会生活中值得称道、借鉴和学习的地方。当你到公民馆、市民活动中心、区民馆、女性活动中心、图书馆时,你会看到各种演讲会、学习班、集会、公益活动的广告和信息;当你参加一个市民活动的时候,你会发现市民们对公益事业、对社会问题的关注和参与;不管是城市还是乡村,你会看到垃圾桶上贴有可燃、废纸回收、易拉罐回收、玻璃瓶回收等垃圾分类字样,而每个日本人都会自觉遵守这一规范;超市门口摆放着回收塑料发泡盒、牛奶盒的箱子,来超市购物的居民将这些用毕的包装盒在家洗干净后集中投放到回收箱中;在节日或大型活动的场所,总能看到一些志愿者服务的身影……这些社会生活的细微变化正悄然改变着日本。认真思考起来,促成日本社会这些变化的因素有很多,但民间组织的兴起和蓬勃发展应该是重要因素之一。

当今,日本民间组织的数量数不胜数,包括各种非营利组织、非政府组织、市民团体以及志愿者团体。这些民间组织涉及环境保护、反战和平、妇女权益、社会福利、城市改造、社区建设、灾害救助、文化教育等领域。民间组织的规模一般都不大,自主运营,不以追求利润和分配为目的。民间组织的资金来源有多种渠道,包括会员的会费、出售物品和出售服务所得、中央政府和地方自治体的拨款或补助、联合国等国际机构的资助、企业和团体的捐助以及个人捐赠等。民间组织开展的活动也是丰富多彩的,为丰富民众生活、解决民众生活困难,促进日本社会更加多元与和谐发挥了十分重要的作用。

日本的民间组织为何在上世纪90年代开始迅猛发展?究其原因,是由于90年代日本政治、经济和社会等领域均出现了不少新问题,例如,政坛频繁更迭,经济长期低迷不振,失业率增高,少子老龄化问题严重,教育领域的问题也很突出。另外,能源、原材料的大量消耗引发了一系列环境问题;杀虫剂、化学肥料、食品添加剂等导致的食品安全问题;高速路、新干线、机场、发电厂等基础设施建设带来的负面效应……这些问题如果仅仅依靠政府干预是无法从根本上解决的,而市场在提供公平竞争、维护弱者权益、促进社会协调发展、完善市场环境等方面又显得无能为力。这就需要市民社会、市场和政府互相补充,需要民间组织发挥更大的作用。

日本社会在上世纪七八十年代有“一亿总中流”的说法,也就是说生活水平属于中等程度的国民占人口绝大多数。众所周知,民间组织需要大量中产阶级参与进来并积极推动,日本中产阶级、特别是中产阶级妇女成为民间组织的重要力量。同时,民间组织里也汇聚了各类社会边缘群体、居民个体,代表了各市民群体的利益和要求。这些有着相同志趣和想法的市民自愿结成各种目的的民间组织,开展广泛的社会活动,弥补了日本社会结构和体制出现的一些问题。

1995年的阪神大地震成为日本民间组织飞跃发展的一个重要契机。大地震造成了6000多人遇难、30万人无家可归的悲惨局面。在灾后急需紧急救助时,日本僵化的官僚组织没能有效地发挥作用,各地市民团体、志愿者却在第一时间奔赴受灾前线开展救援和重建工作。整个救援活动持续了两个半月,有150万人参加。1995年也因此被日本媒体称为“志愿者元年”。

阪神大地震让日本政府改变了对民间团体一贯采取的限制和谨慎的态度,意识到那些有责任心的市民组成的民间团体与政府、企业一起度过难关已成为时代需要。1998年12月《特定非营利活动促进法》(即NPO法)出台,将保健、医疗、福利、社会教育、环境保护等12个与市民生活息息相关的领域作为法律允许的NPO法人的活动范围,从法律上保障了非营利组织的权益,推动了民间组织的发展,对于促进日本市民社会的成长有着里程碑的意义。

民间组织对社会乃至国家政治产生深刻影响的原因在于它们与社会基层的紧密联系。日本的大部分民间组织由当地居民组成,他们能及时发现生活中的问题,积极向政府反映问题并提出建议。一些民间组织还经常就某些与居民生活息息相关的问题进行调查研究,并在调查的基础上提出对策建议,还有的民间组织充当政府的早期预警机制,帮助监督和执行政府工作。

以地缘为纽带的从事社区建设的民间组织数量多、分布广、服务领域广泛,这些民间组织大都由某一社区的居民组成,开展的活动包括保护消费者利益、增进社区福利以及活跃当地文化体育生活等。这些民间组织与地方政府、行政的关系既不是对立的,也不是完全依赖的。针对市民自身力量难以解决且充分具有公共性的事务,民间团体和市民们改变了以往消极等待行政部门采取行动的方式,而是主动行动起来,关注生活中的诸领域,寻找和发现问题,自己能解决的事就自己去做。自己解决不了的,往往采取一边与政府、行政机构进行对话,一边探索如何与行政部门协作解决问题的方式。像一些民间组织发动的垃圾减量运动就反映了市民自身参与政策决定和解决自身问题的趋势。一些民间组织利用社区空置房屋,将退休老人和家庭主妇组织起来对放学后的小学生进行课外教育和看护,有的民间组织开设托儿中心,解决双职工家庭和职业女性工作与育儿的冲突。这些民间组织与社区居民的生活密切相关,在社区环境治理、社区治安维护、社区就业和社区社会保障等方面做了大量工作,不仅解决了居民实际生活中的问题,还协调了居民、政府、社区之间的关系。具有较强的政策影响力。

日本的民间组织在环境保护、男女平等、社会福利、人权、教育、医疗卫生等领域开展了积极有效的活动,是社会多元化和民主化的重要组成部分。例如,日本民间组织中有一批具有鲜明时代性和国际性的反战、和平团体,在社会产生很大影响。2004年大江健三郎、泽地久枝、鹤见俊辅、加藤周一等九位知名人士组成了“九条会”,其目的就是阻止日本政府修改宪法第九条。

该团体成立后在日本社会产生极大反响。在其影响下,各地区、各行业、各领域纷纷成立各种名目的九条会。据统计,截至2007年1月31日,全日本不同地域、不同行业的“九条会”已达到6000家。这些和平反战的民间组织对政府的过激行为构成制约,已成为一支积极的、潜在的发展和变迁政治的独立力量。

增进国际间相互了解,发挥民间外交的作用也是民间组织的一个重要作用。日本的民间组织涉及诸多领域,其中有不少既是日本问题也是国际热点问题,如环境、人权、家庭暴力、艾滋病、开发援助等。由于民间组织不仅可以到尚未建立外交关系的国家进行人道主义活动,同时,在政府的作用之外,民间组织发挥积极作用的空间也很大。因此,日本民间组织开展了一系列活动,如给阿富汗儿童募捐、组织志愿者到伊拉克帮助当地人民重建家园、到中国的黄土高原种树防沙等,这些活动跨越了国境,对于加强日本和亚洲太平洋地区经济的相互依存、人员往来以及加深各国之间的了解起到了积极作用。

民间组织还有一个重要功能就是培育民众个人的独立自主和平等合作精神。大多数日本民间组织都经常举办一些读书会或培训班,既促进了市民之间的交流,又发挥了教育的作用,培育了新型的市民。像社区建设的民间组织开展的教育活动十分灵活多样,注重对居民宣传本地区历史文化和传统。市民们在活动中了解到本地区的历史文化,并对自己的居住地产生感情。一些环境保护组织也非常热衷于环境教育,他们传播环保知识。注重培养青少年的环保意识。像“日本野鸟之会”的会员大都是中小学生,该组织把“热爱自然、与自然界的鸟类做朋友”作为该组织的口号。孩子们在成年人的支持和帮助下,开展了一系列生动有趣的活动。民间组织还通过电视、报纸等传播媒介和举办演讲会等方式传播各类知识,对于普及文化知识、提高国民素养产生一定作用。非营利活动法人“NPO爱知网络”是一个以防灾、灾害救助为主要活动内容的市民团体。日常活动包括有灾害救助训练、向市民提供灾害防御方面的信息和资料、普及防灾知识、开展社会教育活动以及与社区居民共同开展各项有益的活动。他们将工作重心放在青少年教育活动上,培养学生们的合作精神以及人与自然和谐的理念,培养青少年的生存能力,训练他们做志愿者的能力。

市民们在参与民间组织活动的同时,不仅提高和扩大了自身的社会地位和政治影响。也学到了许多知识,提升了自己的市民素质,而市民素质的提高也是一个社会走向多元的、民主的必由之路。像反对家庭暴力的民间组织普及了市民的人权观念和男女平等观念;环境保护的民间组织提高了公众对环境的保护意识;坚持反战和平、反对修改宪法第九条的民间团体培养了市民的参政意识和民主意识。

21世纪日本的发展将不能再仅仅依靠政府与企业,还要依靠市民社会。特别是在当今日本政府功能逐渐减弱的情况下,市民理应成为社会发展进步的主要推动力量,而由市民参与的民间组织可为日本发展提供新的动力源泉。有民间团体的存在,日本社会才能朝更自由、更民主、更开放、更多元化的方向发展。

作者单位:中国社会科学院日本研究所,副研究员

(本文编辑王正)

好书超市

《心灵杀毒2.0弗洛伊德的拼图》,王洛生著,清华大学出版社2010年5月第1版。30.00元

这是一本心灵游记。作者和盘托出自己不平凡人生中的秘密,讲述如何逃离心理灾难的漩涡。不仅为被困扰的人们留下安全归航的路标,也让我们一窥心灵计算机运行的密码。作者还记录了自己久病成医后,为很多慕名而来的强迫症、焦虑症、抑郁症患者进行“话疗”的细节,演示疗法、分享经验。此书文字兼具理科生的清晰逻辑与诗人的绚烂文采,令人读后受益匪浅!

《知识分子与现代中国》,(美)格里德尔著,广西师范大学出版社2010年5月版。38.00元

篇5:进程间通信

这篇文章主要介绍了python使用Queue在多个子进程间交换数据的方法,实例分析了Queue实现进程间数据交互的技巧,需要的朋友可以参考下

本文实例讲述了python使用Queue在多个子进程间交换数据的方法,分享给大家供大家参考。具体如下:

这里将Queue作为中间通道进行数据传递,Queue是线程和进程安全的

from multiprocessing import Process, Queuedef f(q): q.put([42, None, ‘hello‘])if __name__ == ‘__main__‘: q = Queue() p = Process(target=f, args=(q,)) p.start() print q.get() # prints “[42, None, ‘hello‘]” p.join()

篇6:进程间通信

1.第三层交换技术发展的必要性

传统路由器的主要功能是实现路由选择与网络互联,即通过一定途径获得子网的拓扑信息与各物理线路的网络特性,并通过一定的路由算法得到到达各子网的最佳路径。建立相应的路由表,从而将每个IP包跳到跳(hoptohop)传到目的地;其次,它必须处理不同的链路协议。IP包途经每个路由器时,需经过排队、协议处理和寻址选择路由等软件处理环节,造成延时增大。同时路由器采用共享总线方式,总的吞吐量受到限制,当用户数量增大时,每个用户的接入速率降低。路由器更注重对多种介质类型和多种传输速度的支持,而目前数据缓冲和转换能力比线速吞吐能力和低时延更为重要。

与路由技术相比,交换技术的好处就是速度快,当网络规模很大时,高速、大容量路由器是十分必要的。另一方面,由于现代通信网络大都采用光纤技术,所以目前数据网络的主要瓶颈是结点路由器。现在的第三层交换、路由交换或其他相关名词都是这种思路的体现。虽然第三层交换最初是为了局域网而设计的,它采用目的IP地址进行交换,但是现在这种技术也已经开始在广域网中使用。它不需要将广播封包扩散,而是直接利用动态建立的MAC地址来通信,如IP地址、ARP等,具有多路广播和虚拟网间基于IP和IPX等协议的路由功能。这方面功能的顺利实现,主要依靠专用集成电路ASIC把传统路由软件处理的指令改为ASIC芯片的嵌入式指令,从而加速了对包的存储转发和过滤,使得高速下的线性路由和服务质量都有了很高的保证。

2.第三层交换技术的基本原理及其结构框架

2.1第三层交换技术的基本原理

第三层交换是在网络交换机中引入路由模块而取代传统路由器实现交换与路由相结合的网络技术。它根据实际应用时的情况,灵活地在网络第二层或者第三层进行网络分段。具有三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。

第三层交换机的设计基于对IP路由的仔细分析,把IP路由中每个报文都必须经过的过程提取出来,这个过程是十分简化的过程。IP路由中绝大多数报文是不包含选项的报文,因此在多数情况下处理报文IP选项的工作是多余的。不同网络的报文长度是不同的,为了适应不同的网络,IP要实现报文分片的功能,但是在全以太网的环境中,网络的帧长度是固定的,因此报文分片也是一个可以省略的工作。第三层交换技术没有采用路由器的最长地址掩码匹配的方法,而是使用了精确地址匹配的方法处理,这样,有利于硬件的实现快速查找。它采用了使用高速缓存的方法,把最近经常使用的主机路由放到了硬件查找表中,只有在这个高速缓存中无法匹配的项目才会通过软件去转发。在存储转发过程中使用了流交换方式,在流交换中,分析第一个报文确定其是否表示了一个流或者一组具有相同源地址和目的地址的报文。如果第一个报文具有了正确的特征,则该标识流中的后续报文将拥有相同的优先权,同一流中的后续报文被交换到基于第二层的目的地址上,现在的三层交换机为了实现高速交换,都采用流交换方式。其在IP路由的处理上进行了改进,实现了简化的IP转发流程,利用专用的ASIC芯片实现硬件的转发,这样绝大多数的报文处理都可以在硬件中实现了,只有极少数报文才需要使用软件转发,整个系统的转发性能能够得以成千倍地增加,相同性能的设备在成本上也得到大幅度下降。

每个VLAN对应一个IP网段。在二层上,VLAN之间是隔离的,这点跟二层交换机中交换引擎的功能是一模一样的。不同IP网段之间的访问要跨越VLAN,要使用三层转发引擎提供的VLAN间路由功能。在使用二层交换机和路由器的组网中,每个需要与其他IP网段通信的IP网段都需要使用一个路由器接口作为网关。而第三层转发引擎就相当于传统组网中的路由器,当需要与其他VLAN通信时也要在三层交换引擎上分配一个路由接口,用来做VLAN的网关。三层交换机上的这个路由接口是在三层转发引擎和二层转发引擎上的,是通过配置转发芯片来实现的,与路由器的接口不同,它是不可见的。下面举个例子来说明通信过程。假设两个使用IP协议的站点A、B通过第三层交换机进行通信,发送站A在开始发送时,把自己的IP地址与B站的IP地址比较,判断B站是否与自己在同一子网内,若目的站B与发送站A在同一子网内,则进行二层的转发,若两个站点不在同一子网内,如发送站A要与目的站B通信,发送站A要向三层交换机的三层交换模块发出ARP(地址解析)封包。当发送站A对三层交换模块的IP地址广播出一个ARP请求时,如果三层交换模块在以前的通信过程中已经知道B站的MAC地址,则向发送站A回复B的MAC地址,否则三层交换模块根据路由信息向B站广播一个ARP请求,B站得到此ARP请求后向三层交换模块回复其MAC地址,三层交换模块保存此地址并回复给发送站A,同时将B站的MAC地址发送到二层交换引擎的MAC地址表中。从这以后,A向B发送的数据包便全部交给二层交换处理,信息得以高速交换,

可见由于仅仅在路由过程中才需要三层处理,绝大部分数据都通过二层交换转发,三层交换机的速度很快,接近二层交换机的速度。

2.2第三层交换技术的简单拓扑结构

所用连接到骨干交换机的设备有服务器、交换机、集线器、工作站等。其中核心交换机是一台第三层交换机,通过它来划分两个不同的功能的逻辑子网,实现不同VLAN间的通信。从图1可以看出,在同一个VIAN虚拟子网内部三层交换机仅具有二层交换的功能,以保证传输速度的要求,而在不同的VIAN子网之间,三层交换机还起三层交换的作用,能正确地进行ARP解析,以保证数据流的正确传输,同时它还支持组播、帧和包过滤、流量计算等功能,以确保安全性能与用户需求。

3.第三层交换技术的优点和实用价值

交换技术提供网络的基本业务:交换虚电路和永久虚电路及其他补充业务,如用户群、网路用户识别等;在端到端计算机之间通信时,能进行路由选择以及流量控制,并能提供多种通信规程如数据转发、维护运行故障诊断、计费与一些网络的统计等三层交换技术除了优异的性能之外,其中的关键设备三层交换机相对于传统的二层交换机还有更优异的特性,这些特性可以给局域网、城域网等的网络建设带来更多优势。

3.1高扩充性

三层交换机在连接多个子网时,子网只是与第三层交换模块建立逻辑连接,不像传统外接路由器那样需要增加端口,而是预留各种扩展模块接口,在网络扩展时,可以插上模块来扩充,从而保护了用户对局域网、城域网等的设备投资,并满足企业网络不断扩充的需要。

3.2高性价比

三层交换机具有连接大型网络的能力,功能基本上可以取代某些传统路由器,但是价格比传统路由器低,仅接近二层交换机。

3.3支持的协议灵活,兼容性好

在局域网中三层交换机能够支持IP协议、IPX协议,基本上可以满足要求,对于路由协议需要仔细选择,既要考虑是否支持RIP这类小型网络的路由协议,也要考虑是否支持0SPF这类大中型网络适用的路由协议。同时三层交换机在大中型网络中也有802.1d协议的支持而能保证网络的健壮性。802.1d协议指的是生成树(SpanningTree)协议,在大中型网络中,往往来用冗余链路的方式保证网络的联通,即为了防止网络中断,一个子网连接到网络主干的路径有多个,但是这样就会形成环路,使数据总是在网络中循环,从而阻塞网络,而采用生成树协议之后,交换机就能够检测并且消除网络中出现的逻辑环路,既不破坏冗余又保证了网络的性能。

3.4提高安全性

在网络中,对于所传输的数据包,出于安全考虑,需要根据很多规则对数据进行过滤,确保只有符合规则的数据包才能通过第三层交换机,由于不同VLAN间的通信及数据传输都要经过交换机,交换机可以采取各种安全限制手段,而且现在的第三层交换机支持访问控制列表,能线速地对所有数据包进行过滤。

4.第三层交换技术的应用方向

第三层交换机的应用很简单,主要用途是代替传统路由器作为网络的核心。因此,凡是没有广域网连接需求,同时又需要路由器的地方,都可用第三层交换机来取代。在企业网和校园网中,一般会将第三层交换机用在网络的核心层,用第三层交换机上的千兆位端口或百兆位端口连接不同的子网或VLAN。这样的网络结构相对简单,结点数相对较少;另外,也需要较多的控制功能,并且成本较低。其主要应用包括下面几个方面:

4.1作为网络的骨干交换机

第三层交换机一般用于网络的骨干交换机和服务器群交换机,也可作为网络结点交换机。在网络中,同其他以太网交换机配合使用,网络管理员能构造无缝的10/100/1000(Mb/s)以太网交换系统,为整个信息系统提供统一的网络服务。这样的网络系统结构简单,同时还具有可伸缩性和基于策略的QoS(质量服务)等功能。

4.2支持链路聚合的PortTrunk技术

在应用中,经常有以太网交换机相互连接或以太网交换机与服务器互联的情况,其中互联用的单根连线往往会成为网络的瓶颈。采用PortTrunk技术能将若干条相同的源交换交换机与目的交换机的以太网连接线从逻辑上看成一条连接线。这样既保证局域网不会出现环路,同时也有效地加大了连接带宽。性能良好的第三层交换机全面支持PortTrunk技术,有效满足了企业局域网对连接带宽的要求。

4.3实现组播和自学

一些第三层除了支持动态路由协议RIP和OSPF外,针对日渐流行的多点组播的需求,还能够实施基于标准的多点组播协议,如距离矢量多点组播路由协议DVMRP、PIM等。

结束语

篇7:进程间通信

关键词:ECP协议 互锁握手 虚拟外设

引言

扩展能力端口模式ECP(Extented Capability Port)是一种IEEE 1284标准的工作模式之一。它能实现双向数据传输,具有DMA传输、数据RLE压缩、双向寻址等功能。它要求主机外设双方的硬件都必须实现状态机的功能,即自动产生各种控制信号。ECP模式是唯一定义了寄存器实现的IEEE 1284传输协议。在计算机端操作ECP并行协议,仅需对相应的寄存器进行读写就会触发硬件完成各种时序。ECP模式的数据传输率可以达到2~4MB/s。

(本网网收集整理)

SX52BD是SX系列产品,是采用CMOS工艺制造的、可配置的通信控制器。它是一种高速单片机,指令大都是单周期的,其工作频率可达到50MHz。由于其特有速度,设备可实现虚拟外设(软件代替硬件的功能)。本文讲述的通信就是基于此完成的`。

1 ECP协议

ECP传输通过标准并行端口实现。其DB25接口的引脚定义如下:

1―HostClk; 2~9―双向D1~D8;

10―PeriphClk; 11―PeriphAck;

12―nAckReverse; 13―Xflag;

14―HostAck; 15―nPeriphRequest;

16―nReverseRequest; 17―IEEE1284Active;

18~25―各信号地。

ECP模式分以下8个操作阶段。

①模式商议阶段。主机把ECP的能力请求值放到数据总线上,然后置IEEE 1284 Active为高,HostAck为低。外设应该置PeriphClk为低,nPeriphRequest为高,Xflag为高,nAckReverse为高。主机置HostClk为低,然后置HostClk和HostAck为高,表示已经确认了一个兼容于ECP模式的外设。接着,外设置nAckReverse为低,PeriphAck为低,Xflag为高,PeriphClk为高。接口进入设置阶段。

②ECP设置阶段。主机置HostAck为低,外设置nAckReverse为高,响应主机。接口进入正向空闲阶段,可以开始传输数据。

③正向空闲阶段。外设置PeriphAck为低,主机检测到此信号可开始传输数据。

④ECP正向传输阶段。主机将数据放到数据总线上,置HostClk为低。外设置PeriphAck为高,应答。主机置HostClk为高,外设接收数据并置PeriphAck为低,完成这次传输。

这种握手方式即互锁握手(interlocked handshake)。互锁握手是指每一个控制信号的跳变都由接口对方相互应答。使用这种方式,外设可以控制传输的时间以满足它进行操作的需要。

⑤ECP正向到反向转换阶段。在正向空闲阶段,主机置8位数据总线为高阻状态,并设置HostAck为低。为等待最小建立时间后,置nReverseRequest为低。外设置nAckReverse为低应答,进入反应空闲阶段。

看上去相当复杂,但PC端操作却很简单,仅需对后面介绍的寄存器读写即可。单片机端略微复杂,但也只需对I/O口置位、复位、读取,编程并不难。

2 SX52BD单片机简介

SX52BD片内程序存储器容量为4096字节,数据存储器容量为262×8位。SX52BD具有5个8位I/O端口A、B、C、D、E,2个带8位预定标器的16位定时器,1个带预定标器通用8位定时器,1个模拟比较器,1个brownout检测器及看门狗定时器,1个内部RC振荡器。端口A、B、C为双向I/O口;端口B可作为唤配置、比较器、定时器1的输入;端口C可作为定时器2的输入;端口D、E仅做输入用。

SX52BD有3种不同的寻址方式:间接寻址、直接寻址、半直接寻址。对寄存器寻址模式的选取依赖于指令中5位“fr”的值。

*间接模式:fr=00h

*直接模式:(fr bit 4=0)fr=01h~0Fh

*半直接模式:(fr bit 4=1)fr=10h~1Fh

篇8:进程间通信

在Android中3 大组件 (Activity、 Service、 Receiver) 都支持在Intent中传递Bundle数据, 由于Bundle实现了Parcelable接口, 所以可以方便的在不同的进程之间进行传输。 当在一个进程中启动另外一个进程的Activity、 Service、 Receiver时, 就可以在Bundle中附加所需要传输给远程进程的信息并通过Intent发送出去。 利用Bundle进行进程间通信是很容易的, 这种方式进行进程间通信只能是单方向的简单数据传输, 使用时有一定局限性。

共享文件也是以后总不错的进程间通信方式, 两个进程通过读、 写同一个文件来交换数据。 通过这种方式, 除了可以交换简单的文本信息以外, 还可以序列化一个对象到文件系统中, 另一个进程可以通过反序列化恢复这个对象。 通过文件共享的方式来共享数据, 可以是文本文件、 也可以是XML文件, 只要读写双方约定数据格式即可。

通过Messenger来进行进程间通信, 在Messenger中放入需要传递的数据, 就可以轻松的实现进程之间数据传递了。Messenger是一种轻量级的IPC方案, 他的底层实现是AIDL。Messenger的使用方法也是比较简单的, 实现一个Messenger有如下几步, 分为服务端和客户端。 1.服务端: 在A进程创建一个Service来处理其他进程的连接请求, 同时创建一个Handler并通过他来创建一个Messenger对象, 然后在Service的on Bind中返回这大Messneger对象底层的Binder即可。 2.客户端: 在进程B中绑定远程进程的Service, 绑定成功后, 根据Service返回的IBinder对象创建Messenger对象, 并使用此对象发送消息, 为了能收到Service端返回的消息, 客户端也创建了一个自己的Messenger发送给Service端, Service端就可以通过客户端的Messenger向客户端发送消息了。 Messenger内部消息处理使用Handler实现的, 以串行的方式处理客户端发送过来的消息, 如果有大量的消息发送给服务端, 服务端只能一个一个处理, 如果并发量大的话用Messenger就不合适了, 而且Messenger的主要作用是为了传递消息。

AIDL ( Android Interface Definition Language) 是一种IDL语言, 用于生成可以在Android设备上两个进程之间进行进程间通信 (IPC) 的代码。 如果在一个进程中 (例如Activity) 要调用另一个进程中对象的操作, 就可以使用AIDL生成可序列化的参数。 AIDL是IPC的一个轻量级实现。 Android也提供了一个工具, 可以自动创建Stub (类构架, 类骨架) 。 当要在应用间通信时, 需以下几步。 1. 定义一个AIDL接口。 2. 为远程服务 (Service) 实现对应Stub。 3. 将服务 “暴露” 给客户程序使用。

Content Provider ( 内容提供者) 是Android中的4 大组件之一, 为了在应用程序之间进行数据交换, Android提供了Content Provider。 Content Provider是不同应用之间进行数据交换的API, 一旦某个应用程序通过Content Provider暴露了自己的数据操作接口, 那么不管该应用程序是否启动, 其他应用程序都可以通过接口来操作接口内的数据, 包括增、 删、 改、查等。 Content Provider分为系统的和自定义的, 系统的也就是例如联系人, 图片等数据。 Content Provider只是暴露出来可供其他应用操作的数据, 其他应用则需要通过Content Reslover来操作Content Provider所暴露出来的数据。 Context提供了getContent Resolver () 方法来获取Content Provider对象, 获取之后皆可以对暴露出来的数据进行增、 删、 改、 查操作。 使用Content Resolver操作数据的步骤也很简单: 1. 调用Activity的get Content Resolver () 获取Content Resolver对象; 2. 根据调用的Content Resolver的insert () 、 delete () 、 update () 、 和query () 方法操作数据库即可。

广播是一种被动跨进程通讯的方式。 当某个程序向系统发送广播时, 其他的应用程序只能被动地接收广播数据。 这就象电台进行广播一样, 听众只能被动地收听, 而不能主动与电台进行沟通。 Broadcas Receivert本质上是一个系统级的监听器, 专门监听各程序发出的Broadcast, 因此拥有自己的进程, 只要存在与之匹配的Intent被广播出来, Broadcas Receivert总会被激发。 只有先注册了某个广播之后, 广播接收者才能收到该广播。 广播注册的一个行为是将自己感兴趣的Intent Filter注册到Android系统的AMS (Activity Manager Service) 中, 里面保存了一个Intent Filter列表。 广播发送者将自己的Intent Filter的action行为发送到AMS中, 然后遍历AMS中的Intent Filter列表, 看谁订阅了该广播, 然后将消息遍历发送到注册了相应Intent Filter的Activity或者Service中-----也就是会调用抽象方法on Receive () 方法。 其中AMS起到了中间桥梁作用。 程序启动Broadcas Receivert只需要两步: 1) 创建需要启动的Broadcas Receivert的Intent; 2) 调用Context的send Broadcast () 或send Order Broadcast () 方法来启动指定的Broadcas Receivert; 每当Broadcast事件发生后, 系统会创建对应的Broadcast Receiver实例, 并自动触发on Receiver () 方法, on Receiver () 方法执行完后, Broadcast Receiver实例就会被销毁。

篇9:通信:三网融合进程提速

近日,国家广电总局副局长张海涛透露,中国广播电视网络公司的组建方案已进入国务院审批阶段,由此带来的规模效应也将使广电网承载增值电信业务、互联网接入、数据传输等业务成为可能。

中国广播电视网络公司组建进程有序推进彰显政府三网融合态度坚决。决策层推动“三网融合”的根本目的在于,通过推动相关产业的融合与发展,来完善中国基础信息网络基础设施的建设并催生新的产业形态,进而促进社会生活及经济发展,这也是与决策高层提出的发展新兴战略产业等战略是一致的,因此,政策高层必然会持续推动“三网融合”向前发展。

广电全国性经营主体呼之欲出,将加快广电省网整合及双向改造速度。一直以来,由于省网各个区域利益博弈问题,广电总局所要求的“一省一网”整合进展缓慢。同时,各个省市级有线网络公司各自为政的情况也使得省网之间无法实现互联互通,在开展有线宽带等增值电信业务领域,始终受制于电信运营商。我们认为,中国广播电视网络公司的成立将使得广电系的全国性经营主体得到统一。

诞生电信运营第四极,竞争加剧将促进宽带建设。广电系统推进“三网融合”的力度会明显刺激传统固网电信运营商的神经,迫使其加大对宽带网络的投资力度。在既往的近2年中,无论是中国电信还是中国联通,二者均明显加大了对宽带网络的投入,并逐渐形成了对广电系统的较明显带宽竞争优势。

篇10:进程间通信

关键词:WCF,进程间通信,回调

随着信息技术的不断发展,.NET技术已经为越来越多的程序员所青睐。但对于熟悉了Visual Studio C++开发环境的程序员来说,由C++开发转向.NET C#也会感到一些不适应,这是因为C++与C#除了在开发环境、编码风格上的不同外,有些在C++环境中比较容易实现的底层操作在C#环境中却可能很难实现,甚至根本无法实现。进程间通信对于C#而言,就是这样一个常令熟悉C++编程模式的C#程序员头疼的问题。

1 WCF服务介绍

WCF(Windows Communication Foundation)是微软公司为了支持SOA而推出的基于Windows平台开发部署软件的SDK,微软将其内嵌于.Net Framework 2.0及以后的产品中发布。WCF的内部组成结构如图1所示[4]。WCF整合了.Net平台下所有与分布式系统有关的技术(如ASP.NET Web Service、WSE、.Net Remoting、Enterprise Service(COM+)以及MSMQ等),是微软分布式应用程序开发技术的集大成者,为构建安全可靠的事务性服务提供了统一框架[3]。

WCF客户端与服务器的通信是基于SOAP的方式进行的[4],表1给出了WCF所支持的绑定协议及相应的消息传输模式、传输协议、编码格式、可靠性、互操作性等基本信息。需要特别指出的是,WCF服务本身并不具有独立的进程空间,它必须依存于某个宿主进程才能工作,但只要系统中有一份WCF服务实例已经启动,其它进程就可以通过它作为共享载体来实现跨进程的消息传递。

2 基于WCF服务共享内存的进程间通信

众所周知,在VC++编程环境中,进程间通信的方式有多种,如信号量、管道、共享内存等。而在C#编程环境中,进程间通信的手段相对要少一些,但这也足以解决绝大多数项目所遇到的问题。WCF服务的跨进程服务能力就给C#开发环境下的跨进程业务处理提供了很好的平台。本文中,利用.NET WCF服务的跨进程服务能力,我们提出了一套基于WCF回调机制的进程间通信解决方案。

为了便于说明,我们假设如下场景:(1)对于待处理的事务T,它的发起人是进程A;(2)当进程A处理好事务T的部分业务处理TA后,需要将处理结果RA再交由进程B处理(TB);(3)进程B在做好TB业务处理后,需要将处理结果RB再返回给进程A继续处理(TA');(4)进程A在拿到RB后,继续执行业务处理TA',从而完成整个事务处理。

我们看到,上述场景是一种典型的进程间通信情形,基于这个场景,我们的进程间通信解决方案如图2所示。

图2中,WCF服务依附于进程A或进程B或第三方进程工作。利用WCF服务的回调机制,我们可以轻松实现跨进程业务处理的事件通知与信息交互。WCF客户端(进程A/B)与WCF服务器之间的回调机制工作原理如图3所示。

3 实验结果分析

在表2所示系统环境下,对比WCF常用的两种支持回调操作的绑定方式:Net Tcp Binding和WSDual Http Binding,我们分别从WCF代理信道打开、WCF接口调用、WCF回调操作几个方面对前文所述基于WCF的跨进程数据通信性能进行了一些实测,如表3所示。

表3中,本进程是指WCF服务宿主进程与WCF客户端进程为相同进程的情况;跨进程是指二者不是相同进程的情况。从表3的测试结果可以看出,Net Tcp Binding方式在WCF代理信道打开方面要明显优于WSDual Http Binding方式;但在WCF接口调用和WCF回调操作方面却比反而处于劣势,这与常规的预期是相悖的。不过这样的测试结果也给我们在WCF绑定协议的选择带来了一些启示:

1)对于需要频繁重启WCF客户端代理信道的系统应用,应选用Net Tcp Binding方式;反之,则应尽量考虑选用WSDual Http Binding方式。

2)在使用WSDual Http Binding方式时,应尽量将WCF绑定开启超时设置长些,以免因超时而引起WCF代理信道重建,带来不必要的系统通信负担。

另外,从WCF接口调用和WCF回调操作方面的对比来看,本进程与跨进程操作之间的差异性并不明显,但WCF回调操作的系统用时在各种情况下都要远远高于WCF接口调用,这说明,WCF回调机制在方便了系统开发的同时,却增加了系统的运行时通信负担,是以牺牲小部分系统运行时的性能换取的敏捷系统开发时间。

4 结论

本文提出了一套利用.NET WCF服务实现托管进程间通信的解决方案。通过对该方案的系统实测表明,利用WCF服务的跨进程能力和回调机制而实现的进程间通信方案是可行的,能够大大缩短相关系统开发的时间。

本文作者创新点:(1)比较全面的整理出WCF绑定特性;(2)用实测数据颠覆了旧有的Net Tcp Binding方式一定在性能上优于WSDual Http Binding方式的学说,给出了Net Tcp Binding和WSDual Http Binding的优选原则。

参考文献

[1]赵发刚,陈进,李毅.基于SOA的监测、诊断与预测系统架构[J].计算机工程,2010,36(1):233-235.

[2]张卓彬,张璟,李军怀.一种面向消息的服务契约开发方法研究与实现[J].微电子学与计算机,2008,25(8):99-102.

[3]Lowy J,Vasters C.Programming WCF Services[M].北京:机械工业出版社,2008.

[4]microsoft[EB/OL].http://msdn.microsoft.com/zh-cn/library/ms733128.aspx.

[5]学习WCF(5)--学习Binding的使用[EB/OL].http://www.cnblogs.com/gaoweipeng/archive/2009/07/15/1522847.html.

[6]WCF深度绑定[EB/OL].http://msdn.microsoft.com/zh-cn/magazine/cc163394.aspx.

篇11:老公和老婆间的暴强通信

你在娘家还好吗?

从我们怄气到现在你已经离家出走达38小时零37分钟了,这距离你出走史上的最高纪录还差4个小时零21分钟,我知道你在等我向你登门道歉,我也准备这样做,但我更希望你能坚持下去,再创你出走史上的新高!

我在家里一切还好,请不要惦念。虽然,你带走了存折,不过,你不用担心我的经济来源,因为我手里还有一张附属信用卡。信用卡用起来就是方便,我已经买了五件衬衣、七条内裤和十二双袜子,估计每天一套能穿到你回来了。名牌就是名牌,虽然贵了点……

我的伙食问题你也不用担心,我已经到七家新开张的酒楼试吃过了;带鱼、麻杆、猪头三他们怕我一个人孤单,天天陪着我。不过他们尽点好菜好酒,我没办法啦,你知道我死要面子的。最让我心烦的就是对门新搬来的那个女人,差不多每天都来借醋借蒜什么的。不过你放心我是决不会犯错误的,这方面你要对我有信心。至于,家里的花花草草,我想让它们提早适应沙漠化的环境,决不给它们浇水,这有利于它们的物种进化。对了,咱家的咪咪是陪你一起回娘家了吗?我两天没见它了。

你也不用担心我那两个可爱的小舅子会一时冲动来找我做出什么不理智的事来,昨天我请他们爆搓了一顿,顺便向他们讲了我们之间的一点小事,他们听后拉着我的手哭着说:“姐夫,真是苦了你了云云……”

我会接你并向你道歉的,不过你在娘家安心地住一段时间也好,“常回家看看”嘛,老人们也需要你。

另:如果你明天不回来的话,冰冰约我去吃比萨我就去了,反正闲着也是闲着,老拒绝人家也不好,终究是一个单位的同事嘛。

再见!

你亲爱的老公

亲爱的老公:

谢谢你的来信!

我在娘家一切都好,不用挂念。忘了告诉你了,存折上的存款已经转存到了我的帐户,本来我还稍许担心你的经济情况,不过既然你能恶性透支信用卡过得那么滋润,也用不着我担心了。

另外,我做个善意的提醒,家里厨房碗柜最下面还有2包速食面,虽然你现在吃得挺好,不过我还是有些担心,也许当信用卡告罄后而“带鱼、麻杆、猪头三”他们个个忙得没空见面的时候,你会需要它们。

替我向对门的新邻居问声好,月底房屋贷款就会到期,到时你就不得不和你的新朋友说拜拜了!对了家里的花你千万别浇水,我种的是仙人掌。咪咪和我在一起,家里的灭害灵早用光了,现在你一定在和小强面面相觑吧。我那两个可爱的弟弟当然不会找你什么麻烦,他们一直在劝我离婚,找一个有本事的男人。

现在才觉得回家的感觉真好,不必每天那么辛苦的洗衣烧饭真是开心!

祝你明天和冰冰玩得愉快,另外听说冰冰的新男友是体育学院的拳击教练,也不知道是真是假,你知道我没那么八卦的啦!

再见!

你亲爱的老婆

上一篇:职业道德和道德诚信自我评价下一篇:武科大汽车文化