linux基础之IO模型】的更多相关文章

一.IO模型 一次read操作: (1)等待数据准备好:从磁盘到内核内存 (2)从内核内存复制到进程内存 示意图如下: I/O类型: 同步和异步:synchronous,asynchronous 关注的是消息通知机制 同步: 调用发出之后不会立即返回,但一旦返回,则返回的是最终结果 异步: 调用发出之后,被调用方立即返回消息,但返回的并非最终结果:被调用者通过状态.通知机制等来通知调用者,或通过回调函数来处理结果 阻塞和非阻塞: block, nonblock 关注的是调用者等待被调用者返回结果…
前言 之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型: 老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系. 他们的信会被邮递员投递到他们小区门口的收发室里.这和Socket模型非常类似. 下面就以老陈接收信件为例讲解linux的 Socket I/O模型. 一.同步阻塞模型 老陈的女儿第一次去外地工作,送走她之后,老陈非常的挂心她安全到达没有:于是老陈什么也不干,一直在小区门口收发室里等着她女儿的报平安的信…
  转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析   目录(?)[-] 概念理解 Linux下的五种IO模型 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动IO 异步IO模型 个IO模型的比较 selectpollepoll简介 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:  …
Linux 五种IO模型 聊聊Linux 五种IO模型…
Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.比如,调用readfrom系统调用时,必须等待IO操作完成才返回. 异步 异步的概念和同步相对.当一个异步过程调用发出后,调用者不能立刻得到结果.实际处理这个调用的部件在完成后,通过状态.通知和回调来通知调用者.比如:调用aio_read系统调用时,不必等IO操作完成就直接返回,调用结果通过信号来通知调用者. 阻塞与非阻塞 阻塞与非阻塞与等待消息通知…
Windows五种IO模型性能分析和Linux五种IO模型性能分析 http://blog.csdn.net/jay900323/article/details/18141217 http://blog.csdn.net/jay900323/article/details/18140847 重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数.当使用重叠I/O模型时,可以选择使用不同的完成通知方式. 采用事件对象通知的重叠I/O模型是不可伸缩的,因为针对发出WSAWa…
转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型及分析   目录(?)[-] 概念理解 Linux下的五种IO模型 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动IO 异步IO模型 个IO模型的比较 selectpollepoll简介 1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:     …
Linux 为什么要区分内核空间与用户空间? Linux 操作系统的 IO 模型有哪几种?有啥区别? 常说的阻塞现象,到底是咋回事? 网络编程研发时,那块到底耗时最多,代码是否还有优化空间? 前几期的分享,我们站在编码视角去聊 Java IO,旨在理解与编码,本次从 Linux 操作系统层面了解一下 IO 模型,这样方能做到知其然,知其所以然. 01. 内核空间.用户空间 万事万物我们看到的皆是表象,操作系统也不例外.我们经常打交道的用户界面,是操作系统的外在表象,内核才是操作系统的内在核心.…
1.linux文件系统和缓存 文件系统接口 文件系统-一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问. 存储层次 文件系统缓存 主存(通常时DRAM)的一块区域,用来缓存文件系统的内容,包含各种数据和元数据. 2.深入Linux文件IO机制 标准文件访问方式 标准文件IO流程图 直接IO 实现方式 open + O_DIRECT = 绕过内核缓冲区的直接访问,便有效避免了CPU和内存的多余时间开销. 直接绕过IO绕过缓存,不会出现write成功数据丢失的情…
IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段. 这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程. 用户空间.内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟储存空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用户进程不能直接操作内核,保证内核的安全,操作系统将虚拟空间划分为两个部分,一个部分为内核空间,一部分为用户空间…
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事. 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步:       异步的概念和同步相对.当一个异步过程调用发出后,调用者不能立刻得到结果.实际处理…
From:http://www.cnblogs.com/dongguacai/p/5770287.html IO模型 linux系统IO分为内核准备数据和将数据从内核拷贝到用户空间两个阶段. 这张图大致描述了数据从外部磁盘向运行中程序的内存中移动的过程. 用户空间.内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟储存空间)为4G(2的32次方).操作系统的核心是内核,独 立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限.为了保证用…
先说一下IO发生时涉及的对象和步骤.对于一个network IO (这里我们以read举例),它会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核(kernel).当一个read操作发生时,该操作会经历两个阶段: 1)等待数据准备 (Waiting for the data to be ready) 2)将数据从内核拷贝到进程中(Copying the data from the kernel to the process) 阻塞IO(block…
同步与异步:         同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成.         异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了,异步一般使用状态.通知和回调.   阻塞与非阻塞         阻塞是指调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务.        非阻塞是指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会…
IO模型分类 五种IO Model blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO多路复用 signal driven IO 信号驱动IO asynchronous IO 异步IO signal driven IO(信号驱动IO)在实际中并不常用,所以只剩下四种IO Model. 网络IO的两个过程 对于一个network IO ,会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核…
IO模型分类 五种IO Model blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO多路复用 signal driven IO 信号驱动IO asynchronous IO 异步IO signal driven IO(信号驱动IO)在实际中并不常用,所以只剩下四种IO Model. 网络IO的两个过程 对于一个network IO ,会涉及到两个系统对象,一个是调用这个IO的process (or thread),另一个就是系统内核…
1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞      应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示. 我们 第一次接触到的网络编程都是从 listen().send().recv()等接口开始的.使用这些接口可以很方便的构建服务器 /客户机的模型. 在调用recv()/recvfrom()函数时,发生在内核中等待数据和复制数据的过程. 当调用recv()函数时,系统首先查…
在Windows文件指的就是普通的肉眼可见的文件 , 而Linux一切皆文件 https://blog.csdn.net/nan_nan_nan_nan_nan/article/details/81233599 一定要注意生成文件的警告和报错,不能忽略了!!!!!!! #include <stdlib.h> #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { FILE* fp…
Nginx (web server,web reverse proxy): http协议:80/tcp,HyperText Transfer Procotol http协议版本: HTTP/0.9:原型版本,功能简陋 HTTP/1.0:第一个广泛使用的版本,支持MIME HTTP/1.1: 增强了缓存功能 spdy HTTP/2.0  下一次流行 MIME:Multipurpose Internet Mail Extesion 多用途互联网邮件扩展 major/minor:text/plain,…
本文摘自网络:     1.阻塞IO(blocking IO) 在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 图1 阻塞IO 当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据.对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来.而在用户进程这边,整个进程会被阻塞.当kernel一直等到数据准备好了,它就会将数…
对于一个应用程序即一个操作系统进程来说,它既有内核空间(与其他进程共享),也有用户空间(进程私有),它们都是处于虚拟地址空间中.用户进程是无法访问内核空间的,它只能访问用户空间,通过用户空间去内核空间复制数据,然后进行处理. 阻塞io(同步io): 发起请求就一直等待,直到数据返回.好比你去商场试衣间,里面有人,那你就一直在门外等着.(全程阻塞) 非阻塞io(同步io): 不管有没有数据都返回,没有就隔一段时间再来请求,如此循环.好比你要喝水,水还没烧开,你就隔段时间去看一下饮水机,直到水烧开为…
http://www.cnblogs.com/renxs/p/3683189.html…
一.七层网络模型 OSI是Open System Interconnection的缩写,意为开放式系统互联.国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,它是一个七层的.抽象的模型体. 1.物理层 并不是物理媒体本身,它只是开放系统中利用物理媒体实现物理连接的功能描述和执行连接的规程,建立.维护.断开物理连接,传输单位是比特(bit). 物理层的媒体包括架空明线.平衡电缆.光纤.无线信道等.通信用的互连设备指DTE(Data Terminal Equipment)和…
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 五种IO模型聊聊IO多路复用之select.poll.epoll详解 ​…
带着问题阅读 1.什么是同步异步.阻塞非阻塞 2.有几种IO模型,不同模型之间有什么区别 3.不同IO模型的应用场景都是什么 同步和异步.阻塞和非阻塞 同步和异步 广义上讲同步异步描述的是事件中发送方和接收方之间的关系. 当发送方必须依赖接收方的响应结果(无论正确与否)才能进行下一步操作,则两者间的关系是同步的. 当发送方不必依赖接收方的响应即可继续执行,则两者间的关系是异步的.在异步关系中,发送方可能根本不在意接收方的返回信息,也可能接收方通过事件.回调的形式来通知发送方结果. 即在同步关系中…
最近越来越认为,在讲解技术相关问题时,大白话固然很重要,通俗易懂,让人有想读下去的欲望.但几乎所有的事,都有两面性,在看到其带来好处时,不妨想想是否也引入了不好的地方. 例如在博客中,过于大白话的语言的确会让你阅读起来更加顺畅,也更容易理解.但这都是其他人理解,已经咀嚼过了的,人家是已经完全理解了,你从这些信息中大概可能会观察不到全貌.所以,适当的白话是很好的,但这个度得控制一下. 接下来切入正文. 相信大家经常看到这个问题: BIO.NIO 和 AIO 有什么区别? 看到这个问题,可能你脑海中…
IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了.Linux中,提供了select.poll.epoll三种接口函数来实现IO复用. 1.select函数 #include <sys/select.h> #include <sys/time.h> int select(int nfds, fd_set *readfds, fd_set *writef…
Atitit  五种IO模型attilax总结 blocking和non-blocking synchronous IO和asynchronous I   1.1. .3 进程的阻塞1 1.2. 网络IO的模型大致有如下几种:1 1.3.  IO 模型的简单矩阵.如下图所示:2 2. 五种IO模型总结2 2.1. 3.1 blocking和non-blocking区别2 2.2. 3.2 synchronous IO和asynchronous IO区别2 2.3. 各个IO Model的比较如图…
总结 幽默讲解 linux 的 Socket IO 模型(上)…