gpt4 book ai didi

linux - Linux 内核为什么以及如何为核心转储创建稀疏文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:47 25 4
gpt4 key购买 nike

目前我正在使用 Linux 4.0.6。核心转储激活后,我观察到生成的核心文件被创建为稀疏文件。例如,ls 命令显示我的核心文件大小为 42 MB。但是,du 命令显示它只分配了 26.3 MB。

我对这个观察的问题:

  1. 为什么 Linux 内核会为 coredump 创建一个稀疏文件?
  2. 它是如何工作的?它是否取决于放置核心转储的文件系统?
  3. 我可以配置系统/内核以防止核心转储成为稀疏文件吗?

最佳答案

您应该只考虑什么是核心转储文件:对进程内存的单纯顺序写入。在现代操作系统上,内存不是简单的连续字节范围,而是由多个映射在不同地址的段组成。这解释了如果您尝试在映射段之外的地址读取或写入,您会收到段违规信号 (SIGSEGV)。

因此在转储时,系统按升序写入段,然后lseek到每个新段的开头,从而构建一个稀疏文件。

现在回答您的问题:

  1. Why does Linux kernel create a sparse file for the coredump?

解释就在上面

  1. How does it work? Does it depend on the filesystem where the coredump is placed?

不是真的,除非底层文件系统不允许稀疏文件。

  1. Can I configure the system/ kernel to prevent the coredump as a sparse file?

恕我直言,你不能,更多的是你不想。 ls 命令为您提供程序使用的较高内存地址,而 du 命令为您提供程序使用的总内存大小,因为未使用的地址未映射和根本不消耗内存。

关于linux - Linux 内核为什么以及如何为核心转储创建稀疏文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com