I / O的定义是什么,以及哪些操作被归类为I / O?

时间:2017-01-05 04:42:39

标签: linux caching operating-system kernel

当我研究linux缓存时,我发现我一直在使用术语I / O而不知道它的正确定义。

我引用了一个回复我关于Linux页面缓存的人,“Linux内核在你进行i / o时填充(和使用)页面缓存,而不是在你打开文件时”

基本上,我将术语I / O视为任何sys命令,但结果是打开文件不被视为I / O.

此外,很少在线讨论或记录I / O的定义。

这引出了我的问题。 I / O的定义是什么(特别是在访问磁盘的情况下),以及哪些操作可以归类为I / O?

1 个答案:

答案 0 :(得分:1)

  

I / O的定义是什么,以及哪些操作被归类为I / O?

这是一个没有确定答案的问题。 (1)它取决于系统(在这里由你的Linux规范辅助)和(2)它取决于视角。从用户的角度来看是输入/输出吗?一个过程?内核?

从流程的角度来看,人们可能会说Linux中的I / O是使用读取或写入系统服务的任何操作。从这个意义上讲,OPEN不是I / O,因为它不是在读取或写入过程数据。

甚至定义也不考虑写入屏幕(但你要求专注于磁盘)。

但是,如果将视角更改为内核的视角,则I / O的范围会扩大。 FILE打开请求可能需要读取一个或多个目录的内容并读取磁盘上的头文件信息。因此,磁盘和内存之间的任何数据移动都可以被视为I / O.

从用户的角度来看,I / O是将数据移入或移出处理器的任何东西。这更具理论性。如上所述,计算机可以通过更新视频内存将文本写入屏幕。人们可能会在主存储器和视频存储器之间进行区分,但从逻辑意义上讲,没有真正的数据移动。