开始准备看Java NIO的,这篇文章:http://xly1981.iteye.com/blog/1735862 里面提到了这篇文章 http://xmuzyq.iteye.com/blog/783218 同步.异步.阻塞.非阻塞.reactive.proactive等讲的不错. 在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式, 其中Reactor模式用于同步I/O, 而Proactor运用于异步I/O操作. 什么是同步和异步 同步和异步是针对应用程序和内核的…
上次写了一篇文章:Unix IO 模型学习.恰巧在这次周会的时候,@fp1203 (goldendoc成员之一) 正好在讲解poll和epoll的底层实现.中途正好讨论了网络IO的同步.异步.阻塞.非阻塞的概念,当时讲下来,大家的理解各不相同,各执己见.搜索了网络上的一些文章,观点也各不相同,甚至连wiki也将异步和非阻塞当成一个概念在解释. 虽然网络上充斥了大量关于同步.异步.阻塞.非阻塞的文章,但大都是抄来抄去,没有一个权威的说法.但我找到了这一篇文章,该文章引用了<UNIX网络编程 卷1>…
一.关于I/O模型的问题 最近通过对ucore操作系统的学习,让我打开了操作系统内核这一黑盒子,与之前所学知识结合起来,解答了长久以来困扰我的关于I/O的一些问题. 1. 为什么redis能以单工作线程处理高达几万的并发请求? 2. 什么是I/O多路复用?为什么redis.nginx.nodeJS以及netty等以高性能著称的服务器其底层都利用了I/O多路复用技术? 3. 非阻塞I/O为什么会流行起来,在许多场景下取代了传统的阻塞I/O? 4. 非阻塞I/O真的是银弹吗?为什么即使在为海量用户提…
系统中有哪5种IO模型?什么是 select/poll/epoll?同步异步阻塞非阻塞有啥区别? 本文地址http://yangjianyong.cn/?p=84转载无需经过作者本人授权 先解开第一个疑惑:有哪五种I/O模型 - Blocking I/O[阻塞I/O] - NonBlocking I/O[非阻塞I/O] - Multiplexing I/O[I/O多路复用] - Asynchronous IO[异步I/O] - Signal Driven IO[信号驱动I/O] 这些IO模型具体…
提到高性能,我想大家都喜欢这个,今天我们就主要来弄明白在高性能的I/O设计中的几个关键概念,做任何事最重要的第一步就是要把概念弄的清晰无误不是么?在这里就是:阻塞,非阻塞,同步,异步. OK, 现在来具体看看. 1. 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值. 2. 同步和异步是针对应用程序和内核的交互而言的,同步指的是用…
一.理论基础 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有内容都是围绕进程的概念展开的. 即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力.将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在. 必备的理论基础: #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将…
1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操作方式两个特点: (1)用户独占全机.不会出现因资源已被其他用户占用而等待的现象,但资源的利用率低. (2)CPU 等待手工操作.CPU的利用不充分. 批处理—磁带操作: 主机与输入机之间增加一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户作业读入…
  IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符).描述符就是一个数字,指向内核中一个结构体(文件路径,数据区,等一些属性).那么我们的应用程序对文件的读写就通过对描述符的读写完成. linux将内存分为内核区,用户区…
以下是IO的一个基本过程 先理解一下用户空间和内核空间,系统为了保护内核数据,会将寻址空间分为用户空间和内核空间,32位机器为例,高1G字节作为内核空间,低3G字节作为用户空间.当用户程序读取数据的时候,会经历两个过程:磁盘到内核空间(这块消耗性能,下面简称内核数据准备),内核空间拷贝到用户空间(下面简称用户空间拷贝). 内核数据准备这部分是由DMA芯片实现的,而用户空间拷贝的实现则是由CPU实现的,后者非常快,能到1G以上,所以,所谓的阻塞基本是内核数据准备的过程,这块消耗时间.为啥呢?简单的…
同步异步,阻塞非阻塞 和nginx的IO模型  原文:https://www.cnblogs.com/wxl-dede/p/5134636.html 同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication).所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回.但是一旦调用返回,就得到返回值了.换句话说,就是由*调用者*主动等待这个*调用*的结果.而异步则是相反,*调用*在发出…