Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于 WAMR 内存模型的一些疑问 #4046

Open
lxbxl opened this issue Jan 22, 2025 · 0 comments
Open

关于 WAMR 内存模型的一些疑问 #4046

lxbxl opened this issue Jan 22, 2025 · 0 comments

Comments

@lxbxl
Copy link

lxbxl commented Jan 22, 2025

我们使用 WAMR 的场景是在 Windows 的中断响应函数中,这就要求我们必须预先分配好整个 WAMR (包括其中运行的 wasm 程序) 所使用的内存。(win 的中断响应函数中不允许进行内存分配相关操作)针对这种场景,不知 WAMR 推荐的最佳工程实践是什么

我们按照 《The WAMR memory model》 中介绍的 Alloc_With_Pool 模式进行测试时发现 linear memory 并没有用 pool_allocator 进行分配,而是去调用 wasm_mmap_linear_memory 进而调用 os_mmap。这个线性内存不能用预分配的 pool 吗?是否有其他内存也没使用 pool ?

Alloc_With_System_Allocator 模式是否所有的内存分配最终都是调用 os_malloc 或 os_mmap?

Alloc_With_Allocator 模式的 MemAllocOption 中的 malloc_func 与 os_malloc(及 os_mmap)是什么样的关系?覆盖还是各有分工?

对于这些 os_xxxx 平台抽象 api , 我们不是很明确它们的使用场景。

  • 它们除了被 wamr 本身调用外是否也会被 wamr 中的 wasm 程序间接调用?
  • 它们是否是对系统调用的抽象?
  • 针对我们的使用场景,是否必须用预分配的内存池去实现与 os_xxx 相关的内存 api
  • 是不是有可能 wasm 程序在调用 c 的 malloc 时,有几率调到 os_malloc?
  • wasm 程序请求分配内存时(例如 c 的 malloc)使用的是 wasm_module_inst_t 中预先分配好的内存吗?
  • 若 wasm_module_inst_t 中的堆内存不够使用了,是否会调用 wamr 的内存分配函数(pool_allocator 或 os_xxx 或 MemAllocOption.malloc_func)来分配更多的内存给 wasm_module_inst_t?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant