在 OS 中分配内存

Allocating memory in OS

为了动态分配内存,我们使用了一些系统调用。所以操作系统在相应进程的堆上分配内存。但是操作系统本身是如何分配内存的?
当必须创建某些数据结构(例如进程表)时,如何分配操作系统内存? dose OS 内核有自己的栈和堆?

Linux 操作系统确实为每个线程使用了自己固定大小的堆栈。您可以在定义 thread_union.

的源代码中看到堆栈

当在 x86/x64 中执行系统调用时,内核换出 GS 段和 CR3 寄存器以引用其自己的内存,然后使用 GS 段寄存器定位指向 cpu_current_top_of_stack调用线程的相应内核堆栈指针。你可以在 entry_SYSCALL_64.

中看到这个

当内核需要分配动态内存时,它使用kamlloc which uses the slob allocator