【问题标题】:What is the definition of I/O, and what actions are classified as I/O?I/O 的定义是什么,哪些动作被归类为 I/O?
【发布时间】:2017-05-19 13:07:55
【问题描述】:

我在研究linux缓存的时候,发现一直在用I/O这个词,不知道它的正确定义。

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

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

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

这导致了我的问题。 I/O 的定义是什么(特别是在访问磁盘的上下文中),哪些动作可以归类为 I/O?

【问题讨论】:

标签: linux caching operating-system kernel


【解决方案1】:

I/O的定义是什么,哪些动作属于I/O?

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

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

即使定义也不考虑写入屏幕(但您要求将注意力集中在磁盘上)。

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

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

【讨论】:

  • 能否对变量进行读写操作也算是一种“IO”操作?例如,我有 2 个线程,每个线程读取和写入一个共享变量。
  • 假设,例如,该变量映射到屏幕缓冲区。在这种情况下,它将是 I/O。这一切都取决于上下文。
猜你喜欢
  • 2015-01-17
  • 2015-07-05
  • 2015-05-24
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多