转:Linux网络IO并行化技术概览】的更多相关文章

转:http://codinginet.com/articles/view/201605-linux_net_parallel?simple=1&from=timeline&isappinstalled=0 Linux网络IO并行化技术概览 By mikewei at 2016-05-21 00:30 阅读(276) 过去的十年中互联网经历了爆发式的增长,这背后有什么技术平台起了最为关键的作用,我认为是Linux,即使在云计算流行的今天,它依然是最重要的一块基石.我们或许经常听到关于什么是…
Socket-IO 系列(一)Linux 网络 IO 模型 一.基本概念 在正式开始讲 Linux IO 模型前,先介绍 5 个基本概念. 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对 32 位操作系统而言,它的寻址空间 (虚拟存储空间)为 4G (2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核 (kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内…
标准I/O VS 网络IO 标准I/O又称为标准I/O流,从某种意义上讲是全双工的,因为程序能够在同一个流上执行输入和输出. Unix/Linux对网络的抽象是一种称为套接字的文件类型.和任何Unix/Linux文件一样,套接字也是用文件描述符来引用的,在这种情况下称为套接字描述符.引用进程通过读写套接字描述符来与运行在其他计算机上的进程通信. 然而对流的限制和对套接字的限制,有时候会相互冲突.(However, there are restrictions on full-duplex str…
概述 Linux内核将所有外部设备都看做一个文件来操作.对该文件的读写操作会调用内核提供的系统命令, 返回一个fd(file descriptor)文件描述符.而对一个socket的读写也有相应的描述符即 socketfd. 描述符即一串数字,指向内核中的一个结构体 Unix.Linux提供五种 i/o 模型,分别如下: 阻塞i/o模型 最常用的I/O模型就是阻塞I/O模型.缺省情况下,所有文件操作都是阻塞的.我们以套接字接口为例讲解此模型:在进程空间中调用recvfrom,其系统调用直到数据包…
同步和异步,阻塞和非阻塞 同步和异步 关注的是结果消息的通信机制 同步:同步的意思就是调用方需要主动等待结果的返回 异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等. 阻塞和非阻塞 主要关注的是等待结果返回调用方的状态 阻塞:是指结果返回之前,当前线程被挂起,不做任何事 非阻塞:是指结果在返回之前,线程可以做一些其他事,不会被挂起. 两者的组合 1.同步阻塞:同步阻塞基本也是编程中最常见的模型,打个比方你去商店买衣服,你去了之后发现衣服卖完了,那你就在店里…
来源:微信公众号「编程学习基地」 IO 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用. 在IO多路复用技术描述前,先讲解下同步,异步,阻塞,非阻塞的概念. 网络IO模型 linux网络IO中涉及到的模型如下: (1)阻塞式IO (2)非阻塞式IO (3)IO多路复用 (4)信号驱动IO (5)异步IO 今天不谈信号驱动IO,略过.. 同步/异步 在学习IO模型的时候,我们必须明确一个概念,处理 IO 的…
作为一种容器虚拟化技术,Docker深度应用了操作系统的多项底层支持技术. 早期版本的Docker是基于已经成熟的Linux Container(LXC)技术实现的.自Docker 0.9版本起,Docker逐渐从LXC转移到新的libcontainer(https://github.com/docker/libcontainer)上,并且积极推动开放容器规范runc,试图打造更通用的底层容器虚拟化库. 从操作系统功能上看,目前Docker底层依赖的核心技术主要包括Linux操作系统的命名空间(…
I/O( INPUT OUTPUT),包括文件I/O.网络I/O. 计算机世界里的速度鄙视: 内存读数据:纳秒级别. 千兆网卡读数据:微妙级别.1微秒=1000纳秒,网卡比内存慢了千倍. 磁盘读数据:毫秒级别.1毫秒=10万纳秒 ,硬盘比内存慢了10万倍. CPU一个时钟周期1纳秒上下,内存算是比较接近CPU的,其他都等不起. CPU 处理数据的速度远大于I/O准备数据的速度 . 任何编程语言都会遇到这种CPU处理速度和I/O速度不匹配的问题! 在网络编程中如何进行网络I/O优化:怎么高效地利用…
Linux 网络编程的5种IO模型:异步IO模型 资料已经整理好,但是还有未竟之业:复习多路复用epoll 阅读例程, 异步IO 函数实现 背景 上一讲< Linux 网络编程的5种IO模型:信号驱动IO模型 >我们已经介绍了信号驱动模型,以及带有BUG的例程. 前面四种IO模型实际上都属于同步IO,只有最后一种是真正的异步IO,因为无论是多路复用IO还是信号驱动模型,IO操作的第2个阶段都会引起用户线程阻塞,也就是内核进行数据拷贝的过程都会让用户线程阻塞. 这一讲我们来介绍最后一种IO模型.…
针对linux 操作系统的5类IO模型,阻塞式.非阻塞式.多路复用.信号驱动和异步IO进行整理,参考<linux网络编程>及相关网络资料. 阻塞模式 在socket编程(如下图)中调用如下四类函数导致阻塞: 读操作(read.readv.recv.recvfrom.recvmsg):当应用程序调用读函数,该系统调用进入内核态,若套接字接收缓冲区无数据则阻塞,数据到达则将接收缓冲区数据拷贝至进程缓冲区并返回.对TCP而言,一旦接收缓冲区中与数据则进程被唤醒,对UDP而言有完整的UDP报文达到进程…