APP下载

基于IOCP的放射源自动监控系统

2014-09-14杨冬黎

关键词:放射源数据通信线程

杨冬黎,杨 斌

(1. 东北石油大学 计算机与信息技术学院,黑龙江 大庆 163318;2. 黑龙江省科学院技术物理研究所,哈尔滨150090)

放射源是核技术应用的必然产物,是安全管理的重要组成部分,据不完全统计目前放射源使用数目年均以20%的速度在增加[1].为确保放射源得到有效安全的控制,放射性废物和废弃放射源得到安全储存处置,减少其对人们在经济、健康等方面造成的危害,必须建立一套构筑核与辐射安全监管防护体系[2].在这种情况下,纯人工管理维护几乎不可能[3],所以放射源自动监控系统应运而生.

放射源自动监控系统能够实现对放射源及其相关设施的三位一体的监控,即:实时自动监控辐射环境剂量率,追踪放射源位置,监视放射源周围环境等,使管理部门及时掌控放射源的动态信息;此外在核泄露发生时,还可以部署应急监控设备,一方面可以作为警戒围栏向误入警戒范围的人畜发出声光报警,另一方面可以通过机械设施将应急系统投入超出人体所能承受的高辐射剂量的区域,可以为应急指挥现场提供准确的剂量读数参考.

随着我国环境保护工作的发展,我国放射源监测技术也取得了较大的进步,但由于国内放射源监测网络的搭建正处在探索阶段[4],特别是在数据服务器研发方面多数停留在科学研究层面上,并没有过多的理论可供参考,而且多数研制成型上位机只是针对特定需求而进行开发的,功能单一、缺少灵活性.虽然国内外有完成端口在信息通信方面应用的实例,但当前放射源监测数据多通过串口或有线连接方式进行传输,因此对基于无线网络传输数据的研究,特别是对其优化则具有较高难度.本文试图在原有放射源自动监控系统中数据通信优化方面展开研究.针对数据通信方式占用服务器系统资源多、并行处理能力差的缺陷,通过封装IOCP模型来改善原有数据通信方式的不足,并对封装IOCP模型优化方案进行了探索性研究.

1 IOCP内涵

IOCP又被称作“I/O完成端口”,是微软公司提出的一种运行于Windows操作系统之上的各设备间进行I/O处理的高效工作机制,设备可以是文件、命名管道、串口、并口等.IOCP是一种基于Windows内核级的一种高效的通信处理机制,利用此机制对Winsock的通信进行管理,通过指定数量的线程,处理重叠的I/O操作[5].

为了测试IOCP的工作性能,分别采用传统Socket和完成端口两种通信方式进行的压力测试(每秒发送200个数据包),图1、2是在等同环境下得出的测试结果.从图1中可以看出并发连接数越多IOCP的CPU占用率的优势越明显,其CPU的占用率比传统Socket小.图2中可以看出连接数越多,IOCP在内存占用方面的优势越明显.所以采用IOCP工作模式的通信方式更适合大规模数据访问环境.

图1 传统Socket与IOCP的CPU占用率对比图

图2 传统Socket与IOCP的内存使用情况对比图

2 IOCP实现数据通信

作为放射源自动监控系统中连接监测终端和前端监控系统的数据服务器,一方面负责快速响应来自不同地点,数以千计放射源监测终端发送来的数据处理请求和指令请求;另一方面要将各终端工作运行状况及时反馈给前端控制系统,此外,它还是整个系统的底层数据管理者.所以,数据服务器在整个系统运行中发挥着举足轻重的作用.放射源自动监控系统架构图如图3所示.

图3 放射源自动监控系统架构图

又因为数据通信架起了前端控制系统和数采终端沟通的桥梁,缺少它前端控制系统就无法实现对监测终端的有效监控,监测终端也无法将实时采集的监测数据上传到监控中心,这样整个监测系统就失去了运行的意义.所以如何建立数据服务器和监测终端的数据通信,以及数据通信优化的研究,是保证数据服务器高效运行,乃至整个系统稳定运行的关键所在.

通过进行放射源在线监测系统研发过程中发现,采用传统通信方式进行无线网络数据传输时,由于无线网络受外界干扰较大,信号不稳定,极易造成网络传输中断形成死链接.此外,多监测终端的并发访问也是对数据服务器工作能力的严峻考验,如果数据服务器由于申请访问量过大无法及时响应,致使终端始终处于等待状态的现象时有发生,而且极易遭成网络堵塞.这些问题的存在会最终导致数据服务器工作效率的极速下降,以及资源迅速耗竭而崩溃,进而致使整个系统无法正常运转.

一般通信模块都是先创建一个accept线程等待一个用户发出请求,并为每个用户请求都创建一个新的线程.然后accept线程被挂起,等待下一个用户请求的到来.但是这种通信模块也有问题,问题的瓶颈就是应用程序为每个用户请求都创建了一个线程,而且这些线程不会被挂起,操作系统要花大量的时间来进行线程调度,极大的浪费了CPU资源[6].

针对上述问题和传统放射源监测系统中数据通信方面的优化研究,以放射源数据在数据服务器和监测终端间的数据交互和数据服务器内部通信模块的工作机制为主要研究对象,通过对完成端口的工作模式在相关领域应用的研究,拟将这些技术与传统数据通信技术进行融和,相对于传统的通信方式采用封装了高效I/O模式的完成端口工作模式则更适合这种大访问量的数据通信.其工作线程不会阻塞在费时的I/O操作上,且可以为任何用户的任何I/O操作服务,使线程和CPU的利用率增高,且只需少数几个线程就可以处理大量I/O请求,避免CPU花费时间在大量线程调度上.具体情形是IOCP(I/O完成端口)模型根据用户设定,事先开好多个线程存储在线程池中.然后所有用户的请求都投递到一个完成端口上,然后各线程逐一地从完成端口中取得用户消息并加以处理,这就避免了为每个用户开一个线程,既减少了线程资源,又提高了线程的利用率,最终实现对数据通信的优化.IOCP模型图如图4所示.

3 数据包排序问题的优化

IOCP通信服务程序使用多个线程来实现高性能和高并发性,因此异步I/O请求的线程与异步处理I/O完成的线程可能不是同一个线程,工作者线程的完成顺序是不确定的.换句话说,先完成异步I/O的可能后处理,后完成异步I/O的可能先处理.当用户请求投递到IOCP来发送数据时,等待发送的数据也被重新排序了.针对该问题,通过在缓冲类中增加读写顺序号,并且按照顺序号来处理内存.如果顺序号相同,那么这个数据就可以进行处理,否则,要将不正确的顺序号的数据包进行缓存,直到它之前的数据包处理完后才可以处理它.

图4 IOCP模型

4 结 语

本文开发了一个基于IOCP的放射源自动监控系统,该系统对传统通信方式进行了改进,以适应系统的工作环境,从根本上发挥完成端口在处理大量并发访问方面的优势,提升数据服务器的吞吐量和工作效率,有利于工作人员对放射源的检测与监控,从而对监控数据进行分析与总结.

参考文献:

[1] 濮庆福,张小毛.从放射事故看如何完善放射源的管理[J].中国辐射卫生,2006,15(2): 175-176.

[2] 郁 蕾,匡 恒.放射源远程自动监控管理体系的构建[J].环境监控与预警,2011,3(1): 30-32.

[3] JONES A, OHLUND J. Networking programming for Microsoft windows [M]. Washington: Microsoft Press, 2002:145-169.

[4] 刘 华,赵顺平,梁梅燕,等.我国辐射环境监测的回顾与展望[J].辐射防护,2008,28(6): 375-376.

[5] 张静华,张玉明.IOCP研究及在大规模网络通信系统中的应用[J].计算机与现代化,2004(9): 41-46.

[6] 陈和平,周静宁,顾晋广.IOCP机制与网络代理服务器的实现方法[J].计算机应用,2003,23(4): 109-110,114.

猜你喜欢

放射源数据通信线程
宁夏铱-192放射源辐射事故调查及分析
一起铯-137放射源失控事故应急监测探讨
基于梯度上升算法的丢失放射源搜寻方法
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
基于快牙平台实现全站仪与计算机的数据通信
监测系统接口数据通信方式
浅谈linux多线程协作
一种高效可靠的串行数据通信协议及处理算法
TCN实时协议栈过程数据通信研究