Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management 内存块计数_Memory Management_Linked List - Fatal编程技术网

Memory management 内存块计数

Memory management 内存块计数,memory-management,linked-list,Memory Management,Linked List,这是编译器设计课程的家庭作业问题。我只需要对问题的某些部分进行解释 据称,将块返回到标准内存管理器 这需要大量的管理。为什么? 光有一张单人票还不够吗 每个块的计数器,用于保存 该块的忙记录数, 并在它停止时返回块 达到0 它所指的上下文是关于链表的 答题纸上的答案说明: 你觉得这个计数器怎么启动的 从指针到记录以及如何 你能找到指向的指针吗 返回街区 来自C语言背景。谁能给我解释一下: 街区是什么 柜台有吗 繁忙的唱片是什么 对文档的引用,这些文档提供了在此计数阶段发生的情况的演练。图表会很有

这是编译器设计课程的家庭作业问题。我只需要对问题的某些部分进行解释

据称,将块返回到标准内存管理器 这需要大量的管理。为什么? 光有一张单人票还不够吗 每个块的计数器,用于保存 该块的忙记录数, 并在它停止时返回块 达到0

它所指的上下文是关于链表的

答题纸上的答案说明:

你觉得这个计数器怎么启动的 从指针到记录以及如何 你能找到指向的指针吗 返回街区

来自C语言背景。谁能给我解释一下:

  • 街区是什么
  • 柜台有吗
  • 繁忙的唱片是什么
  • 对文档的引用,这些文档提供了在此计数阶段发生的情况的演练。图表会很有帮助

    谢谢。

    一个“块”很可能是一个

    我不熟悉“忙碌记录”这个词;最有可能的是,它指的是一些变量的数据流分析结果(即变量可能被认为是“繁忙的”)。有几种定义似乎是合理的:

  • 如果变量包含一个值(即已“写入”)且该值也将被“读取”(意味着您无法轻松消除该变量),则该变量可能会被视为“忙碌”
  • 如果一个变量被“经常”(比其他变量更经常)使用,那么它可能被认为是“忙的”,这意味着您应该尝试将它分配到寄存器
  • 然而,你应该真正了解这个术语在你的课程中是如何定义的


    然后,计数器将计算每个基本块中忙的变量数。为什么经过一些处理后计数器会变为0还不清楚-很可能,“忙”在您的课程中还有另一个含义。

    我想如果我更改一些术语,以更好地解释我所猜测的情况,可能会有所帮助

    如果你有一页内存,我们可以说一页的大小是8k。这是内存管理器分配的最小大小

    您有10个请求,每个请求100字节,因此页面上的不同位置都有1000字节

    计数器应该是10,但是,您如何知道实际释放了什么,或者已经分配了什么,因为这10个请求可能不是连续的,因为可能已经释放了其他请求

    所以,我们有10条繁忙的记录

    现在,你需要在答题纸上给出你自己的答案,但是,希望通过看一个例子,它可能会更简单

  • 街区是什么?管理器已将内存空间划分为块。一个或多个块组成可供用户连续访问的存储器区域单元。如果需要更多内存,管理器将向该内存区域添加额外的块。而管理者总是试图给用户提供连续的块

  • 柜台有吗?对于一个特定的块,它可能被不同的用户使用,也就是说,内存区域由多个用户共享

  • 繁忙的唱片是什么?存储在上述“计数器”中的计数器值

  • 例如:

    struct block {
        struct block *next;
        long counter; //@< the busy record
    };
    
    EDIT: changing "area" to "user"
    struct user {
        struct block *head;
        ...
    };
    
    struct块{
    结构块*下一步;
    长计数器;/@<忙记录
    };
    编辑:将“区域”更改为“用户”
    结构用户{
    结构块*头;
    ...
    };
    
    编辑:回答问题“为什么计数器不足以容纳块?”
    将块从“空闲块列表”移动到“已分配块列表”或从“已分配块列表”移动到“已分配块列表”时需要更多信息,例如用于快速定位列表中某个位置的顺序。而我只是根据这一点进行猜测。

    问题中没有足够的上下文来回答这个问题。。。你的问题的答案将出现在课本中你没有引用的问题部分(或之前的章节)。对不起,我更新了,它在链表的上下文中。你应该问给作业的人这些术语的含义。像你一样,我们只能猜测。然而,仔细阅读摘录,我们可以推断:不是计算内存块,而是计算它们的使用情况,这样做是为了确定内存块何时未使用,从而可以回收。哈哈,这将是一件痛苦的事情。如果他看到这一点,我可能会遇到麻烦,但我的讲师会在答题纸上给我们的作业打分,如果我问任何问题,我将一事无成。我宁愿理解这是怎么回事,也不愿意把答题纸上的答案重新写下来交给他。我看不到“忙碌的记录”。搜索“忙碌”,找到了问题。即使它指的是链表,我仍然不知道如何将“繁忙记录”与那种类型的数据结构相关联。