時至今日,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 中的這個問題應該已經得到了解決。
-
Linux
+關注
關注
87文章
11511瀏覽量
213837 -
代碼
+關注
關注
30文章
4900瀏覽量
70756
原文標題:Linus親自改進Linux用戶模式堆棧擴展
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
華為工程師總結Linux筆記
Analog Devices Inc. EVAL-ESS1-SYS可擴展BMS解決方案套件

騰訊云內核團隊修復Linux關鍵Bug
禁止使用root用戶通過ssh遠程登錄Linux

Linux學習之用戶管理
迅為RK3568開發板定制擴展分區SDK源碼編譯-獲取Linux-定制擴展分區源碼包
Linux用戶身份與進程權限詳解

ChatGPT 高級語音模式擴展至歐盟多國
freebsd和linux哪個好用
如何使用Polyspace Code Prover來統計堆棧

評論