【发布时间】:2010-09-16 20:08:46
【问题描述】:
我正在开发一个操作系统,而不是对内核进行编程,而是在设计内核。该操作系统针对 x86 架构,而我的目标是针对现代计算机。所需 RAM 的估计数量为 256Mb 或更多。
使每个线程的堆栈在系统上运行的合适大小是多少?我是否应该尝试将系统设计为在达到最大长度时自动扩展堆栈?
我想如果我没记错的话,RAM 中的一个页面是 4k 或 4096 字节,这对我来说似乎并不多。我绝对可以看到,尤其是在使用大量递归时,我希望一次在 RAM 中拥有超过 1000 个整数。现在,真正的解决方案是让程序通过使用malloc 来执行此操作并管理它自己的内存资源,但我真的很想知道用户对此的看法。
4k 是否足以容纳现代计算机程序的堆栈?堆栈应该比那个大吗?堆栈是否应该自动扩展以适应任何类型的大小?从实际开发人员的角度和安全的角度来看,我对此都很感兴趣。
4k 对于堆栈来说太大了吗?考虑到正常的程序执行,特别是从 C++ 中的类的角度来看,我注意到好的源代码倾向于malloc/new 创建类时需要的数据,以尽量减少函数调用中抛出的数据。
我什至还没有了解处理器高速缓存的大小。理想情况下,我认为堆栈将驻留在缓存中以加快速度,我不确定我是否需要实现这一点,或者处理器是否可以为我处理它。我只是打算使用常规无聊的旧 RAM 进行测试。我无法决定。有哪些选择?
【问题讨论】:
标签: operating-system stack size kernel osdev