IO多路复用发展史(上)

简介: IO多路复用发展史(上)

引言


image.png


java程序对系统内核io的时候有哪些系统调用发生 内核有没有参与到io中?


NIO


模拟socket通讯TestSocket类

image.png

简单描述

1、创建一个socket server进程绑定8090端口
2、等待客户端连接 一有客户端连接则创建一个线程来解析数据流

抓取指定进程及子进程和子线程对内核系统有没有调用

strace -ff -o ./ooxx java TestSocket

image.png

image.png

进程id是2878
通过进程号可以得到该进程下有多少个线程
该进程有多少个文件描述符
也可以查看该进程的网络状态
查看该进程的情况 
cd /proc/2878
cd task
查看当前进程开启了多少线程


image.png


1、任何一个程序都有io
标准输入0 system.in ,标准输出1 system.out ,错误输出2 system.error
2、java中以对象形式存在 linux一切皆文件 以数字代表
java中变量在linux中用数值代替变量 引用了其中一个流
3、runtime运行时的jar包库 jvm启动的时候会加载
4、2个socket 一个是ipv4 一个是ipv6
没有客户端与服务端连接 却有了socket文件描述符

网络状态命令

netstat -antp
显示所有 tcp协议 打出进程号

image.png

只有服务端有监听状态

客户端与socket服务端建立连接

nc(netcat)是linux操作系统程序 
可以任何人建立tcp socket连接
nc localhost 8090
网络连接状态中会出现一个新的状态
文件描述符中会多一个 代表新的连接
此时只建立了tcp连接 还没有发送数据

image.png

image.png

image.png

相关文章
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
405 0
|
9月前
|
监控 应用服务中间件 Linux
掌握并发模型:深度揭露网络IO复用并发模型的原理。
总结,网络 I/O 复用并发模型通过实现非阻塞 I/O、引入 I/O 复用技术如 select、poll 和 epoll,以及采用 Reactor 模式等技巧,为多任务并发提供了有效的解决方案。这样的模型有效提高了系统资源利用率,以及保证了并发任务的高效执行。在现实中,这种模型在许多网络应用程序和分布式系统中都取得了很好的应用成果。
274 35
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
758 1
Linux C/C++之IO多路复用(aio)
|
监控 网络协议 Java
IO 多路复用? 什么是 IO 多路复用? 简单示例(日常生活)来解释 IO 多路复用 一看就懂! 大白话,可爱式(傻瓜式)教学! 保你懂!
本文通过日常生活中的简单示例解释了IO多路复用的概念,即一个线程通过监控多个socket来处理多个客户端请求,提高了效率,同时介绍了Linux系统中的select、poll和epoll三种IO多路复用的API。
895 2
|
Java Linux
【网络】高并发场景处理:线程池和IO多路复用
【网络】高并发场景处理:线程池和IO多路复用
415 2
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
614 0
Linux C/C++之IO多路复用(poll,epoll)
|
网络协议 Java Linux
高并发编程必备知识IO多路复用技术select,poll讲解
高并发编程必备知识IO多路复用技术select,poll讲解
|
消息中间件 NoSQL Java
面试官:谈谈你对IO多路复用的理解?
面试官:谈谈你对IO多路复用的理解?
266 0
面试官:谈谈你对IO多路复用的理解?
|
缓存 网络协议 算法
【Linux系统编程】深入剖析:四大IO模型机制与应用(阻塞、非阻塞、多路复用、信号驱动IO 全解读)
在Linux环境下,主要存在四种IO模型,它们分别是阻塞IO(Blocking IO)、非阻塞IO(Non-blocking IO)、IO多路复用(I/O Multiplexing)和异步IO(Asynchronous IO)。下面我将逐一介绍这些模型的定义:
749 2
|
Linux C++
c++高级篇(三) ——Linux下IO多路复用之poll模型
c++高级篇(三) ——Linux下IO多路复用之poll模型
219 1