gpt4 book ai didi

linux - linux 内核如何强制执行堆栈大小限制?

转载 作者:太空狗 更新时间:2023-10-29 11:07:50 25 4
gpt4 key购买 nike

我知道堆栈大小可以通过限制工具来控制,但是内核如何强制执行其中的一些限制,例如 RLIMIT_STACK?由于linux不参与栈操作(只是一个mov或push指令),那么当你超过限制时,内核如何发出SIGSEGV?我知道对于虚拟寻址,CPU 提供了 linux 内核可以使用的设施。这是否类似于堆栈大小限制的强制执行方式?或者 linux 是否对堆栈大小执行例行检查并在“犯罪发生后”发出段错误?还是有第三种选择?

最佳答案

由于虚拟内存,内核可以控制这一点。虚拟内存(也称为内存映射)基本上是一个虚拟内存区域列表(基础+大小)和内核可以操作的目标物理内存区域,每个程序都是唯一的。当程序试图访问不在此列表中的地址时,就会发生异常。此异常将导致上下文切换到内核模式。内核可以查找故障。如果内存要变为有效,它将在程序可以继续之前就位(例如,交换和 mmap 尚未从磁盘读取)或者可以生成 SEGFAULT。

为了决定堆栈大小限制,内核简单地操作虚拟内存映射。

关于linux - linux 内核如何强制执行堆栈大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561333/

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