一种应用于Windows下完成端口模型操作系统的制作方法

文档序号:15115583发布日期:2018-08-07 20:00阅读:175来源:国知局

本发明涉及windows下完成端口模型操作系统的技术领域,尤其涉及多线程方式的客户端并发数而言有了质的提升。



背景技术:

一种应用于windows下完成端口模型操作系统,无论是单个超线程cpu还是双cpu,多线程方式的服务器程序与采用完成端口模型的服务器程序相比,性能差距明显。在单个超线程cpu下,由于是cpu内核指令模拟双cpu效果,因而不是严格的多线程。此时的多线程模型服务器程序cpu占用达45%,而完成端口模型只用了22%的cpu资源。至于物理内存使用情况,由于在多线程模型下系统要为每个线程分配交换空间以及缓存区,因而占用内存较大,而完成端口模型无需太多交换页面,占用的缓存区也少,所以使用的物理内存较少。在双cpu下,多线程模型的服务器程序cpu占用率为26%,而完成端口模型为13%。此时由于是真正的多cpu,多线程模型服务器程序性能也提升不少,但是完成端口模型的4个cpu个数的2倍)工作线程加完成消息通知队列的效率更高,占用cpu资源更少,内存使用也较少。从客户端的一次连接成功率来看,无论是第一组配置还是第二组配置的服务器硬件,完成端口的成功率都要大大高于多线程模型。



技术实现要素:

本发明的目的是windows下的完成端口原型。采用这种技术,可以利用为数不多的线程为成千上万的客户同时提供网络服务。

为了解决背景技术所存在的问题,本发明是采用以下技术方案:它的操作方法为:

1、经典的网络服务器逻辑大多采用多线程/多进程方式,当一个客户端发起到服务器的连接时,服务器将创建一个线程,让这个新的线程来处理后续事务。这种以一个专门的线程/进程来代表一个客户端对象的编程方法非常直观,易于理解。

2、创建线程/进程和销毁线程/进程口,而是一个windows的内核对象,它包括两部分:一个是线程池,另一个就是消息通知队列,i/o完成端口是允许应用程序使用线程池来处理异步i/o请求的机制,线程池中的线程都负责处理i/o请求。通过i/o完成端口应用程序可以更快更有效地处理异步i/o请求。由操作系统把已经完成的重叠i/o请求的通知放入其中,一旦某项i/o操作完成,某个可以对该操作结果进行处理的工作者线程就会收到一则通知,而套接字在被创建后,可以在任何时候与某个完成端口进行关联。

3、对于一个需要应付同时有大量客户端并发请求的网络服务器来说,线程池是一个非常好的解决方案。线程池不光能够避免频繁地创建线程和销毁线程,而且能够用数目很少的线程处理大量客户端并发请求。系统产生固定数目的线程为客户提供服

务,线程数量与客户的数量没什么联系。一方面,一个线程可以分时地为多个客户服务,另一方面,在一个客户的会话期间,多个线程接力为它提供服务。线程池方法避免了线程的频繁创建和销毁带来的开销。操作系统为基于线程池的解决方案提供了一个极好的支持,这就是windows下的完成端口(iocp)原型。采用这种技术,可以利用为数不多的线程为成千上万的客户同时提供网络服务实践表明,这种实现方法可以获得极好的性能和强大的扩展能力,程序的设计也不复杂。



技术特征:

技术总结
一种应用于Windows下完成端口模型操作系统,它涉及多线程方式的客户端并发数而言有了质的提升,同时避免了CPU在线程(进程)调度和切换上的大量开销,从而构建了一个稳定、高性能的服务器程序。本操作系统体现在:1、完成端口模型中有类似于WEB应用服务器如Tomcat的线程池,但同时还多了一个完成消息队列,线程池中的线程都负责处理I/O请求,相对于收到I/O请求时创建线程,通过I/O完成端口应用程序可以更快更有效的处理异步I/O请求。2、线程调用等待一个完成包到达完成端口,而不是直接等待异步I/O操作完成。

技术研发人员:不公告发明人
受保护的技术使用者:长沙青核桃网络科技有限公司
技术研发日:2017.02.01
技术公布日:2018.08.07
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1