国产亚洲AV自拍|av中文字幕一区|资源在线观看一区二区|亚洲影视久久亚洲特级性交|一级做一级a做片爱免费观看|欧美另类亚洲色婷婷精品无码|亚洲青青草免费一区|青青草免费成人网|91久久国内视频|五月天丁香久久

您申請加入課程:操作系統(tǒng)原理及課程設(shè)計(jì)
需要驗(yàn)證您的身份,請輸入課程密碼:
您的學(xué)號:
班級選擇:
課程密碼:
  • 創(chuàng)建者

    Creator

    李丁丁
  • 活躍度

    Activeness

  • 訪問量

    Visits

    101956

教學(xué)公告

2021級譚宇亮OS國賽心得
[作者: 李丁丁  發(fā)布時(shí)間:2025-09-05 14:38:21  瀏覽次數(shù):303次]


我的國賽心得分享:從興趣、折騰到獲獎(jiǎng)

----------

學(xué)弟學(xué)妹們好!

我是21級的譚宇亮,很高興丁丁老師給了我一次分享比賽心得(吹牛)的機(jī)會(huì),回憶一年前杭電那個(gè)難忘的暑假。

----------

一、 興趣是最好的老師

在上大學(xué)之前,我只能用家里老舊性能低下的電子設(shè)備,于是折騰 Linux 和 Android 刷機(jī)試圖給老設(shè)備續(xù)命,但是遇到很多問題,當(dāng)時(shí)不理解導(dǎo)致沒有足夠能力解決他們。這些困惑和折騰經(jīng)歷構(gòu)成了我對操作系統(tǒng)最初的興趣。

大三上的時(shí)候?qū)W院開設(shè)了操作系統(tǒng)課程,但是對于喜歡折騰的我來說,光聽課不動(dòng)手沒有意思。我在網(wǎng)上看到了 MIT 6.s081 課程,感覺挺有意思的,于是選擇動(dòng)手做 6.s081 的實(shí)驗(yàn)。大概11月這樣,我就已經(jīng)把課程的實(shí)驗(yàn)做完了(部分類似附加題的題目沒做),雖然實(shí)驗(yàn)很有意思,但我感覺還是不夠折騰。

可生命在于折騰啊,我想做些更折騰的東西。

網(wǎng)上說 6.s081 有個(gè)進(jìn)階一點(diǎn)的課程,但是我感覺經(jīng)過精心設(shè)計(jì)的實(shí)驗(yàn)不夠挑戰(zhàn)性,總是差點(diǎn)意思,于是計(jì)劃自己找點(diǎn)操作系統(tǒng)相關(guān)的東西折騰。我決定做一個(gè)安卓容器(類似手機(jī)上的安卓虛擬機(jī))的興趣項(xiàng)目,項(xiàng)目大概持續(xù)了小半年,容器第一次成功進(jìn)入桌面的時(shí)候特別激動(dòng),不過可惜現(xiàn)在爛尾了。但我意識到,自己這樣瞎折騰與現(xiàn)實(shí)世界比如工業(yè)界的開發(fā)還是有差別的,我想接觸一些更現(xiàn)實(shí)世界的東西。

二、 比賽前的選擇與自我評估

----------

也是在做這個(gè)項(xiàng)目的過程中,和比賽結(jié)下了緣分。在搜索前人方案的時(shí)候,我搜索到了23年一個(gè)安卓虛擬化比賽題目的代碼倉庫。我一想這比賽很好啊,很有挑戰(zhàn)性(夠折騰),而且也是接觸真實(shí)世界問題的一個(gè)很好機(jī)會(huì)。于是盤算著接著他們的題目參加24年的比賽。

但是后面報(bào)名的時(shí)候沒有這個(gè)題目。我記得當(dāng)時(shí)瀏覽了一遍賽題,很多高大上的題目看著有點(diǎn)嚇人,看來真實(shí)世界的問題還是不太容易的。不過列表里忽然掃到一個(gè)題目:《添加 gVisor 的 kvm 和 ptrace 平臺對 RISC-V 平臺的支持》。

ptrace?這不和我的容器項(xiàng)目有些關(guān)聯(lián)(都使用了 ptrace 進(jìn)行系統(tǒng)調(diào)用捕獲),相對熟悉;而且比賽題目是做移植,有跡可循。我一想 “穩(wěn)了”,就選定了這個(gè)題目。

細(xì)節(jié)是魔鬼。 我知道雖然這題目看著不算太難(標(biāo)的中等難度)和安卓容器有相關(guān)的地方,但即使這樣也有很多東西要學(xué),很多坑要踩,不太容易;同時(shí)當(dāng)時(shí)好不容易找到一份實(shí)習(xí),也需要投入時(shí)間精力。萬一要是我真堅(jiān)持不住怎么辦?

不過好在當(dāng)時(shí)比賽3月開始報(bào)名,5月截止。于是不想爛尾的我決定:先不報(bào)名,要是我5月份前能夠跑通 HelloWorld 的話我就報(bào)名,不行的話就趁早放棄。 不報(bào)名也沒人知道~~(爛尾王就少了一個(gè)爛尾項(xiàng)目)~~。

三、 初賽階段:在“大坑”中學(xué)習(xí)

----------

