0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linus亲自改进Linux用户模式堆栈扩展

OSC开源社区 来源:OSC开源社区 2023-07-04 15:31 次阅读

时至今日,Linus Torvalds 实际上已经很少会亲自动手写内核代码;更多的是忙于监督上游的内核开发社区、审查代码、管理发布,并在邮件列表中进行讨论。不过近日,他就为 Linux 6.5 进行了将近 500 行的 code rework ,以改进用户模式的堆栈扩展代码。

4a990f7e-198f-11ee-962d-dac502259ad0.png

他在合并报告中解释称:

这修改了我们的用户模式堆栈扩展代码,使其在修改 VM 布局之前始终获取 mmap_lock 进行写入。

实际上这是我们在技术上应该做到的事情,但是因为我们并不严格地需要它,所以我们有点偷懒(“机会主义” 听起来好多了,不是吗?)。并且在我们需要的地方设置了这个 hack,会在不进行适当锁定的情况下就地扩展堆栈 vma。

而且效果很好。我们只需要改变 vm_start(或者,在 grow-up stacks 的情况下,vm_end),再加上一些使用 anon_vma 锁和 mm》page_table_lock 的特殊的临时锁,这一切都相当简单明了。

也就是说这一切都很好,直到 Ruihan Li 指出,现在 vma 布局使用 maple tree code,我们真的不只是改变 vm_start 和 vm_end 了,而且 locking 真的被打破了。

一劳永逸地解决这个问题并做适当的 locking 其实并不可怕,但有点痛苦。我们基本上有三种不同的堆栈扩展情况,它们的工作方式都略有不同。

目前,Linux 6.5 中的这个问题应该已经得到了解决。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11218

    浏览量

    208840
  • 代码
    +关注

    关注

    30

    文章

    4738

    浏览量

    68310

原文标题:Linus亲自改进Linux用户模式堆栈扩展

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux用户管理详解

    用户分为普通用户和超级用户,超级用户在Windows系统中为Administrator在Linux系统中为root。登陆
    的头像 发表于 11-01 09:48 97次阅读

    ChatGPT 高级语音模式扩展至欧盟多国

    近日,OpenAI 宣布了一个重要的更新,将其 ChatGPT 高级语音模式扩展到了欧盟、瑞士、冰岛、挪威和列支敦士登等地区。这一功能最初在今年5月推出时,仅限于美国的 Plus 和 Team 用户
    的头像 发表于 10-23 11:08 355次阅读

    堆栈和内存的基本知识

    本文主要聊聊关于堆栈的内容。包括堆栈和内存的基本知识。常见和堆栈相关的 bug,如栈溢出,内存泄漏,堆内存分配失败等。后面介绍软件中堆栈统计的重要性,以及如何使用工具工具软件中
    的头像 发表于 08-29 14:10 380次阅读
    <b class='flag-5'>堆栈</b>和内存的基本知识

    freebsd和linux哪个好用

    操作系统历史和起源: FreeBSD和Linux都是基于UNIX的操作系统。FreeBSD起源于加州大学伯克利分校的BSD项目,而Linux则是由Linus Torvalds在1991年创建
    的头像 发表于 08-08 10:29 555次阅读

    如何使用Polyspace Code Prover来统计堆栈

    前一篇文章介绍了堆栈和内存的一些背景知识。本次介绍如何使用 Polyspace Code Prover来统计堆栈,如何使用这些数据为软件优化服务。
    的头像 发表于 07-25 14:06 437次阅读
    如何使用Polyspace Code Prover来统计<b class='flag-5'>堆栈</b>

    IBM扩展全面的量子软件堆栈Qiskit

    IBM 近日宣布其量子软件 Qiskit 取得了显著的发展和扩展。自2017年作为软件开发工具包(SDK)推出以来,Qiskit 已成为全球量子计算领域的佼佼者。作为一款开源工具,Qiskit 赋予超过55万用户在IBM的先进量子硬件系统上构建和运行量子电路的能力。
    的头像 发表于 05-20 14:14 406次阅读

    改进的电流模式脉宽调制 (PWM) 控制器UC1856-SP数据表

    电子发烧友网站提供《改进的电流模式脉宽调制 (PWM) 控制器UC1856-SP数据表.pdf》资料免费下载
    发表于 04-03 14:11 0次下载
    <b class='flag-5'>改进</b>的电流<b class='flag-5'>模式</b>脉宽调制 (PWM) 控制器UC1856-SP数据表

    Linux操作系统上的射频测试模式应用指南

    电子发烧友网站提供《Linux操作系统上的射频测试模式应用指南.pdf》资料免费下载
    发表于 02-19 09:39 0次下载
    <b class='flag-5'>Linux</b>操作系统上的射频测试<b class='flag-5'>模式</b>应用指南

    TLE9893如何配置堆栈溢出检测?

    我需要了解如何配置堆栈溢出检测。 我从 TLE9893 用户手册中收集到的 需要启用用户堆栈溢出保护 (USOP), 需要通过上限和下限 DSRAM 地址来建立所谓的保护频段。 我
    发表于 01-19 06:11

    冬季风暴导致Linus Torvalds暂停Linux 6.8内核开发

    Linus Torvalds 在内核邮件列表宣布,由于他位于美国俄勒冈州波特兰的居住地遭遇严重冬季风暴,导致网络和电力中断,他所在的波特兰附近地区气温降至 -10°C,因此他不得不暂停 Linux 6.8 内核的合并窗口。
    的头像 发表于 01-17 11:01 624次阅读
    冬季风暴导致<b class='flag-5'>Linus</b> Torvalds暂停<b class='flag-5'>Linux</b> 6.8内核开发

    ARM处理器7种工作模式

    转为Linux内核态) 在CPSR寄存器中设置M[4:0]位,分别对应如下七种模式(注意:用户模式和系统模式只有对CPSR的读权限,因此、这
    发表于 12-15 10:15

    linux怎样进入vim编辑模式

    Linux中,要进入Vim编辑器的编辑模式,可以按照以下步骤进行操作: 打开终端或命令行界面。 输入以下命令来启动Vim编辑器: vim 文件名 其中,文件名是要编辑的文件的名称。如果文件不存在
    的头像 发表于 11-26 15:43 4667次阅读

    linux中vim三种模式切换

    Linux中,Vim编辑器具有三种模式,分别是命令模式、插入模式和末行模式。这三种模式有着不同
    的头像 发表于 11-26 15:39 2372次阅读

    linux如何进入管理员模式

    Linux操作系统以其稳定性和安全性而闻名,并且在服务器和嵌入式设备领域广泛使用。在Linux中,管理员模式也称为超级用户模式或root
    的头像 发表于 11-23 10:56 7346次阅读

    Linux把目录权限给指定用户

    Linux是一个开放源代码的操作系统,它基于Unix的设计原则,提供了丰富的权限管理功能,允许用户对系统中的文件和目录进行精确的控制。在Linux中,每个文件和目录都有相应的权限,这些权限由一系列
    的头像 发表于 11-23 10:30 7998次阅读