1、阻塞IO模型 传统的IO模型,即在数据读写的过程中会发生阻塞现象。当用户线程发出IO请求之后,内核回去查看数据是否就绪,如果没有就绪就等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回数据给用户线程,用户线程才解除阻塞状态。典型的阻塞 ...
分类:
编程语言 时间:
2020-09-18 03:12:36
阅读次数:
41
一 IO操作本质 数据复制的过程中不会消耗CPU > 1 内存分为内核缓冲区和用户缓冲区 > # 2 用户的应用程序不能直接操作内核缓冲区,需要将数据从内核拷贝到用户才能使用 > # 3 而IO操作、网络请求加载到内存的数据一开始是放在内核缓冲区的 二 IO模型 1. BIO – 阻塞模式I/O 用 ...
分类:
其他好文 时间:
2020-07-31 12:28:33
阅读次数:
80
一、IO模型介绍 为了更好地了解 IO模型,我们回顾下:同步,异步,阻塞,非阻塞。 1,同步: # 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。 # 按照这个定义,其实绝大多数函数都是同步调用。但是一般而言,我们在说同步、异步的时候, # 特指那些需要其他部件协作或者需 ...
分类:
其他好文 时间:
2020-07-30 14:41:59
阅读次数:
66
从MySQL源码看其网络IO模型 前言 MySQL是当今最流行的开源数据库,阅读其源码是一件大有裨益的事情(虽然其代码感觉比较凌乱)。而笔者阅读一个Server源码的习惯就是先从其网络IO模型看起。于是,便有了本篇博客。 MySQL启动Socket监听 看源码,首先就需要找到其入口点,mysqld的 ...
分类:
数据库 时间:
2020-07-29 15:39:15
阅读次数:
75
Unix网络编程中的五种IO模型 blocking IO - 阻塞IO nonblocking IO - 非阻塞IO IO multiplexing - IO多路复用 asynchronous IO - 异步IO signal driven IO - 信号驱动IO 网络io基本流程 先说明一下IO发 ...
分类:
其他好文 时间:
2020-07-26 01:43:10
阅读次数:
71
一般对于程序员来说,对io流的操作都不陌生,但是大部分程序员都仅限于对流的读写操作,字符流、字节流等等,下面这些问题你了解过吗? 说一下java中的io流 java中io流可以按照数据流的方向分为输入流和输出流;也可以按照处理数据单位不同分为字符流和字节流。 字符流:一次读入或写入16位二进制; 字 ...
分类:
编程语言 时间:
2020-07-22 11:36:04
阅读次数:
69
内核kernel 操作系统负责整个系统运行的调度管理,包括管理各个硬件(如:cpu, 内存,磁盘,网卡等)以及在系统的上运行的各个应用程序。当计算机从关机状态启动,启动的第一个程序是操作系统内核,内核启动,将会注册GDT表(内存的分段信息),表中会记录操作系统单独拥有的一段内存空间,这部分空间只有操 ...
分类:
系统相关 时间:
2020-07-18 15:45:19
阅读次数:
75
web容器 apache nginx lighttpd 比较 apache 高并发时消耗系统资源相对多一些 基于传统的select模型 扩展库,DSO方法 nginx 基于异步IO模型,(epoll,kqueue),性能强,能够支持上万并发 对小文件支持很好,性能很高(限静态小文件1M) 扩展库必须 ...
分类:
Web程序 时间:
2020-07-16 18:33:44
阅读次数:
148
在深入理解select、poll和epoll之间的区别之前,首先要了解什么是IO多路复用模型。 ###IO多路复用 简单来说,IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备就绪,它就通知该进程去进行IO操作。 详细的描述可以参考IO模型。select、poll和epoll都是提供I/ ...
分类:
其他好文 时间:
2020-07-12 14:45:18
阅读次数:
86
##什么是IO 在Linux世界里,一切皆文件。文件就是一串二进制流,不管是socket、FIFO、管道还是终端,对我们来说一切都是文件,一切都是流。在信息交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(Input and Output)。 计算机里的所有流都是通过文件描述符(F ...
分类:
其他好文 时间:
2020-07-12 14:42:06
阅读次数:
74