JimC

@HeatCrab

Joined on Nov 17, 2023

  • contributed by < HeatCrab > 第三周測驗一 解釋上方程式碼運作原理首先定義 mpi 的資料型別 mpi_t ,接著定義以下四個記憶體操作函式:mpi_init:初始化 mpi_t,將 data 設為 NULL,容量設為 0。 mpi_clear:釋放 data 的內存。 mpi_enlarge:擴展 data 數組到指定容量,並填充新分配的區域為 0。 mpi_compact:去除高位為 0 的冗餘空間,縮減容量並重新分配記憶體空間。 接下來是4個基本操作的函式:
     Like  Bookmark
  • contributed by < HeatCrab > CC: Urbaner3: Reply for Review on lumynous HeatCrab, 你直接要求他 lummynous5, rebase A 分支 到主分支,我看到你有做而且也希望他做。 他CI 測試還沒過,你的已經過了,我猜他有刻意保留,因為另外兩個分支好像可以測試,不過他本人比較清楚。 link 這個是我路過留言,我老是忘記小人的功能。 [name=Urbaner3] 其實 rebase 是老師要求的檢查項目之一,也可以方便其他開發者檢視 commit ,也就是開發紀錄,而不會受到上游分支的更新影響而混合在一起。另外,他其他兩個分支應該是用於 PR 的?我好像看到跟他推送到老師(upstream)有關係的樣子。 [name=Heatcarb] 開發環境
     Like  Bookmark
  • 在作業三的 Load Average 說明中提到 Linux 核心計算 load average 的公式是使用指數平滑運算(Exponential smoothing)推導而成的。指數平滑運算公式的公式定義如下:$$ S_t = \alpha \times X_t + (1 - \alpha) \times S_{t-1}, where \ 0 < α < 1 $$ 但是在作業說明中使用的是:$$ S_t = \alpha \times X_{t-1} + (1 - \alpha) \times S_{t-1}, where \ 0 < α < 1 $$ 可以發現兩者在定義實際值 $X$ 的時間點不同,兩個都可以使用,但若是要推導到 Linux 核心使用的公式的話,應該要使用 $X_t$ 而非 $X_{t-1}$ 。原因如下: Linux 核心在 include/linux/sched/loadavg.h 中使用的公式: newload = load * exp + active * (FIXED_1 - exp);
     Like  Bookmark
  • contributed by < HeatCrab > 第一周測驗一 解釋上方程式碼運作原理首先,我們先定義串列:​​​​​​​​typedef struct list_item { ​​​​​​​​ int value; ​​​​​​​​ struct list_item *next; ​​​​​​​​} list_item_t; ​​​​​​​​typedef struct { ​​​​​​​​ struct list_item *head;
     Like  Bookmark
  • contributed by < HeatCrab > shecc 執行人: nosba0957, vacantron 開發紀錄 專題解說影片 過程中的認知需要對編譯器的運作有一定的掌握,像是 Bootstrap 如何運作的 、 Makefile 如何撰寫、 ELF 是什麼等等。 前任作者的 PR 針對 shecc 增強功能與修復問題,包括:調整記憶體分配限制、支援除法與三元運算子等語法、實現 malloc 和 free、支援迴圈中的 break 和 continue、新增全域變數初始化、保留 main 函數返回值,以及優化邏輯非與位元運算等,使 shecc 更符合標準 C 編譯器要求,並通過測試驗證。 執行人使用 SSA 優化 shecc。
     Like  Bookmark