首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linus Torvalds 亲自上手,改善用户模式栈扩展代码

作者 | Michael Larabel        译者 | 枫叶聊斋

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

Linux 的创造者 Linus Torvalds 已不再像之前那样亲自编写大量的核心代码。他如今的主要职责是监督上游的内核开发社区,包括审查代码、管理版本发布,并在邮件列表中参与讨论。然而,有时他也会亲自进行一些底层的内核开发工作,比如他最近就编写了 Linux 6.5 改进用户模式栈扩展的代码。

这项近 500 行的代码重构的目标是提升用户模式下的栈扩展部分的效率。

他在提交记录中解释道:

本次修改让我们的用户模式栈扩展代码在变更虚拟内存(VM)布局之前,始终进行 mmap_lock 写入。

这实际上是我们一直以来都在做的事情。由于我们并不严格需要它,我们选择了一种更为便捷("投机取巧"听起来是不是更好些?)的方式,即通过一种不需要进行适当锁定的机制来就地扩展栈的虚拟内存地址(vma)。

这种方式在实际工作中表现出色。我们只需根据需要改变 vm_start 或 vm_end,然后配合使用 anon_vma 锁和 mm->page_table_lock 进行临时锁定,就能够顺利进行一切操作。

然而,直到 Ruihan Li 指出,由于现在虚拟内存地址(vma)布局使用了 maple tree 代码,我们不能仅仅改变 vm_start 和 vm_end,否则原有的锁定机制将会被破坏。

解决这个问题虽然有一些困难,但并还不算糟糕。我们有三种不同的栈扩展情况,它们的工作方式略有不同。

感谢 Linus Torvalds 亲自接手这项编程挑战,现在在 Linux 6.5 版本中,这个问题应该已经得到了解决。

更多详细内容可参考提交记录:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9471f1f2f50282b9e8f59198ec6bb738b4ccc009

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OI84Y-7u42xfYYDYfGo8QX7Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券