跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教一个网络通信的概念问题
未分類
7 1 月 2021

请教一个网络通信的概念问题

请教一个网络通信的概念问题

資深大佬 : Kontinue 4

在博客上考看到两个概念:

一个是 linux 级别的 io 模型,比如同步阻塞 I/O 、同步非阻塞 I/O 、多路复用 I/O 、信号驱动 I/O 。

一个是程序语言层面的,比如 Java 中的 BIO 、NIO 、AIO 。

我想知道的是这两者之间的联系是什么?是不是 linux io 模型仅仅是一个理论的模型,具体的需要看程序语言是如实现的?还是说是一种依赖关系,比如 java 的 NIO 在 linux 上执行依赖于 os 的多路复用 I/O 模型这样?

大佬有話說 (11)

  • 資深大佬 : luckyrayyy

    依赖关系,最终都要依赖操作系统的实现,比如 AIO Linux 上就不成熟,Windows 才有真正的 AIO,因此语言层面上支持也白搭。
    这是我的理解,不保证对噢

  • 資深大佬 : misaka19000

    Java 是一种语言的 API,是对操作系统的 IO 的封装,本质上还是调用了 OS 的接口

  • 資深大佬 : opengps

    每个地方都有 io,所以 io 这个词很宽泛。有些地方无法多路 IO,比如单个硬盘文件的操作,数据库能多连接实际上是程序做了高效分工共同了一个文件流。
    物理上:硬盘有吞吐,网络有吞吐,内存也有吞吐
    软件上:一个集合变量也有吞吐(这种往往跟大小和内存 io 有直接关系)

  • 資深大佬 : togou

    最终还是看 os Java 的 nio 只不过是利用其自己的平台特性 封装成异步 io

  • 資深大佬 : carlclone

    我也有一个问题,像 epoll 已经减少了大部分的 io 阻塞,那异步 io 解决的是哪里的阻塞

  • 資深大佬 : vk42

    @carlclone epoll 哪里减少阻塞了?只是减少了轮询的代价。AIO 完全是不同的概念……

  • 資深大佬 : carlclone

    @vk42 明白你说的,我说的是 epoll 多 socket 的时候不会阻塞在某个未就绪的 socket 上,

  • 資深大佬 : carlclone

    @vk42 刚刚查了一下异步 io (在整个操作(包括将数据从内核拷贝到用户空间)完成后才通知用户进程) ,就是说即使 epoll 通知 socket 就绪了,去读 socket 时的数据拷贝过程还是阻塞的,所以异步 io 减少的是拷贝过程的阻塞,这样理解对吗

  • 資深大佬 : haosamax

    NIO 还是需要一个线程去轮询 IO 状态,AIO 有数据操作系统通过回调机制处理

  • 資深大佬 : cheng6563

    操作系统基本只提供 c 的 Api 。
    你去看 Java 里的源码,稍微跟一下就能跟到个 native 方法,比如 FileInputStream,其实就是进入 c 的世界调用操作系统的 API 去了。

  • 資深大佬 : xcstream

    不知道取什么名字就叫 io
    比如 google io 大会

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具