麻豆精品无码av,欧美1区2区,久久中文字幕乱码人妻,亚洲欧美另类少妇精品,在线看黄射,69pao高清,九九九久久久国产精品,子操大逼1234区,九九爱99热精品

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

    Creator

    李丁丁
  • 活躍度

    Activeness

  • 訪問量

    Visits

    107518

教學(xué)公告

2022級周晟OS國賽心得
[作者: 李丁丁  發(fā)布時間:2025-09-05 14:32:41  瀏覽次數(shù):898次]


我的國賽OS比賽經(jīng)驗分享:從選題到?jīng)Q賽

----------

一、選題

我認為一個科班出身的程序員,最重要的能力就是 “知道自己不知道”,換言之就是能夠清晰地評價的自己的技術(shù)儲備和代碼水平。在選題前,需要根據(jù)自己以及隊友的能力選擇一條合適的賽道。

內(nèi)核賽道的優(yōu)勢是參賽隊伍較少,但對應(yīng)的難度較高,且賽題難度是逐年遞增的(25屆的初賽已經(jīng)出現(xiàn)了24屆的決賽賽題)。內(nèi)核賽道的基本比賽形式是選擇一個 base OS,在這個基礎(chǔ)上逐漸添加功能,通過賽題給出的測例即可。這個過程不是一蹴而就的,而是需要選擇并學(xué)習(xí)一個合適的OS項目,充分理解項目之后再進行工作。

一開始,我選擇的是內(nèi)核賽道,我以 rcore-osrisc-v 版本為基礎(chǔ)開始了大約3個月左右的學(xué)習(xí)。但是在4月份左右我意識到,以我當(dāng)前的進度和人手儲備可能不足以完成內(nèi)核賽道的開發(fā)任務(wù)。幸好我及時和李老師溝通,最終決定換成了 功能賽道

但學(xué)習(xí) rcore-os 的過程并沒有白費,我在這個過程中完整學(xué)習(xí)了 Rust 語言如何進行系統(tǒng)級開發(fā),包括 no-std 的配置,一些基礎(chǔ)的宏(比如 println)的手工實現(xiàn)乃至 bootloader 的原理,這為我后續(xù)在功能賽道的開發(fā)節(jié)省了大量時間。

與內(nèi)核賽道的統(tǒng)一標準不同,功能賽道由各種各樣的單一賽題組成,選手只需要選擇一個賽題完成即可,其中也包括像“xv6教學(xué)課程”這種技術(shù)含量較低的賽題。因此參與人數(shù)比內(nèi)核賽道更多,25屆初賽有400多支隊伍報名功能賽道。

雖然功能賽道賽題多樣,但我還是希望能找到內(nèi)核相關(guān)的賽題。也巧,proj-278 就是一個對我胃口的題目:開發(fā)一個基于 x86-64 架構(gòu)的 Rust 內(nèi)核。結(jié)合我的技術(shù)儲備,我在聯(lián)系了賽題老師(這點很重要,一定要先聯(lián)系老師確定標準)后選擇了這個賽題。

----------

二、開發(fā)

我選擇了 blog_os 為基礎(chǔ)進行開發(fā),這是一個非常經(jīng)典的OS內(nèi)核項目,同樣是基于 x86-64 架構(gòu)。這個項目其實已經(jīng)實現(xiàn)了很多賽題278的要求:內(nèi)存管理、中斷處理等等,但整體過于簡單了,而且很多技術(shù)已經(jīng)過時:比如VGA顯示以及PIC8259實現(xiàn)外部中斷。

在初賽階段,我的工作主要是:

  1. 實現(xiàn)了以 PIC8259 為基礎(chǔ)的鼠標中斷。

  2. 修改了內(nèi)存管理的部分,增加了一個 池化分配 的策略:在內(nèi)核初始化時,提取分配一部分物理內(nèi)存到一個內(nèi)存池,分配時直接從池子取而無需調(diào)用內(nèi)存分配。

  3. 增加任務(wù)模塊,基于定時器中斷實現(xiàn)一個簡單的 時間片輪轉(zhuǎn)調(diào)度 的任務(wù)模塊。

  4. 將VGA文字模式升級為 VGA圖形模式,重構(gòu) printprintln 等輸出宏。

  5. 在第4點的基礎(chǔ)上,實現(xiàn)了一個 簡單的圖形界面,包括一系列圖形繪制函數(shù)、窗口管理器以及事件管理器,通過事件循環(huán)模型不斷捕獲鼠標、鍵盤中斷觸發(fā)的對應(yīng)事件做出行為。

我的項目叫 Rix-os,起這個名字一是致敬我第三喜歡的 Linux 發(fā)行版 NixOs,二是簡短好記。新生的 Rix-os 非常簡陋,一堆過時的 crate,沒有文件系統(tǒng),系統(tǒng)調(diào)用只實現(xiàn)了基本的 sys_exit 之類的,甚至有1/3左右的代碼來自別人。但幸好它幫我通過了初賽,總分36分取得了31分的成績。

進入決賽后,我開始思考 “能讓我的項目和其他隊伍的項目區(qū)分開的東西是什么?”

最終我把重點放在了 圖形界面的優(yōu)化 上,出于以下考慮:

  1. 相較于其他模塊,圖形界面的優(yōu)化更容易 直觀對比 出來(主要是VGA圖形模式只有324*200的顯示率,過于模糊了)。

  2. 中斷、內(nèi)存這些模塊,一直都是OS方向的主題,功能賽道甚至有不少專門針對這方面的賽題,如果重點更新這里,可能會失去賽題本身的優(yōu)勢。

因此,我選擇了以更新圖形界面為主。更新圖形界面是個牽一發(fā)而動全身的工程,我的具體升級路線大概是:

更新 bootloader,升級為用 UEFI 引導(dǎo)啟動磁盤鏡像 → 更新內(nèi)存管理等模塊,使用新的 bootloader_api → 更新輸出方式,使用線性幀緩沖來作為輸出。

順便把中斷系統(tǒng)也更新為現(xiàn)代化的 APIC 實現(xiàn),拋棄了老舊的 8259pic 芯片。

----------

一些感想與祝福

復(fù)盤進入決賽后的開發(fā),其實我個人認為主要是開發(fā)時間不太夠,這點必須承認。因為決賽前的開發(fā)主要是在7-8月份,由于要準備考研,其實留給開發(fā)的時間并不多。

當(dāng)然也和我本人的心態(tài)有關(guān),因為我其實并沒有對決賽拿成績抱有特別大的期望,只要能夠去決賽的現(xiàn)場就已經(jīng)讓我非常滿足,后面拿到獎項屬于是意外之喜。

所以希望大家能夠想清楚 這個比賽對自己意味著什么?需要付出多少來對待? 這是我認為需要好好考慮的。

夏天是努力的季節(jié),希望大家在人生的每一個夏天都能做出對得起自己、對得起人生的決定,祝好!


相關(guān)課程

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

放大二維碼 查看使用方法
關(guān)閉
和静县| 南岸区| 洛阳市| 府谷县| 巧家县| 南京市| 鹰潭市| 皮山县| 龙南县| 兴国县| 崇信县| 华容县| 巴林左旗| 都兰县| 浙江省| 会泽县| 辽宁省| 阆中市| 时尚| 平江县| 锡林浩特市| 瑞安市| 东方市| 西青区| 林州市| 金平| 肥东县| 英山县| 顺义区| 凉城县| 株洲县| 扶绥县| 航空| 清徐县| 阜宁县| 宜昌市| 布拖县| 行唐县| 佛教| 萝北县| 杭锦后旗|