Linus Torvalds 切身上手,改善使用者模式棧擴充套件程式碼

首頁 > 科技

Linus Torvalds 切身上手,改善使用者模式棧擴充套件程式碼

來源:生活裡的創意 釋出時間:2023-07-04 17:10

【編者按】Linux 的創始人 Linus Torvalds 最近切身改進了使用者模式棧擴充套件程式碼,解決了一個與虛擬記憶體地址佈局相關的問題。

原文連結:https://www.phoronix.com/news/Linux-65-User-Mode-Stack-Expand

未經允許,禁止轉載!

作者 | 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

【編者按】Linux 的創始人 Linus Torvalds 最近切身改進了使用者模式棧擴充套件程式碼,解決了一個與虛擬記憶體地址佈局相關的問題。

原文連結:https://www.phoronix.com/news/Linux-65-User-Mode-Stack-Expand

未經允許,禁止轉載!

作者 | Michael Larabel 譯者 | 楓葉聊齋責編 | 夏萌

出品 | CSDN(ID:CSDNnews)

【編者按】Linux 的創始人 Linus Torvalds 最近切身改進了使用者模式棧擴充套件程式碼,解決了一個與虛擬記憶體地址佈局相關的問題。

原文連結:https://www.phoronix.com/news/Linux-65-User-Mode-Stack-Expand

未經允許,禁止轉載!

作者 | Michael Larabel 譯者 | 楓葉聊齋責編 | 夏萌

出品 | CSDN(ID:CSDNnews)

上一篇:怎麼做好垂類... 下一篇:商業重疾保險...
猜你喜歡
熱門閱讀
同類推薦