缓存内存在unix中如何工作?

缓存内存在unix中如何工作?

今天我的系统崩溃了:

Feb 24 20:07:34 kernel: [46929872.935456]  [<ffffffff81141073>] ? out_of_memory+0x473/0x4b0

但我仍然能够登录 SHH 并打开顶部,许多应用程序崩溃并拒绝启动,但在顶部,只有 50% 的内存被标记为“已使用”,另外 50% 的内存被标记为“缓存”梅姆”。

我一直认为缓存内存用于缓存文件以减少从驱动器的写入/读取,当程序需要分配更多内存时,一些文件会从缓存中删除并用于运行程序。但显然这不是真的,因为我的总内存的 50% 用于缓存,系统仍然崩溃,而它应该只删除一些缓存。

有人可以给我一些关于缓存内存如何工作的更深入的解释吗?谢谢。

答案1

也许是写入缓存数据。删除它需要首先将其写入磁盘上的最终位置。如果您的磁盘发生故障,既不确认任何写入操作成功完成,也不确认失败,则无法删除这些缓存。

我见过一些旧磁盘出现这样的故障:它们不会报告实际的故障,而只是陷入无限重试的循环中。这可能不应该发生,但显然它确实发生了。

相关内容