“不存在缓存页面模式”和“假设驱动器缓存”之间有什么区别。写下来。

ixt*_*lix 2 boot devices dmesg

POST 后,BIOS 后屏幕,GRUB 后;当我在插入 SD 卡或 USB 记忆棒的情况下启动 Debian 时,首先在屏幕上弹出的东西之一(很快,我什至都没有注意到)看起来有点像:

[sdX] no caching page mode present
Run Code Online (Sandbox Code Playgroud)

text, text, X 大约从一长串内容的一半开始,文本明显变小,就在窗口管理器启动之前,我看到了非常熟悉的设备消息(dmesg无论如何,这不是代表什么吗?)

[sdX] assuming drive cache. write through
Run Code Online (Sandbox Code Playgroud)

那么,从技术上讲,这两个状态之间有什么区别?正在缓存什么?页面是什么?什么是“写透”?什么排除了驱动器缓存的假设,以便在启动后直接进行写入?

Kyl*_*nes 6

“sd”代表 SCSI 磁盘。当首次检测到磁盘设备时,内核(除其他外)请求设备的缓存模式页面,这将指示设备是否具有位于介质(磁盘、闪存等)前面的板载内存缓冲区。在您的情况下,设备没有缓存模式页面,因此内核假设没有缓存读取或缓存写入,因此写入设备将是“直写”,即将直接进入媒体.

内核关心写缓冲,因为文件系统一致性检查和恢复部分取决于数据写入存储的顺序。如果有设备板载缓存,文件系统模块可能希望发送 SCSI 命令以禁用写入缓存,以便 fsck 继续正常工作。