初賽的時(shí)候主要是跑通編譯,繁瑣但簡單。5月份按照預(yù)期跑通了一個(gè) Helloworld,很激動(dòng),于是果斷報(bào)名參賽,起了個(gè)隊(duì)名就叫 HelloWorld。但是,跑通編譯僅僅只是開始,挑戰(zhàn)才剛剛開始。

第一個(gè)遇到的大坑是,為了進(jìn)度沒有弄明白代碼為什么這么寫,而只是為了跑通編譯而瞎填了代碼,寫了很多 BUG。排除這些 BUG 產(chǎn)生了額外的時(shí)間開銷,但是幸運(yùn)的是,問題是清楚的。這過程也學(xué)到了很多新知識,因?yàn)檫@也是我喜歡的學(xué)習(xí)方式:通過動(dòng)手做點(diǎn)東西,以問題導(dǎo)向的方式學(xué)習(xí)知識,學(xué)習(xí)并應(yīng)用知識解決問題。 這樣容易獲得正反饋,而且親自動(dòng)手驗(yàn)證的知識不容易遺忘。

第二個(gè)遇到的大坑是,程序出現(xiàn)了很多并發(fā)的奇怪 BUG:

  • 比如說基于 ptrace 追蹤的容器里的程序有一些 syscall 會(huì)有異常;

  • kvm 虛擬機(jī)里程序在多個(gè) vcpu 調(diào)度會(huì)死鎖,單 vcpu 卻沒問題。

這也是比賽過程最讓人抓狂的地方:瞪眼看項(xiàng)目代碼怎么都沒問題。這時(shí)候我想這鍋肯定不是我背,但甩鍋也得講求證據(jù),于是我就化身偵探,去調(diào)查這些 BUG 產(chǎn)生的真正原因。

可惜我對調(diào)試工具~~(放大鏡)~~不太熟悉,也嘗試了一些調(diào)試手段,不過更多的時(shí)候還是 “古法查bug”:閱讀涉及到的項(xiàng)目和系統(tǒng)內(nèi)核的相關(guān)代碼,找出代碼路徑,在代碼路徑上一步步手動(dòng)打印調(diào)試日志,二分查找鎖定,不斷縮小排查范圍解決問題。

  • 比如 syscall 通過打印查看追蹤前后的寄存器上下文,發(fā)現(xiàn) a0 寄存器內(nèi)容有問題,不過在 LKML 上發(fā)現(xiàn)有相關(guān)的 patch,幸運(yùn)地是問題很快解決了,不幸地是痛失撿漏一個(gè)向 Linux kernel 提交 patch 的機(jī)會(huì)哈哈哈。

  • 通過打印內(nèi)核里 vcpu 調(diào)度的代碼路徑,最終發(fā)現(xiàn)是因?yàn)?kvm 遵循 opensbi 規(guī)范默認(rèn)設(shè)置 vcpu 休眠,導(dǎo)致調(diào)度到休眠的 vcpu 一直等待喚醒而呈現(xiàn)死鎖的狀態(tài)。

雖然解決 bug 很費(fèi)時(shí)間(一個(gè)多月),并且不知道 bug 是什么原因的時(shí)候很抓狂,但是我始終相信問題的產(chǎn)生是有原因的,找出產(chǎn)生問題的真正原因然后解決他就行。 這些攔路虎 bug 被我干掉之后,我的比賽也有了不少信心。

四、 決賽階段:臨門一腳與答辯技巧

----------

比賽決賽階段是整個(gè)比賽過程畫龍點(diǎn)睛的一個(gè)重要階段,核心是展示和檢驗(yàn)初賽階段的工作成果和對比賽項(xiàng)目的進(jìn)一步打磨~~(內(nèi)卷)~~。

在決賽代碼提交之前,丁丁老師建議我應(yīng)該跑一下項(xiàng)目自帶的單元測試。結(jié)果我第一次跑下來才不過 六成的通過率,修了兩三天也才不過八成,想著準(zhǔn)備放棄了。但是我想著不能爛尾,也許就差這臨門一腳了。幸運(yùn)的是,經(jīng)過排查找出了很多問題,在決賽代碼提交之前通過率去到了 97%。

丁丁老師在最終的線下答辯和 PPT 方面給了我很多重要的指導(dǎo):答辯抓住重點(diǎn),吸引評委老師,展現(xiàn)工作量并且講清技術(shù)難點(diǎn)的同時(shí),不過于深入技術(shù)細(xì)節(jié)和展示“創(chuàng)新點(diǎn)”。

線下答辯之后自我感覺還不錯(cuò),而且因?yàn)闇?zhǔn)備充分,老師的提問也基本接住了。我覺得這是我的比賽項(xiàng)目雖然在技術(shù)難度和創(chuàng)新上相對薄弱,但最終在比賽能夠獲獎(jiǎng)的重要原因之一吧。

五、 比賽之后

----------

比賽心得寫于比賽一年之后,我這一年經(jīng)歷了很多問題和挑戰(zhàn):被現(xiàn)實(shí)毒打的秋招,繁瑣的畢業(yè)設(shè)計(jì)和當(dāng)下工作的挑戰(zhàn)等等。

但是我相信這些問題和挑戰(zhàn)總會(huì)有解決的辦法,就像那次比賽一樣。

我想,這可能是比賽給我?guī)淼淖畲蟮氖斋@吧。


相關(guān)課程

掃一掃二維碼,快速加入本課程!

放大二維碼 查看使用方法
關(guān)閉