文件名称:以往的磁盘缓存-轻松实现高速串行io--fpga应用设计者指南
文件大小:3.09MB
文件格式:PDF
更新时间:2024-06-29 04:49:10
UNIX 系统 内幕 pdf
9.12 以往的磁盘缓存 磁盘 I/O 在任何一个系统中都是最主要的瓶颈。从磁盘上读一个 512 字节的块所需的时 间是毫秒级的。而在内存中复制同样的大小的数据所需的时间则是微秒级的。这两者之间的 差将近 1000 倍。如果每次文件 I/O 都需要访问磁盘操作,系统就会变得无法忍受的慢。必须 采取—切措施来减少磁盘 I/O 操作,UNIX 系统是通过将最近访问的磁盘块在内存中缓存起来 达到这个目的的。 传统的 UNIX 系统在内存中使用一块称为磁盘缓存的内存区。虚存系统分别缓存进程的正 文和数据页。像 SVR4 和 SunOS(版本 4 及更高的版本)这样的现代 UNIX 系统将磁盘缓存与分 页系统集成起来。本节中,我们介绍以往的磁盘缓存。第 14.8 节将介绍新的集成方法。 磁盘缓存由一系列数据缓冲区组成,每一个数据缓冲区的大小都足以保存一个磁盘块。 基于 BSD 的系统使用变长的缓冲区,在相同机器上的不同文件系统可能有不同的磁盘块和片 段大小,每个缓冲区都对应一个头结构,其中保存命名、同步和缓存管理信息。缓存的大小 通常为物理内存的 10%。 缓存的后援存储是数据的持久性存储单元。一个缓存可以管理若干个不同后援存储的数 据。对于磁盘缓存来说,后援存储就是磁盘上的文件系统。如果机器是在网络上的,后援存 储还包括远程节点上的文件。 通常,缓存可以是写通或写后的。写通缓存将被修改的数据立即写回后援存储中。这有 若干优点。后援存储上的数据始终都是当前的(有时可能除了最后一次写操作),一旦系统崩 溃时没有数据丢失及文件系统毁坏等问题。而且缓存管理也是很简单的,这种方法对于硬件 实现的缓存是一个非常好的选择,比如某些硬盘上的磁道缓冲区。 由于写通方法有很大的性能代价,它不适合于磁盘缓存。大约有 1/3 的磁盘操作是写操 作,其中的许多是临时性的——在写操作执行的若干分钟旦数据被覆盖或是文件被删除。这 将会造成许多没必要的写操作,使系统性能明显地慢了下来。 出于这样的原因,UNIX 磁盘缓存基本上是写后的⑦。被修改的块被简单地标记为已修 改,然后在以后的某个时刻在写到磁盘上。这就可以使 UNIX 减少了许多写操作,而且还对写 操作重新排序来进一步提高磁盘访问的性能。然而将写操作延迟,在系统一旦崩溃时会破坏