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

版本 dcaeca6a7bfd1986b1845d37c9c48504aee5268f

nickchenchj (陳浩容)

個人簡介 Personal profile

學歷

  • 國立成功大學 機械工程學系 (2016-)
  • 國立成功大學 資訊工程學系 (2016-)

2021 Linux Internals 個人評量

作業及筆記

題目

  1. 知道如何寫出時間複雜度和空間複雜度皆為 O(1) 的 abs64 嗎?(沒有分支) 這樣的 abs64 又可用於真實世界哪邊?
#include <stdint.h>
int64_t abs64(int64_t x)
{
        /* The following code works for both arithmetic shift and logical shift.
         * y is -1 (all ones) if x is negative, and y is 0 if x is non-negative. */
        int64_t y = ~(((x >> 63) & 1) - 1);

        /* XORing with all ones (-1) inverts all the bits of (x + y), 
         * while XORing with all zeros (0) keeps the original value */
        return (x + y) ^ y;
}
  1. 知道 page fault 嗎?Segmentation fault 的訊息是如何顯示出來,請以 GNU/Linux 為例解說
  • page fault 可細分為 3 種,分別為 minor, major, 和 invalid。
    • minor: 當 process 嘗試存取資料,發現資料已在記憶體裡,但尚未分配給自己。
    • major: 當 process 嘗試存取資料,但資料不在記憶體裡。
    • invalid: 當 process 嘗試存取不在 virtual memory space 裡的資料時會觸發 invalid page fault。

學會的工具

Vim, find, grep, sed, awk, wc, du…

心得

自我評量分數 (1 到 10 級分)

2020 秋季班 個人評量

作業及筆記

Side projects

題目

  1. 知道 x - y < 0 敘述為何不能寫為 x < y 嗎? (CS:APP 第 2 章)
  • 如果 x = 1U, y = 2U,則 (x - y < 0) 永遠為 false (overflow),但 (x < y) 將會是 true。
  1. 知道 void (signal(int sig, void (handler)(int))) (int); 這樣的宣告該如何解讀嗎?
  1. 知道傅立葉分析在通訊領域的應用嗎?舉例說明
  • 可以應用於抗噪耳機,或是去除通話中的噪音。
  1. 知道 Bloom filter 嗎?以你寫過或用過的程式,舉例說明這機制帶來的好處
  • 知道,這學期有實做 key-value database,當中有運用到 Bloom filter。由於資料庫相當龐大,而且取得資料可能需要進行檔案存取,因此引進 Bloom filter 將能大幅降低在資料庫搜尋的時間。

學會的工具

Git, Perf, Valgrind, Markdown, Makefile, Bash script, gnuplot, etc.