【计算机系统导论】6.4 文件系统与输入输出

文件系统(抽象4)都是抽象。以四种抽象作为展开的脉络


  • 虚拟输入输出(文件、目录)

计算机系统的 I/O 体系结构是系统与外部世界的接口。这种体系结构提供了一种控制计算机与外部世界交互的系统化方式,并向操作系统提供有效地管理 I/O 行为的必要信息。

有 3 种基本的 I/O 技术:编程式 I/O (Programmed I/O) 技术,即在请求 I/O 操作的程序的直接和连续的控制下所发生的 I/O 操作;中断驱动式 I/O (Interrupt-driver I/O) 技术,即程序发出 I/O 命令后继续执行,直到被 I/O 硬件中断,通知它 I/O 操作完成;还有直接存储器存取(DMA) 技术,即一个专门的 I/O 处理器接管 I/O 操作的控制,在 I/O 设备与存储器之间直接传送大量数据

除了处理器和一组存储器模块外,计算机系统的第三个关键部件是一组输入 / 输出模块。每个模块连接到系统总线或中央交换器,并且控制一个或多个外围设备。一个 I/O 模块不是简单地将设备连接到系统总线的一组机械连接器,而是包含了执行设备与系统总线之间通信功能的逻辑。

为什么不把外设直接连接到系统总线上,原因如下:

  • 各种外设的操作方法是不同的,将控制一定范围的外设的必要逻辑合并到某个处理器内是不现实的
  • 外设的数据传送速度一般比存储器或处理器慢得多,因此,使用高速的系统总线直接与外设通信是不切实际的
  • 另一方面,某些外设的数据传送速率比存储器或处理器要快,同样,若不适当管理,则速度失配将导致无效
  • 外设使用的数据格式和字长度通常与处理器不同

因此 I/O 模块是必须的,它有两大主要功能

  • 通过系统总线或中央交换器与处理器和存储器连接
  • 通过专用数据线与一个或多个外设连接

采用几个不同的特性评估 IO 系统性能:可靠度;所支持 IO 设备的多样性;IO 设备的最大数目;成本;性能延迟和吞吐量。这些目标导致提供 IO 设备接口的方案多样化。在低端和中端系统中,采用缓冲区的 DMA 是主流的传输机制。而在高端系统中,时延和带宽同样重要,成本是其次。具有有限的缓冲多通道 IO 设备通常被刻画为高端 IO 系统。典型地,随着系统的增大,能在任何时间访问 IO 设备上的数据(高可用性)变得越来越重要。结果是当我们扩大系统时,冗余和纠错机制变得越来越普遍。

避免 I/O 数据不一致问题,可以使用下面三种方法之一。第一种方法是将高速缓存与 I/O 操作关联,这种方法确保了读操作能看到最新值而写操作会更新高速缓存中的数据。将高速缓存和所有的 I/O 相关联的成本很高,对处理器也存在潜在的负面影响,因为 I/O 数据很少立刻被用到,而且这可能会将运行程序所需的有用数据从 cache 中挤出去。第二种方法是让 OS 选择性地将高速缓存中与 I/O 读操作相关的数据项设置为无效;对于 I/O 写操作,强迫高速缓存写回内存(通常称为高速缓存刷新)。这种办法需要一些少量的硬件来支持,如果软件能够方便而有效地执行这个功能,采用软件可能会更加有效。因为这种大块高速缓存刷新的操作只在 DMA 进行块的访问时发生,所以它的相对出现次数不多。第三种方法是提供一种硬件机制,选择性地刷新高速缓存中的一些块(或者使之无效)。用硬件失效机制来确保高速缓存一致性的技术在多处理器系统中很常见,,这种技术也被用在 I/O 中。

文件系统

文件系统是一个存储抽象,假装有一个结构化的存储空间

文件

文件描述符

Unix I/O

I/O 系统的性能,无论是通过带宽开始时延来度量,都取决于设备和内存之间路径上的所有要素,包括产生 I/O 命令的操作系统。总线的带宽、内存和设备决定了进出设备的最大传输速度。同样,延迟时间由设备的延迟时间、内存系统或者总线带来的延迟决定。有效带宽和响应时延依赖于路径中其他可能引起的资源冲突的 I/O 请求。最后,操作系统变成一个平静。在某些情况下,OS 需要很多时间才能把 I/O 请求从用户程序转交给 I/O 设备,从而导致很大的延时。在其他情况下,操作系统在很大程度上限制了 I/O 带宽,因此操作系统能够支持并发 I/O 操作的数量是有限的。

重定向

csapp 中涉及

捧个钱场?