時(shí)至今日,Linus Torvalds 實(shí)際上已經(jīng)很少會(huì)親自動(dòng)手寫內(nèi)核代碼;更多的是忙于監(jiān)督上游的內(nèi)核開發(fā)社區(qū)、審查代碼、管理發(fā)布,并在郵件列表中進(jìn)行討論。不過近日,他就為 Linux 6.5 進(jìn)行了將近 500 行的 code rework ,以改進(jìn)用戶模式的堆棧擴(kuò)展代碼。
他在合并報(bào)告中解釋稱:
這修改了我們的用戶模式堆棧擴(kuò)展代碼,使其在修改 VM 布局之前始終獲取 mmap_lock 進(jìn)行寫入。
實(shí)際上這是我們?cè)诩夹g(shù)上應(yīng)該做到的事情,但是因?yàn)槲覀儾⒉粐?yán)格地需要它,所以我們有點(diǎn)偷懶(“機(jī)會(huì)主義” 聽起來好多了,不是嗎?)。并且在我們需要的地方設(shè)置了這個(gè) hack,會(huì)在不進(jìn)行適當(dāng)鎖定的情況下就地?cái)U(kuò)展堆棧 vma。
而且效果很好。我們只需要改變 vm_start(或者,在 grow-up stacks 的情況下,vm_end),再加上一些使用 anon_vma 鎖和 mm》page_table_lock 的特殊的臨時(shí)鎖,這一切都相當(dāng)簡(jiǎn)單明了。
也就是說這一切都很好,直到 Ruihan Li 指出,現(xiàn)在 vma 布局使用 maple tree code,我們真的不只是改變 vm_start 和 vm_end 了,而且 locking 真的被打破了。
一勞永逸地解決這個(gè)問題并做適當(dāng)?shù)?locking 其實(shí)并不可怕,但有點(diǎn)痛苦。我們基本上有三種不同的堆棧擴(kuò)展情況,它們的工作方式都略有不同。
目前,Linux 6.5 中的這個(gè)問題應(yīng)該已經(jīng)得到了解決。
-
Linux
+關(guān)注
關(guān)注
87文章
11357瀏覽量
210809 -
代碼
+關(guān)注
關(guān)注
30文章
4845瀏覽量
69256
原文標(biāo)題:Linus親自改進(jìn)Linux用戶模式堆棧擴(kuò)展
文章出處:【微信號(hào):OSC開源社區(qū),微信公眾號(hào):OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
騰訊云內(nèi)核團(tuán)隊(duì)修復(fù)Linux關(guān)鍵Bug
Linux用戶管理終極指南:從基礎(chǔ)到進(jìn)階

Jacinto7 EVM信息娛樂擴(kuò)展用戶指南

Linux學(xué)習(xí)之用戶管理
迅為RK3568開發(fā)板定制擴(kuò)展分區(qū)SDK源碼編譯-獲取Linux-定制擴(kuò)展分區(qū)源碼包
Linux用戶管理詳解
Linux用戶身份與進(jìn)程權(quán)限詳解

ChatGPT 高級(jí)語(yǔ)音模式擴(kuò)展至歐盟多國(guó)
堆棧和內(nèi)存的基本知識(shí)

freebsd和linux哪個(gè)好用
如何使用Polyspace Code Prover來統(tǒng)計(jì)堆棧

IBM擴(kuò)展全面的量子軟件堆棧Qiskit
改進(jìn)的電流模式PWM控制器UC3856數(shù)據(jù)表

改進(jìn)的電流模式脈寬調(diào)制 (PWM) 控制器UC1856-SP數(shù)據(jù)表

評(píng)論