首先两个区别:同步(synchronized)、异步(asynchronized)IO的区别:多个IO事件,轮询处理就是同步IO;分时间片处理就是异步IO。阻塞、非阻塞:阻塞意思是IO要彻底完成;非阻塞是说操作后立即返回状态码,不等IO完成。一般来说,IO分为下面这几类:Blocking IO同步阻...
分类:
其他好文 时间:
2015-09-02 22:01:08
阅读次数:
283
其实跟架构无关,这其实是我对Netty的一个整体认识。它会一直更新,直到学习完Netty为止。根据User guide,Server端会有一个bossGroup来接受Socket请求,有一个workerGroup来处理IO事件,这边的事件包括accept,connect, read, write(待...
分类:
Web程序 时间:
2015-08-31 21:40:05
阅读次数:
153
Channel是Reactor结构中的“事件”,它自始至终都属于一个EventLoop,负责一个文件描述符的IO事件。Poller是实现了IO复用,是个虚基类。...
分类:
其他好文 时间:
2015-08-05 01:06:12
阅读次数:
128
简介 ?epoll是Linux内核中的一种可扩展IO事件处理机制,最早在Linux2.5.44内核中引入,可被用于代替POSIX select和poll系统调用,并且在具有大量应用程序请求时能够获得较好的性能(此时监控的文件描述符数目非常...
分类:
其他好文 时间:
2015-06-16 00:02:28
阅读次数:
245
1.轮转调度
(1)时间片轮转调度算法
CPU的时间分成一段一段的,每一段就是一个时间片,进程轮流使用时间片。示意图如下:
(2)虚拟轮转法
时间片轮转调度算法对IO型进程不公平:对于CPU型进程,该进程获得CPU时间片后总是会用完整个时间片;但是对于IO型,它经常是运行一部分时间片后就去等待IO事件,总是用不完自己的时间片。为了解决这个问题,提出了虚拟轮转法,该算法的示意图如下:...
分类:
编程语言 时间:
2015-06-13 23:10:46
阅读次数:
609
前言: 最近帮朋友review其模块服务代码, 使用的是python的twisted网络框架. 鉴于之前并没有使用过, 于是决定好好研究一番. twisted的reactor模型很好的处理了网络IO事件, 以及定时任务触发. 但包处理后的业务逻辑操作, 需要根据具体的场景来决定....
分类:
编程语言 时间:
2015-05-27 15:38:49
阅读次数:
521
主要内容:Socket的几个I/O事件、Socket的同步等待机制。
内核版本:3.15.2
我的博客:http://blog.csdn.net/zhangskd
概述
socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。
对于这些事件,socket中分别定义了相应的事件处理函数,也称回调函数。
Socket I/O事件...
分类:
其他好文 时间:
2015-05-23 22:48:04
阅读次数:
274
主要内容:Socket I/O事件的定义、I/O处理函数的实现。
内核版本:3.15.2
我的博客:http://blog.csdn.net/zhangskd
I/O事件定义
sock中定义了几个I/O事件,当协议栈遇到这些事件时,会调用它们的处理函数。
struct sock {
...
struct socket_wq __rcu *sk_wq; /*...
分类:
其他好文 时间:
2015-05-23 22:46:53
阅读次数:
260
主要内容:Socket的异步通知机制。
内核版本:3.15.2
我的博客:http://blog.csdn.net/zhangskd
概述
socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。
对于这些事件,socket中分别定义了相应的事件处理函数,也称回调函数。
Socket I/O事件的处理过程中,要使用到sock...
分类:
其他好文 时间:
2015-05-23 22:46:47
阅读次数:
343
一.基本概念:
1.epoll是什么:
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入就绪队列(Ready)的描述符集合就行了。epo...
分类:
其他好文 时间:
2015-05-17 00:53:13
阅读次数:
194