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`时归零。