From 320ceaa56dff2ce20ae9164b3d8221158d5556d7 Mon Sep 17 00:00:00 2001 From: pointer-to-bios Date: Fri, 1 Mar 2024 01:47:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0raw=20allocator=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=BB=BA=E8=AE=AE=E3=80=82=20=E6=94=B9=E5=8F=98?= =?UTF-8?q?=E4=BD=8E=E5=9C=B0=E5=9D=80=E6=98=A0=E5=B0=84=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 5 ++++- include/kernel/arch/x86_64/memm.h | 3 ++- include/kernel/memm/allocator/raw.h | 10 ++-------- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index a77927d..3316f1c 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SOURCE := $(shell pwd)/src/scripts -.PHONY: all clear run debug config +.PHONY: all clear run debug config disass all: config @make -C src all --no-print-directory @@ -25,3 +25,6 @@ config: touch metaverse_kernel; \ "${SOURCE}/depcheck"; \ fi + +disass: + objdump -D src/metaverse.elf > kerndisass.txt diff --git a/include/kernel/arch/x86_64/memm.h b/include/kernel/arch/x86_64/memm.h index a307981..1fc1d31 100644 --- a/include/kernel/arch/x86_64/memm.h +++ b/include/kernel/arch/x86_64/memm.h @@ -9,7 +9,8 @@ * * 物理地址空间: * - * * 0 \~ 2MB:不使用,不映射 + * * 0 \~ 1MB:保留。 + * * 1MB \~ 2MB:内核头。 * * 2MB \~ 4MB:中断栈。 * * 4MB \~ 16MB:内核栈。 * * 16MB \~ ?:内核镜像。 diff --git a/include/kernel/memm/allocator/raw.h b/include/kernel/memm/allocator/raw.h index a8d4112..d9d1258 100644 --- a/include/kernel/memm/allocator/raw.h +++ b/include/kernel/memm/allocator/raw.h @@ -16,14 +16,6 @@ typedef struct __raw_allocator_cell } raw_allocator_cell; #define raw_allocator_next_cell(cell) (raw_allocator_cell *)((void *)((cell)->content) + (cell)->capacity) -// 原始分配器 -// -// 包括至少一个cell,分配时像cell的分裂一样将空白的一段分成两段, -// 释放时,只把length归零,并不将cell合并。 -// length=0的cell称为空cell -// -// 统计从上次细胞合并以来free的调用次数,当调用次数很多或可用空间不足时 -// 触发细胞合并。 /** * @name raw_allocator_t * @@ -33,6 +25,8 @@ typedef struct __raw_allocator_cell * * 统计从上次细胞合并以来free的调用次数,当调用次数达到`RAW_ALLOCATOR_FREE_MAX`或无可用空间时触发细胞合并。 * + * 使用建议:只在少量allocate和free的情况下使用。使用大量allocate时效率低下并难以得到内存安全保证。 + * * @internal free_count * * free方法的调用次数,达到`RAW_ALLOCATOR_FREE_MAX`时归零。