gpt4 book ai didi

linux - sbrk/brk 在 Linux 中是如何实现的?

转载 作者:IT王子 更新时间:2023-10-29 00:19:12 27 4
gpt4 key购买 nike

我在考虑 Linux 内核如何实现系统调用,我想知道是否有人可以给我一个关于 sbrk/brk 工作原理的高级 View ?

我已经查看了内核代码,但是太多了,我看不懂。我希望得到某人的总结?

最佳答案

在非常高的层次上,Linux 内核将进程可见的内存跟踪为多个“内存区域”(struct vm_area_struct)。还有一个结构表示(同样在非常高的层次上)一个进程的整个地址空间(struct mm_struct)。每个进程(一些内核线程除外)只有一个struct mm_struct,它依次指向所有struct vm_area_struct,用于它可以访问的内存。

sys_brk 系统调用(在 mm/mmap.c 中找到)只是调整其中一些内存区域。 (sbrkbrk 的 glibc 包装器)。它通过比较 brk 地址(在 struct mm_struct 中找到)的旧值和请求的值来实现。

首先查看 mmap 函数族会更简单,因为 brk 是它的特例。

关于linux - sbrk/brk 在 Linux 中是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/997425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com