zoukankan      html  css  js  c++  java
  • netty学习(一)--linux下的网络io模型简单介绍

               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编程过程中,当须要处理多个client接入请求时,能够利用多线程或者I/O多路复用技术进行处理。I/O

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

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

    新的额外进程或者线程,也不须要维护这些线程和进程的执行,减少了系统的维护性工作量。节省了系统资源

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

         (1)server须要处理多个处于监听状态或者多个连接状态的socket;

          (2)server须要处理多种网络协议的socket


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



  • 相关阅读:
    IdTCP的C++Builder2010示例(转)
    BCB实现BMP图片的RGB分解(转)
    c++ builder 2009如何生成独立运行exe(转)
    用于ARM上的FFT与IFFT源代码(C语言,不依赖特定平台)(转)
    灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割
    XS128超声波程序
    兔子--ps中的基本工具总结(ps cs5)
    UML中的用例图
    hdu5400Arithmetic Sequence
    自己定义控件的onMeasure方法具体解释
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7143316.html
Copyright © 2011-2022 走看看