【问题标题】:Allocating memory in OS在操作系统中分配内存
【发布时间】:2021-10-16 20:16:33
【问题描述】:

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

【问题讨论】:

标签: linux-kernel operating-system dynamic-memory-allocation


【解决方案1】:

Linux 操作系统确实为每个线程使用了自己的固定大小的堆栈。你可以在定义thread_union的源代码中看到堆栈。

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

当内核需要分配动态内存时,它使用kamlloc,后者使用slob allocator

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 2017-07-11
    • 2012-10-29
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    相关资源
    最近更新 更多