From 5c9e03236d5f7b91bbff3b4ee4a31716c9efd1ff Mon Sep 17 00:00:00 2001 From: fslongjin Date: Tue, 26 Jul 2022 18:45:11 +0800 Subject: [PATCH] =?UTF-8?q?doc:=20=E5=86=85=E5=AD=98=E5=88=86=E9=85=8D?= =?UTF-8?q?=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/index.rst | 1 + docs/kernel/core_api/allocate-memory.md | 15 +++++++++++++++ docs/kernel/core_api/index.rst | 13 +++++++++++++ docs/kernel/memory_management/index.rst | 7 +++++++ 4 files changed, 36 insertions(+) create mode 100644 docs/kernel/core_api/allocate-memory.md create mode 100644 docs/kernel/memory_management/index.rst diff --git a/docs/index.rst b/docs/index.rst index 82206d7a..be47a43e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,6 +20,7 @@ kernel/boot/index kernel/core_api/index kernel/process_management/index + kernel/memory_management/index kernel/filesystem/index kernel/debug/index kernel/cpu_arch/index diff --git a/docs/kernel/core_api/allocate-memory.md b/docs/kernel/core_api/allocate-memory.md new file mode 100644 index 00000000..15ba347c --- /dev/null +++ b/docs/kernel/core_api/allocate-memory.md @@ -0,0 +1,15 @@ +# 内存分配指南 + +DragonOS提供了一些用于内存分配的api。您可以使用*kmalloc*来分配小的内存块,也可以使用*alloc_pages*分配连续的2MB大小的内存页面。 + +## 选择合适的内存分配器 + +在内核中,最直接、最简单的分配内存的方式就是,使用`kmalloc()`函数进行分配。并且,出于安全起见,在得到内存块后,我们强烈建议您使用`memset()`函数将该内存区域清零。 + +您可以通过`kmalloc()`函数分配得到32bytes到1MBytes之间的内存对象。并且,这些内存对象具有以下的性质: + +- 内存起始地址及大小按照2次幂对齐。(比如,申请的是80bytes的内存空间,那么内存对象大小为128bytes且内存地址按照128bytes对齐) + +对于需要大量连续内存的分配,可以使用`alloc_pages()`向页面分配器申请连续的内存页。 + +当内存空间不再被使用时,那么必须释放他们。若您使用的是`kmalloc()`分配的内存,那么您需要使用`kfree()`释放它。若是使用`alloc_pages()`分配的内存,则需要使用`free_pages()`来释放它们。 diff --git a/docs/kernel/core_api/index.rst b/docs/kernel/core_api/index.rst index f44d411e..5d88dff5 100644 --- a/docs/kernel/core_api/index.rst +++ b/docs/kernel/core_api/index.rst @@ -1,3 +1,4 @@ +==================================== 核心API文档 ==================================== @@ -8,3 +9,15 @@ :caption: 内核实用函数库 kernel_api + +内存管理 +=================== + + 这里快速讲解了如何在DragonOS中分配、使用内存。以便您能快速的了解这个模块。 + + 详细的内存管理模块的文档请参见::ref:`memory_management_module` + +.. toctree:: + :maxdepth: 1 + + allocate-memory \ No newline at end of file diff --git a/docs/kernel/memory_management/index.rst b/docs/kernel/memory_management/index.rst new file mode 100644 index 00000000..31a566c4 --- /dev/null +++ b/docs/kernel/memory_management/index.rst @@ -0,0 +1,7 @@ +.. _memory_management_module: + +==================================== +内存管理模块 +==================================== + +[内容待完善] \ No newline at end of file