欢迎来到天天文库
浏览记录
ID:46316606
大小:76.00 KB
页数:12页
时间:2019-11-22
《一种串口通讯新模型探究和应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一种串口通讯新模型探究和应用摘要:该文借鉴I/O完成端口模型(IOCP)的核心思想,建立了一个适用于协议性串口通讯的新模型。该模型提出了一个协议性串口通讯的最小单位一一“通讯元”,将“通讯元”提交到事件队列线程中自动处理,简化了处理过程并提高了运行效率。同时,该文基于该模型设计出了一个协议性串口通讯模块,以封装通讯底层的细节,从而提供方便的通讯接口。将该模块应用于工业造气炉监控组态软件设计中,实际运行表明:该模型具有简单的接口和稳定、高效的运行机制。关键词:IOCP;串口通讯;通讯元中图分类号:TN915文献标识码:A文章编号:1009-3044(2013)04
2、-0689-04TheResearchandApplicationofaNewSerialCommunicationModelCHENGeng(CollegeofInformationScience&Technology,XiamenUniversity,Xiamen361005,China)Abstract:Inthispaper,thecoreideaof1/0CompletionPortModelisborrowedtobuildanewmodel,whichissuitablefortheserialcommunicationbasedonprotoco
3、LAminimumunitcalled'communicationunit,isputforwardinthismode1.Thecommunicationunit,issubmittedtoanevent-queue-threadandisdealtautomatically.Itwillhelptosimplifytheprocessandincreaseoperationalefficiency.Meanwhile,inthispaper,aserialcommunicationmodulebasedonthemodelisdesignedtooffera
4、convenientcommunicationinterface・Themoduleisappliedinthesnoopwareofindustrialgasifier・It,sprovedthatthismodelhasasimpleinterfaceandefficientoperationmechanism.Keywords:IOCP;serialcommunication;communicationunitWeb服务器、网络游戏服务器等应用经常会面对海量的客户端连接请求以及数据通信,这种海量的并发的连接请求与数据通信,往往成为制约服务器正常工作的因素。
5、这些与服务器的数据传输具有共同的特点:客户连接量是海量的,但每个连接上收发的数据包容量是较小的。微软公司在Winsock2中引入的完成端口(CompletionPort,IOCP)模型提供了最好的伸缩性和最高的数据吞吐率,是处理大量并发连接的最佳方案。在上位机与多台下位机通过串口通信的环境中,随着连接数的增多,系统通信的速度降低,通信错误率增加,如何有效的管理和协调众多线程,是一个比较困难的问题。该文基于IOCP核心思想提出了一个通讯元模型,并针对实际应用设计了一个支持多串口通讯模块。该模块应用于工业造气炉监控组态软件设计中,实际运行表明:该模型具有简单的接口和
6、稳定、高效的运行机制。1I/O完成端口模型(IOCP)简介1.1完成端口完成端口是Windows提供的一种高效的I/O模型,它利用少量的工作线程来完成大量的异步I/O处理,使得I/O处理和非I/O处理能够重叠并行的进行,从而满足大并发量管理工作。完成端口的目标就是利用多线程来最大化提高并行执行的效率,避免线程上不必要的阻塞,减少线程上下文切换带来的资源和时间开销。1.2完成端口工作原理完成端口会创建一个消息队列和一个线程池。根据计算机系统中的处理器数目,建立相应的工作者线程,这些线程专门用来处理和客户端通信。当客户端建立新的socket连接时,该socket连接
7、的句柄就与完成端口绑定起来。该socket的网络通信请求按照先进先出的方式进入到完成端口的消息队列中去。线程池取出空闲的线程,让线程扫描完成端口中的消息队列,取出队列里面的通信请求(如发送数据、接收数据)并处理。等处理完毕后再扫描队列里面的下一个网络通信请求,如此循环。需要注意的是,完成端口对工作线程的管理具有一定的原则:首先在创建完成端口时要制定最大的并发线程数(补充的后文流程),一般情况是一个处理器对应一个并发线程,而工作线程的数量大于或等于最大并发线程书。考虑到线程会进入挂起的状态,为了让应用程序有足够的工作线程为I/O请求服务,一般创建工作线程的个数为C
8、PU个数的两倍。1.3完
此文档下载收益归作者所有