码迷,mamicode.com
首页 > Web开发 > 详细

netty学习(一)--linux下的网络io模型简介

时间:2015-08-18 22:45:17      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:netty   linux   io   descriptor   nio   

           linux的内核将所有的外部设备都看作一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令

,返回一个file descriptor(fd,文件描述符)。而对一个socket的读写也会有相应的描述符,成为socketfd

(socket描述符),描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)。

        根据unix编程对I/O模型的分类,unix提供了5种I/O模型,分别是:

 (1)阻塞I/O模型:最常使用的就是阻塞I/O模型,在默认条件下所有的文件操作都是阻塞的!!

 (2)非阻塞I/O模型

  (3)I/O复用模型

  (4)信号驱动I/O模型

  (5)异步I/O模型


对于大多数程序员来说,不需要了解网络编程的底层细节,大家只需要有个概念,知道对于操作系统而言,底层

是支持异步I/O通信的,java NIO的核心类库多路复用器就是基于epoll的多路复用技术实现!!


在I/O编程过程中,当需要处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O

多路复用技术通过把多个I/O阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以处理多个

客户端请求。与传统的多线程/多进程模型相比,I/O多路复用的最大优势是系统开销小,系统不需要创建

新的额外进程或者线程,也不需要维护这些线程和进程的运行,降低了系统的维护性工作量,节省了系统资源

,I/O多路复用的主要应用场景:

     (1)服务器需要处理多个处于监听状态或者多个连接状态的socket;

      (2)服务器需要处理多种网络协议的socket


linux目前支持的I/O多路复用的系统调用有select、pselect、poll、epoll



版权声明:本文为博主原创文章,未经博主允许不得转载。

netty学习(一)--linux下的网络io模型简介

标签:netty   linux   io   descriptor   nio   

原文地址:http://blog.csdn.net/liu136313/article/details/47760553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!