网络基础
文章平均质量分 53
咚伢
linux C
展开
-
reactor模型原理以及采用epoll的简单实现
reactor 模型 UML Reactor模式是处理并发IO的常见模式,用于同步I/O。中心思想是将所有要处理的IO事件注册到一个中心复用器上,同事主线程或进程阻塞在多路复用器上。一旦有I/O事件到来或是准备就绪,那么多路复用器返回并将事先注册的I/O事件分发到对应的处理器中。 组成部分 多路复用器:由OS提供,在linux一般指select,poll,epoll 事件分发器:将多路复用器中返回的就绪事件分到对应的处理函数中 事件处理器:负责处理特定事件的处理函数 优点 响应快,不必为单个同步时间原创 2021-06-11 10:11:40 · 397 阅读 · 2 评论 -
网络IO模型(二):多路复用IO
多路复用IO (IO multiplexing) 提到多路复用,大家最熟悉的莫过于select/epoll。有些地方也将这种IO方式称之为事件驱动IO。我们知道,select/epoll的好处在于单个进程就可以同时处理多个网络连接的IO。它的基本原理就是select/epoll会不断轮训所负责的所有socket.当某个socket到达了,就会通知用户进程。它的流程下: 如上图,当用户进程调用select,那么进程就会block,同时kernel监听所有select负责的socket,当有一个socket原创 2021-06-01 20:41:40 · 143 阅读 · 0 评论 -
网络IO模型(一):阻塞IO与非阻塞IO
前言 网络IO会涉及到两个系统对象 用户空间调用IO的进程或线程 内核空间的内核系统 比如发生IO read时,会经历两个阶段,一个是等待数据准备就绪,另一个是将数据从内核拷贝到进程或线程中。因为在这两个阶段上有不同的情况,所以出现了多种网络IO模型 阻塞IO(blocking IO) 在linux中,默认情况下所有socket都是blocking的,如下图: 当用户进程调用read时,Kernel就进行第一阶段:准备数据。对于网络IO来说,很多时候数据包都没有到达,这个时候内核在等足够的数据到来。那原创 2021-06-01 11:24:43 · 475 阅读 · 0 评论