分享到plurk 分享到twitter 分享到facebook

版本 75a3d56696971218379dc58d6175b64c2a7e9720

blueskyson (林政傑)

簡介

  • 成功大學 資訊工程系 111 級 (2018~2022)
  • github: blueskyson

2020 秋季班 自我評量

  1. 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章)

需要考慮 overflow 的狀況,例如在 int32 下 2147483647 - (-1) < 0 ,但是 2147483647 > -1

  1. 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎?

在第 40 頁中 p++ 實際上會被視為 (p++) ,也就是 *ptr++ 會回傳對 ptr 的取值,然後將 ptr 指向該型態的下個位址;而 ptr++ 則單純回傳 ptr 然後指向該型態的下個位址。

  1. 知道如何實作無失真資料壓縮嗎?你知道有哪些相關演算法?
  1. wiki: 產生輸入資料的統計模型,利用這個統計模型將較常出現的資料用較短的位元序列表示,較不常出現的資料用較長的位元序列表示
  2. Huffman coding, Run-Length coding, Golomb-Rice coding

作業

小考

期末專題

以 exp-golomb code 說明 clz ,並改進 x-compressor

2022 春季班 自我評量

作業/隨堂測驗

期末專題

探討從無到有打造 Linux 平台的高效能網頁伺服器,涵蓋是否該將伺服器實作於 Linux 核心內部、並行處理、I/O 模型、epoll、Reactor pattern,和 Web 伺服器在事件驅動架構的考量。

自我評量 (1 ~ 10)

我給自己 6 分。

在學期初做 lab0 實作 linked list 的 merge sort 過程中,學習到了查閱原始材料的重要性,其可以避免繞許多彎路,也不會被其他人的穿鑿附會所誤導,再來 trace code 時也要避免舉燭,而要參照 commit message 理解目標程式碼的目的,並搭配實驗去執行。在設計演算法的同時最好也針對硬體特性來優化,例如 linux 的 list_sort 為了減少 cache thrashing,引進了 2:1 balanced merge。前述這些經驗都幫助我在未來設計軟體時考慮到更多議題。

在學期中做 fibdrv 時,學習了 kernel module 的特性和相關議題,例如 kernel space 到 user space 資料複製的成本、讓記憶體配置能夠 deterministic、in-place,比較 Karatsuba 和 Schönhage–Strassen 乘法的差異。在 ktcp 的作業追蹤了 kernel module 載入的過程。

很可惜學期末一個月,因為個人能力不足,將大部分時間分配給另外兩門課,所以期末專題進度缺乏。