![磁盘缓冲区:为什么它甚至存在于许多磁盘控制器中?](https://linux22.com/image/565547/%E7%A3%81%E7%9B%98%E7%BC%93%E5%86%B2%E5%8C%BA%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88%E5%AE%83%E7%94%9A%E8%87%B3%E5%AD%98%E5%9C%A8%E4%BA%8E%E8%AE%B8%E5%A4%9A%E7%A3%81%E7%9B%98%E6%8E%A7%E5%88%B6%E5%99%A8%E4%B8%AD%EF%BC%9F.png)
当你向磁盘请求数据时,数据通常首先被传输到磁盘控制器中的磁盘缓冲区,进而它被发送到 RAM(因此存储在内存中)。我只是想知道首先使用缓冲区(本质上是一个额外的步骤)有什么好处。
*编辑-> 另外,有人可以解释一下 RAID 控制器应该做什么吗?
答案1
它允许控制器灵活地安排数据移入和移出计算机的时间。想象一下如果没有缓冲区,情况会有多糟糕:
读取:当数据即将可用时,控制器必须关闭与计算机的连接。如果计算机在从磁盘读取的数据到达时尝试向控制器发送一些数据,则控制器将不得不丢弃数据并等待它再次到达,因为没有地方放置它。如果计算机想要读取块 1、2、3 和 4,而 5、6、7 和 8 先到达,则控制器必须忽略它们,如果计算机在一瞬间后请求它们,则控制器将不得不等待它们再次到达。
写入:控制器无法重新排序写入,以提高寻道效率。如果控制器在尝试读取计算机可能很快要求的其他数据时读取了一些数据,则必须丢弃这些数据才能进行写入。控制器必须让计算机在正确的时间发送要写入的数据,并命令计算机根据要写入的磁道以较慢或较快的速度发送数据。
总之,控制器使用缓冲区:
对于读取:保存在等待其他数据到来时“意外”读取的数据。允许它在一次旋转中读取磁道,而不管磁道的哪一部分首先到达磁头下方。保存在执行其他操作时可能很快需要的数据。
对于写入:允许计算机以全接口速度写入(至少在短时间内)。重新排序写入以提高寻道效率。允许按顺序从计算机接收轨道,并按照扇区落在磁头下的任何顺序写出。(显然,磁盘可能需要写入 0-63,而扇区 14 可能是磁头下的第一个扇区。如果在写入任何数据之前拥有所有数据,它可以立即写入 14-63,然后写入 0-13,并在一次旋转中完成,而不是等待 0 出现并需要两次。)