ZongHan

@zRlFO_buT66gBhkP4gN7vg

Joined on Oct 9, 2020

  • contributed by < han1018 > 前 4 週的測驗題選出 3 題改進 研讀第 1 到第 6 週「課程教材」 數值系統 電腦中僅管 2's complement 加法行成阿貝爾群概念(特性:單位以及反元素唯一),但僅是整數,浮點數在 IEEE 754 中無法被滿足,因為 INF、NaN 是例外狀況他們沒有對應的反元素。如:NaN + fx = NaN; (3.14 + 1e10) - 1e10 = 0.0 (單精度 fraction 為 2^24 - 1,1e10 - 3.14 差異 > 2^24 - 1 能表達的範圍)。 使用 bitwise 操作可以節省記憶體開銷外還可以加速。 大小寫互轉 ('A' | ' ') // 得到 'a'
     Like  Bookmark
  • contributed by < han1018 > 自我檢查清單 [x] 實體電腦安裝 GNU/Linux [x] 閱讀〈Linux 核心模組運作原理〉並對照 Linux 核心原始程式碼 (v6.1+),解釋 insmod 後,Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 (使用 List API)、MODULE_LICENSE 巨集指定的授權條款又對核心有什麼影響 (GPL 與否對於可用的符號列表有關),以及藉由 strace 追蹤 Linux 核心的掛載,涉及哪些系統呼叫和子系統? Linux 核心模組的符號 (symbol) 如何被 Linux 核心找到 ?當使用 gcc 編譯後,根據巨集定義,系統將會在初始化模組時調用 init_module,並將我們指定的 module_init 函式插入其中。為了讓系統在調用 init_module 時直接調用我們自定義的函式,我們可以使用一些技巧。init_module 是一個系統呼叫,它將 ELF image 載入至核心空間。在系統上,當系統呼叫 finit_module 後會呼叫 load_module,load_module 會為載入的模組配置記憶體並進行初始化。這個模組的初始化函式即為核心模組的 init_function,也就是我們自定義的函式。 MODULE_LICENSE 巨集指定的授權條款又對核心有什麼影響?參照 include/linux/module.h 說明,授權 licence 為免費使用的有 GPL、GPL v2、GPL and additional rights、Dual BSD/GPL、Dual MIT/GPL、GPL、Dual MPL/GPL。非免費使用的有 Proprietary。 需要對 module 定義一個 licence 否則系統會出現以下警告: loading out-of-tree module taints kernel. module license 'unspecified' taints kernel. strace 追蹤 Linux 核心的掛載,涉及哪些系統呼叫和子系統? 使用 strace 追從 insmod fibdrv.ko 後發現其依序使用以下系統呼叫:execv : 指定要執行的新程式
     Like  Bookmark
  • contributed by <han1018>
     Like  Bookmark
  • contributed by < han1018 > Reviewed by HenryChaing 可以在 list_sort.c 效能比較中,新增比較次數以及快取記憶體頁面失誤的測試項目。 其餘的 review 在底下有留言 開發環境 $ gcc --version gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
     Like  Bookmark
  • contributed by < han1018 > 2024q1 第 1 週測驗題 測驗一 測驗一用於實作非遞迴版本的 quick sort。 node_t *begin[max_level], *end[max_level]; node_t *result = NULL, *left = NULL, *right = NULL; begin[] 和 end[] 是堆疊,用來存儲比較的範圍。left 和 right 是用來存儲分割範圍後的左右子節點。
     Like  Bookmark