I/O模型分类

在学习I/O模型的学习总结,如有错误,不吝指正(^.^)

I/O复用场景:

当客户处理多个描述字时;

一个客户处理多个套接口;

一个TCP服务器既要处理监听套接口,又要处理已连接套接口;

一个服务器既要处理TCP,又要处理UDP;

如果一个服务器处理多个服务或多个协议;

一个输入操作分为:

等待数据准备好(等待数据到达,然后拷贝到内核的缓冲区);

从内核到进程拷贝数据(从内核缓冲区拷贝到应用缓冲区);

阻塞I/O模型:

函数调用阻塞至数据到达且拷贝到应用缓冲区,或者出错时返回(如信号中断);

非阻塞I/O模型:

函数调用若内核无数据准备好返回EWOULDBLOCK错误,若内核数据准备好则将数据拷贝到应用缓冲区,返回成功指示;

I/O复用模型:

阻塞在select或poll模型,而非真正的I/O系统调用阻塞,等待数据报套接口可读时调用读操作函数拷贝数据到应用缓冲区。其中使用两次系统调用,好处是可以等待多个描述字准备好;

信号驱动I/O模型:

先允许套接口进行信号驱动I/O(UNIX v1 22.2),并通过系统调用sigaction安装一个信号处理程序,当数据报准备好被读时就为该进程生成一个SIGIO信号,随后可以在信号处理程序调用函数读取数据(内核缓冲区到应用缓冲区),并通知主循环程序。

异步I/O模型:

当整个过程完成后通知我们,包括将数据从内核缓冲区拷贝到应用缓冲区,与信号驱动I/O不同的是前者是在完成时通知,后者是在开始时通知。

区别:

前四种主要在第一阶段不同,在第二阶段相同(从内核缓冲区拷贝到应用缓冲区时仍然阻塞),异步I/O处理的两个阶段都不同于前四种,因此前四种都属于同步I/O。

大家发现要改正或改进的地方留个言啦

时间: 2024-08-24 03:19:16

I/O模型分类的相关文章

【caffe】用训练好的imagenet模型分类图像

因为毕设需要,我首先是用ffmpeg抽取某个宠物视频的关键帧,然后用caffe对这个关键帧中的物体进行分类. 1.抽取关键帧的命令: E:\graduation design\FFMPEG\bin>ffmpeg -i .\3.mp4 -vf select='eq(pict_type\,I)',setpts='N/(25*TB)' .\%09d.jpg 2.用python编写脚本,利用在imagenet上训练的模型分类视频帧中的物体. 抽取得到的视频关键帧都存放在文件夹"/home/suns

caffe---测试模型分类结果并输出(python )

当训练好一个model之后,我们通常会根据这个model最终的loss和在验证集上的accuracy来判断它的好坏.但是,对于分类问题,我们如果只是知道整体的分类正确率 显然还不够,所以只有知道模型对于每一类的分类结果以及正确率这样才能更好的理解这个模型. 下面就是一个用训练好的模型,来对测试集进行测试,并输出每个样本的分类结果的实现. 代码如下: #coding=utf-8 import os import caffe import numpy as np root='/home/liuyun

机器学习--模型分类--贝叶斯

朴素贝叶斯的“朴素”,并不是简单的意思,而是指样本的特征之间是相互独立的.在所有的机器学习分类算法中, 朴素贝叶斯和其他绝大部分分类算法都不同,其他分类算法基本都是判别方法,即直接学习出特征输出Y和特征向 量X之间的关系,要么是决策函数Y=f(X),要么是条件分布P(Y|X),但是朴素贝叶斯却是生成方法,也就是直接找 出特征输出Y和特征向量X之间的联合分布P(X,Y),然后用P(Y|X)=P(X,Y)/P(X)得出.朴素贝叶斯的优点在于:1,有稳定的分类效率,2,对小规模数据表现很好,能处理多分

监督学习模型分类 生成模型 判别模型 概率模型 非概率模型 参数模型 非参数模型

判别模型和生成模型:统计学派和贝叶斯学派之争 判别模型: 直接对输入空间到输出空间的映射h(x)做预测,或者直接对条件概率分布P(y|x)做预测 PM,SVM,NN,KNN,LR,DT 模型一般更准确 不需要预设条件 鲁棒性更高 生成模型: 先对概率分布P(x,y)做预测,根据贝叶斯公式得到P(y|x) GDA,NB,HMM 收敛速度一般更快 可以训练包含隐变量的模型 需要假设的先验分布 可以还原出联合概率分布P(x,y) 可以还原出判别模型,但反过来不行 概率模型和非概率模型:预测概率还是预测

走入计算机的第三十九天(python终结篇之IO模型)

一.IO模型 1.IO模型分类 1.阻塞IO--------blocking IO 2.非阻塞IO------nonblocking IO 3. 多路复用IO------- multiplexing 4.信号驱动IO-------signal driven IO (工作中不会使用到,只是作为了解) 5.异步IO------- asynchronous IO 2.通常情况下IO默认操作分为两个阶段(默认都是阻塞IO) 1.准备等待数据阶段,相当于请求操作系统是否有数据发送过来(调用IO操作). 2

Netty系列之Netty线程模型

1. 背景 1.1. Java线程模型的演进 1.1.1. 单线程 时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一. 在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能. 1.1.2. 多线程 随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配已经达到32或64核.通过多线程并发编程,可以充分利用多核CPU的处理能力,提升系统的处理效率和并发性能. 相关

Python开发基础-Day33 IO模型

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),另一个就是系统内核

使用深度双向LSTM模型构造社区问答系统

/* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 关于社区问答系统的问题背景,我们在之前的"利用卷积神经网络构造社区问答系统"一文里已经说明得很清楚,本文就不再赘述,不清楚背景的读者可自行参照上文,我们这些相关的研发工作主要是为了开发畅捷通"会计家园"交流社区的相关功能.为了保持行文完整,简明叙述形式化描述的问题如下: 假设我们已知问答库如下: 其中,Qi是问答社区中的历史问题,Ai是Qi问题的精华答案: 现有社区用户

多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)

之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是展示二分类,当扩展成多分类时就会出现问题,所以我的论文最后就只好画了boundary的图了.今天在研究Random Forest时,找到了下面的demo的MATLAB代码,该代码很好的实现了各分类区域的颜色填充,效果非常漂亮. 下面是一个Demo代码:Demo.m %% generate data