io-nio-socket步步为营(七) IO模型-心得体会
参考 unix网络编程 chapter6.2 I/O models,windows网络编程
1,----------------------理论:socket编程主要有两步
第一步: “等待数据”从网络上传到本地。然后将数据包从网络层拷贝到内核的缓存中
-->用户应用进程-->recvfrom-->系统调用-->内核等待网络数据报-->网络数据报准备好(拷贝到内核)
第二步: “拷贝数据”从内核中把数据拷贝到程序的数据区中。
-->内核拷贝数据到用户应用程序(buffer)-->拷贝完成-->返回调用。
同步IO和异步IO的区别就在于:应用程序的调用(数据等待+数据拷贝)是否立即返回!
阻塞IO和非阻塞IO的区别就在于:数据等待的时候进程是否阻塞!
书中介绍了5种I/O models:
blocking I/O
两步全阻塞,并让出CPU,或者出错被系统信号中断。
nonblocking I/O
告诉内核,I/O操作无法完成时,不要将进程睡眠,而是返回一个错误EWOULDBLOCK信号,然后不断的polling轮询,直至正常返回调用
I/O multiplexing (select and poll)
阻塞于select()/poll()/epoll()调用,轮询,当返回套接口可读条件时,调用recvfrom拷贝数据到用户应用程序, 好处在于可以轮询多个文件描述符FD
signal driven I/O ( SIGIO)
不解释,没有AIO好
asynchronous I/O (the POSIX aio_functions)
暂不解释
2,----------------------java 中的应用:(个人感悟2015-03-12 22:26)
1,传统IO(Old IO):所有的socket链接(线程),两步都阻塞(数据等待+数据拷贝)。
2,NIO(new IO):不是noblocking IO,是 multiplexing I/O。只有selector一处(一个线程)阻塞( 数据等待),
所有的socket链接(线程)只在数据拷贝处阻塞。
java代码中的noblocking是对所有socket链接,数据等待这一步的阻塞,转移给了selector,最多是局部的noblocking,炒作之嫌更大。
- 大小: 24.8 KB
- 查看图片附件
io-nio-socket步步为营(七) IO模型-心得体会相关推荐
- java中io.nio.aio_Java中网络IO的实现方式-BIO、NIO、AIO
在网络编程中,接触到最多的就是利用Socket进行网络通信开发.在Java中主要是以下三种实现方式BIO.NIO.AIO. 关于这三个概念的辨析以前一直都是好像懂,但是表达的不是很清楚,下面做个总结完 ...
- 2017-2018-2 20179317 《网络攻防技术》第七周学习心得体会
教材学习内容总结 课本第七章主要围绕windows操作系统安全攻防技术进行讲述,教材中主要涉及的攻击内容如下: Windows操作系统的基本结构 运行于处理器特权模式的操作系统内核 运行在处理器非特权 ...
- java io nio socket_通过socket编程掌握IO流 —— NIO
一.本次目标 改造server,采用NIO读取client信息: 改造client,亦采用NIO发送消息,与之前不同的BIO形成对比: 二.编码 1.新建byte数组拼接公共类 主要用作在channe ...
- 【学习笔记】JAVA IO与NIO(new IO)的对比与不同IO模型的理解
JAVA IO 分类: 几种IO 模型 1. 阻塞 IO 模型 2. 非阻塞 IO 模型 JAVA NIO 多路复用 IO 模型(即Java中的NIO) JAVA IO 思维导图: 分类: 按照流的方 ...
- io 错误: socket closed_Tomcat NIO(9)IO线程Overall流程和关键类
在上一篇文章里我们主要介绍了 tomcat NIO 中 poller 线程的阻塞与唤醒,根据以前文章当 poller 线程监测到连接有数据可读事件的时候,会把原始 socket 的包装对象委托到 to ...
- java nio 传统标准io socket 和nio socket比较与学习
在计算机系统中,最不可靠的就是网络请求,我们通过服务器端给客户端echo信息(客户端请求什么信息服务端就返回给客户端什么信息).比较两种socket io的优劣. 标准io socket: 服 ...
- AIO,BIO,NIO:同步阻塞式IO,同步非阻塞IO,异步非阻塞IO
BIO,同步阻塞式IO,简单理解:一个连接一个线程 NIO,同步非阻塞IO,简单理解:一个请求一个线程 AIO,异步非阻塞IO,简单理解:一个有效请求一个线程 IO:阻塞IO BIO:同步阻塞IO.服 ...
- java io流区别_Java中IO流的分类和BIO,NIO,AIO的区别
到底什么是IO 我们常说的IO,指的是文件的输入和输出,但是在操作系统层面是如何定义IO的呢?到底什么样的过程可以叫做是一次IO呢? 拿一次磁盘文件读取为例,我们要读取的文件是存储在磁盘上的,我们的目 ...
- java io nio pio_Netty之BIO(同步阻塞IO)、PIO(偽異步阻塞IO)、NIO(異步非阻塞IO)、AIO(異步非阻塞IO)、Netty...
學習書籍:Netty權威指南 多種IO方式的比較: 1.BIO(同步阻塞IO) 使用ServerSocket綁定IP地址和監聽端口,客戶端發起連接,通過三次握手建立連接,用socket來進行通信,通過 ...
最新文章
- HarmonyOS Image 属性了解
- vb.net 当前计算机用户,用VB写的一个组件,实现添加系统用户,并添加到指定组-.NET教程,VB.Net语言...
- 关于matlab向文件写入数据的方法——留着备用
- springcloud搭建篇
- 2001年 数的划分
- ARM架构和ARM核区别和联系
- 企业网络推广期间影响企业网络推广自然排名的因素有哪些?
- 2018 SaaS应用大会 掀起SaaS应用新浪潮
- R语言:paste函数解析
- 机器学习深度学习论文写作工具推荐
- Python3之对象垃圾收集机制浅析
- CTS(15)---Android 兼容性
- 社群数据分析:你运营的社群是好社群吗?
- Kali Linux 更新源 操作完整版教程
- H5获取html标签
- uniapp进行H5微信支付
- 计算机学stata,stata(统计学软件)
- Word-VBA:删除选择区域的项目符号
- 如何进行Web服务的性能测试
- Faraday:微博广告分层实验平台架构