[求解] io 到底是什么

2022-03-07 10:51:54 +08:00
 RedBeanIce

背景

1 ,我的计网较差

2 ,我的操作系统理论较差

3 ,普通 Java 一枚

我理解的

1 ,了解一些 Java 的 io 基础,,理解的一般都是网络上的,内核交互已经被封装了。

2 ,nio 与 netty 有一些理解

3 ,

求解

1 ,io 到底是什么,入门了解可以查看什么资料

2 ,io 到底是什么,深入了解可以查看什么资料

2052 次点击
所在节点    问与答
24 条回复
cpstar
2022-03-07 15:04:48 +08:00
你们这么讲下去,不得把计算机体系结构讲一遍啊,LZ 更晕了。当然如果要补充知识,当然还是得补充这些基础知识的,而且 OP 最后两个问题,也确实是科班内容。

按照冯·诺伊曼体系结构,计算机使用存储计算模型,存储单元向计算单元提供数据,计算完的数据再回到存储单元,这便是 input 和 output ,然后理论上的存储单元在实践中,成为了很多东西,比如内存、硬盘、网络,比如键盘、鼠标、显示器等等。你写一个程序,甚至程序本身,就是先从外部存储器调入到内部存储器中,再加载到核心计算单元的高速缓存中,然后加加减减乘乘除除,以及逻辑运算,得出来一个结果,再一级一级返回,最终用一些东西呈现出来。

JAVA 中的 IO ,封装就比较完善了,但是这个完善是基于 JAVA 核心的,包括了很多 JAVA 不能做到的需要用 C 做到的 IO 内容,以及在此之上又用 JAVA 二次封装的很多东西,再以及一些组织和个人基于此再再次封装的更多功能的 API 包。
sflypig
2022-03-07 18:25:51 +08:00
所有运行的程序本质都是=指令+数据,cpu 只会去执行预定义好的机器指令,根据机器指令去运算数据。所有的数据都需要从内存读取到 cpu 内部的寄存器才能被 cpu 的运算器运算。

所以运行的程序的数据起码需要在内存中,cpu 才会通过指令可以直接读取访问到。而我们所知,现实的数据都是存在硬盘,或者经过网络传输。

从硬盘读取数据到内存和从内存写到数据到磁盘 就是磁盘 IO 的过程,从网络接口读取数据到内存和从内存写数据到网络接口 就是网络 IO 的过程,站在内存的视角,这两者对内存来说就是数据 INPUT/OUTPUT 。

所以 IO 到底是什么,它是一种行为,就是读取和写入数据到某个地方。关于这种行为如何实现,本质还是接口和指令的一层层封装,比如你的程序调用 netty 之类的网络库,库里最后会调用操作系统提供的 io 接口,操作系统提供的 io 接口会翻译成机器指令操作硬件。

--------
程序调用 netty 之类的网络库,内部发生的事情这个应该看 netty 的代码
库里最后会调用操作系统提供的 io 接口,之后发生什么事情,建议学习大学计算机课程 操作系统
操作系统提供的 io 接口会翻译成机器指令操作硬件,如何翻译成机器指令操作硬件,建议学习大学计算机课程 计算机组成原理
night98
2022-03-08 00:09:13 +08:00
一个输入,一个输出,
啥意思,输入就是从某个地方拿进内存,输出就是从内存拿到别的地方去,你大致就这么理解就行了,什么网络 io 文件 io 基本上都是这个套路,键盘和显示器差不多也是这么个套路
zmqiang
2022-03-08 10:10:15 +08:00
看到已经有很多专业的解释了,我这边提供一个比喻:

我们日常的程序指令是通过 CPU 执行的,就像是显示工厂里的一个车间,按照操作步骤进行产品的组装工作。一些组装的原料和成品,放在工厂自己的仓库里,这个类似计算机里的硬盘。还有一些原料和成品是通过外面的公司提供的,这个就类似计算机里的网络。

而 IO ,指的就是车间和本地仓库或者外面公司交互的过程,也就是现实中的物流系统。最大的特点是慢。nio 、netty 这些概念相当于一个专门搞物流的人,存在的意义就是怎么样合理安排物流,尽量减少对车间工作的影响。

IO 本身不是一个实体,也不是一个复杂概念,只是对一个特定过程的称呼,我感觉本身没什么好了解。但是如何慢的 IO 和快的 CPU 进行统筹,降低 IO 对系统的影响,这里面是有很多技巧的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838527

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX