【问题标题】:Is there data transfer between register/cache and main memory when calling malloc() and free()调用 malloc() 和 free() 时寄存器/缓存和主存之间是否存在数据传输
【发布时间】:2015-04-12 05:34:30
【问题描述】:

malloc() 和 free() 用于分配和释放主内存中的空间。 这是否意味着调用时主存空间和寄存器(或cpu缓存)之间没有数据传输?

如果没有,是否有类似的操作/功能来分配和释放磁盘空间而不在磁盘空间和主内存之间传输数据?

谢谢。

【问题讨论】:

  • 由于“没有显示任何研究工作”,尤其是“不清楚或无用”,这个问题看起来是一个非常好的候选人。它看起来像是由于对某些编码问题的误解而产生的一些抽象的东西。请解释您需要知道什么确切以及为什么。用一些实际的C 编码问题来说明您的问题,尽管寄存器更多地属于assembly 语言的范围(您的答案会更明显)

标签: c memory-management operating-system disk


【解决方案1】:

嗯,答案要么是,要么不是,但我们还不足以肯定地说,因为很多这些事情是由底层架构决定的;此外,现代处理器中有很多零件和活动部件。

但在大多数机器上的实际答案是“是”,因为在调用序列中涉及寄存器,在上下文切换中分配新的物理内存并将其映射到虚拟内存中,在 malloc 发生的缓存命中中首先访问该内存以及何时更新其数据结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多