Linus Torvalds 动手改进 Linux 用户模式堆栈扩展
时至今日,Linus Torvalds 实际上已经很少会亲自动手写内核代码;更多的是忙于监督上游的内核开发社区、审查代码、管理发布,并在邮件列表中进行讨论。不过近日,他就为 Linux 6.5 进行了将近 500 行的 code rework ,以改进用户模式的堆栈扩展代码。
他在合并报告中解释称:
这修改了我们的用户模式堆栈扩展代码,使其在修改 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 中的这个问题应该已经得到了解决。更多详情可查看此处。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
di18n —— 滴滴前端国际化方案
di18n 是滴滴开源的自动转换、基于配置的前端国际化方案。它能自动扫描代码中的主语言,将其替换成国际化标记;同时将语言抽取成配置,可以放到服务端保存及更新。 工作原理 di18n 会先按如下步骤扫描源码: 使用 Babel 解析得到 AST,遍历 AST,并对特殊的节点进行检查,抽取出需要翻译的字符串; 自动为每一个字符串分配一个 key因随机 key 可读性差,已改成使用主语言(如中文)文案为 key; 自动调用 Google 翻译服务(可选),得到一个英文的字符串。 注:对于 React,上面提到的特殊节点包括:JSXTextStringLiteralTemplateLiteral等。 扫描之后,对于源代码: 构造CallExpression表达式intl.t('key1'); 替换原有节点path.replaceWith(newNode); 将新的 AST 通过 Babel 转换为代码; 使用 Prettier 格式化代码; 将新的代码落盘。 对于国际化资源: 将 key-value 转换为 i18n 配置文件格式。 流程图 安装 $ npm i -D di18n-cli ...
- 下一篇
员工窃取公司游戏源代码,半年盈利 1.5 亿
上海一游戏公司三名离职员工利用职务之便,盗取了公司开发的手游源代码;并“换皮”成新游戏上线,半年内成功盈利 1.5 亿。 事情的起始经过具体为,该公司在 2022 年 11 月发现网上出现了一款与自家产品十分类似的游戏,让他们开始怀疑是否存在源代码泄露问题,于是向公安进行了报案。警方立案调查后发现,最初开发该游戏的员工有较大嫌疑。 据悉,这三名离职员工曾是该公司手游的开发人员;游戏上线后收获了不错的热度,他们也因此获得了丰厚的提成。之后,3 人向公司提出开发升级版的新游戏,但遭到了管理层的否定。这致使他们产生了离职自行发展的想法,并在深圳注册了一家公司。 三人在协商之后将该手游的源代码提供给了另一家网络公司,对方进行简单“换皮”之后就开始上线经营。而此时,3 人还没有从原公司离职。且为了成功上线,他们还套用了《计算机软件著作权登记证》和《网络游戏出版核发单》。 图片来源/上海警方 警方将三人抓捕归案后经过审理得知,双方达成合作协议之后按比分配所得利润,对方公司占 85%,3 人所在公司占 15%;自“盗版”游戏上线以来,盈利超过 1. 5亿,三人分得利润超过1500万。上游新闻从警方出...
相关文章
文章评论
共有0条评论来说两句吧...