Andrew Chang

@andrewchang

Joined on Jan 9, 2023

  • contributed by < Andrushika > 因為自動飲料機而延畢的那一年 - 閱讀心得 以下採取佳句節錄以及自我反思的紀錄方式: 我開始透過朋友詢問,試圖在整個交大中尋找懂機械設計和製造,而且對自動飲料機有興趣的同學。然後我發現一個原本以為只有在資工系發生的現象,那就是「資工系的學生不會寫程式,機械系的學生不會做機械」 看了除了資工系的學生不會寫程式,機械系的學生不會做機械,現在又多一條電工系的學生不會焊電路,這世界到底怎麼了啊。 看到這段的時候深有同感,為何大學上完四年,那麼多學生還會對職場感到這麼焦慮?老師也曾說過,若大學教育足夠完備,那企業 HR 應該會排在學校門口等學生下課、搶人才對,但這件事沒有發生,有什麼是需要改變的?
     Like  Bookmark
  • contributed by <Andrushika> RCU 同步機制及用法 借用教材中的一張圖片,來說明 RCU 的機制: image 圖片上方有一個 writer,下方有多個 reader。RCU 提供所謂的寬限期,每個 reader 要使用資源時,會進行 lock;當 writer 更新資料時,不會馬上把舊資料刪除,而是先將其保留,直到所有 reader lock 被釋放為止,這樣先前取用資料到一半的 reader 就不會受到影響。 而「寬限期」指的就是 writer update 到 reader 全部 unlock 的這段期間。這段期間內,不同的 reader 可能看到不同版本的資料;分界點取決於 reader 取用 lock 的時機點,如果 reader lock 在 writer update 之前,會取用到被保留下來的舊資料,反之則會取用到新資料。 linux 核心中的 RCU 函式 rcu_read_lock(), rcu_read_unlock():reader 使用,宣告 RCU 讀取的開始與結束。當還有 reader 持有 lock、writer 嘗試 update 時,進入寬限期。
     Like  Bookmark
  • contributed by <Andrushika> w3q1 本題使用 mpi_t 結構,作為包裝大數的基礎資料結構,結構定義如下: /* mpi: Multi-Precision Integers */ typedef struct { uint32_t *data; size_t capacity; } mpi_t[1];
     Like  Bookmark
  • contributed by <Andrushika> 在 user level 繪製棋盤 commit d203aed 在 xo-user.c 中加入以下程式碼: static int draw_board(const char *table) { printf("\n\n"); for (int i = 0; i < BOARD_SIZE; i++) {
     Like  Bookmark
  • contributed by <Andrushika> Week 1 Q1 本題要實作 list_insert_before 這個函式: image 如果只看函式說明,參數的用法還是有些難懂。所以往前找到了 list_t 和 list_item_t 的定義: typedef struct list_item { int value;
     Like  Bookmark
  • contributed by < Andrushika > 開發環境 $ gcc --version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 $ lscpu 架構: x86_64 CPU 作業模式: 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by < Andrushika > 還政於民的 sched_ext 及機器學習如何幫助 CPU 排程 - vax-r SCX Scheduler extension and tools 可以讓使用者實作模擬 kernel thread 排程器、可以動態載入 透過 eBPF 載入運行在 linux kernel 中運行的小型程式 不修改 kernel 的狀況下從 user space 載入擴充功能 可以攔截、觀察、修改系統行為e.g. 丟棄封包、監控流量
     Like  Bookmark