在分析 I/O 模型之前,首先了解 同步 I/O 和 异步 I/O 的基本概念:
同步 I/O:进程调用 I/O 操作函数时,在 I/O 操作函数返回之前,该进程会被挂起(即阻塞),直到 I/O 操作完成后返回;
异步 I/O:进程调用 I/O 操作函数时,在 I/O 操作函数返回之前,该进程不会被挂起(即不阻塞),当 I/O 操作完成后会通知方式告知进程;
在 Unix 系统中主要有 5 种 I/O 模型:阻塞式 I/O;非阻塞式 I/O;I/O 多路复用;信号驱动式 I/O;异步 I/O;
一般一个输入...
分类:
其他好文 时间:
2014-12-13 13:31:12
阅读次数:
188
在读redis源代码的过程中,我一直在考虑一个问题,就是“为什么单线程的redis能做到如此高效?”。为了弄清楚这个问题,我查阅了一些资料,大概搞清楚了epoll等I/O模型的发展及其原理,以下是一个记录整理。##I/O模型###操作系统与网络I/O上图来自维基百科,是一个基本的计算机..
分类:
其他好文 时间:
2014-12-04 18:15:00
阅读次数:
293
socket 阻塞 与 非阻塞
author:songyanwu
1 概念理解
其实在我们在进行网络编程,在理解阻塞与非阻塞同时,还应该清楚同步与异步!
同步与阻塞
同步和阻塞是不同的,可是有时候在理解有会很模糊;
同步:事情一件件的做,做完一件返回一件,做不完不回复也不返回。
阻塞; 阻塞调用是指调用结果返回之前,当前线程会被挂起(线程进入非可执行状态,在这个状态下,cp...
分类:
其他好文 时间:
2014-11-26 11:23:03
阅读次数:
335
在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析。Linux安装文档中给出的最小值:fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 42...
分类:
数据库 时间:
2014-11-25 12:11:05
阅读次数:
225
AIO用于文件处理还是比较快乐的,但用AIO来写网络消息处理服务器端与客户端是比较麻烦的事情,当然这只是我个人意见,主要是有几点原因:一是AIO需要操作系统支持,还好Windows与Linux(模拟)都支持;二是AIO同时使用递归调用和异步调用容易把程序员搞晕,代码容易出错;三是Com..
分类:
编程语言 时间:
2014-11-23 23:33:41
阅读次数:
506
什么是NodeJS。浏览器可以解析JS,NodeJS也可以解析JS,它就是一个JS的解析器。浏览器利用JS操作DOM,而NodeJS利用JS操作磁盘文件或搭建HTTP服务器。NodeJS的作者创造NodeJS的目的是为了实现高性能的Web服务器,所以他首先看重的是事件机制和异步IO模型的优越性。...
fs.file-max=6815744--表示文件句柄的最大数量,表示在Linux系统中可以打开的文件数量。fs.aio-max-nr=1048576--此参数限制并发未完成的请求,避免I/O子系统故障。推荐值是--1048576=1024*1024,即1024K。kernel.shmall=2097152--表示可用共享内存的总量,单位是页,在32位系统..
分类:
数据库 时间:
2014-11-15 06:45:13
阅读次数:
218
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的N...
分类:
其他好文 时间:
2014-11-15 00:11:49
阅读次数:
301
同步IO与异步IO的区别 首先要明确一点:不同IO模型之间的差别本质上是CPU的参与方式这里重点说一下各自的应用场景如何选择同步还是异步呢?主要有这么几个指标供参考1. 并发数量2. 接收字节数3. 处理请求所需CPU时间我们一个一个来考察并发数并发低的时候同步IO与异步IO差别不大并发高时差别会比...
分类:
其他好文 时间:
2014-11-13 09:19:22
阅读次数:
191