如何用C实现内存模拟?

发布于 2024-12-15 02:28:26 字数 211 浏览 0 评论 0原文

基本上我需要有两个列表,其中一个通过存储起点和每个孔的大小来保留空内存孔的列表。另一个保存有关各种进程的信息(虽然没有实际的进程数据,而只有 ID、起始位置和大小)。

所以,我知道我需要有两个结构,每个结构都定义“洞”和“过程”。我需要有两个列表来存储这些对象。

我不明白的是如何“初始化内存”。例如,如果用户想要初始化(5000字节),那么初始化方法应该对这两个列表做什么?

Basically I need to have two lists, one of which keeps the list of empty memory holes by storing the starting point and the size of each hole. The other one, keeps information about various processes (while there is no actual process data, rather just the id and starting location and size).

So, I understand that I will need to have two structs, each of which defines the "hole" and the "process". I will need to have two lists to store these objects.

What I don't understand, is how to "initialize memory". For example, if the user wants to initialize(5000 bytes), what should the initialize method do in respect to the two lists?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒浓于脸红 2024-12-22 02:28:27

您只需清空进程列表(因为没有分配内存)并创建从地址 0 到地址 4999 的单个孔(因为这些地址为空)。

You just empty the process list (since no memory is allocated) and create a single hole from address 0 to address 4999 (since those addresses are empty).

凯凯我们等你回来 2024-12-22 02:28:27

只需使用 malloc() 和 free() 等效项实现常规内存管理器,并将其扩展以支持额外的控制数据(例如您的进程 ID)。或者分配一大块内存,将其分成较小的每个进程块,并在这些块内实现内存管理。例如,看一下 Doug Lea 的内存分配器

另请参阅内存管理维基百科。关注链接。

Just implement a regular memory manager with malloc() and free() equivalents and extend it to support extra control data (e.g. your process IDs). Or allocate a large block of memory, carve it up in smaller per-process pieces and implement memory management inside of those pieces. Take a look, for example, at Doug Lea's memory allocator.

See also Wikipedia on Memory Management in general. Follow links.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文