shawn

@shawne

Joined on Feb 23, 2024

  • CH1 Basics of the Linux Kerne 1.3.1 Processes and threads 對於每個 process 而言其皆為獨立的,彼此之間不能存取彼此的資料,對於 thread 而言可以執行同一個任務並共享資料,在 linux 核心中不特別區分 process 以及 thread,其中最小的排程單位為一個 thread 而每一個 thread 都有一個獨特的 pid 屬於相同 process 的 thread 會有一個 TGID,若只有一個 thread 的情況下其 PID 以及 TGID 相等,而在 multithread 之下每個 thread 有不同的 pid 但是共享同一個 TGID thread 跟 process 真正的區別在於 thread 共享相同的記憶體位址,使用共享記憶體並行處理並進行溝通 在 process 之間進行切換需要藉由排程器進行 context switch 過程為 cpu 停止 process 的執行,切換到排程器的運行,由排程器紀錄 process 目前執行到的位置,並喚醒其他 process,而對於不同 process 的 thread 切換必須要進行 TLB 內容切換所以是一個龐大的消耗
     Like  Bookmark
  • contributed by < ShawnXuanc > 閱讀〈因為自動飲料機而延畢的那一年〉的啟發 :::spoiler 筆記 (7) 因為硬體的問題所以很多事情都要藉由實驗才能發現,不管是液體跟氣體之間的關係或是接頭因使用時間而漏氣,以及冰塊大鐵盒冰塊卡住 (8) 硬體的問題要等較長的時間,而電腦會告訴你哪裡出錯 (9) 冰塊掉落問題 (10) 彈簧問題,成本超高,拉開困難度極高 (11) 缺乏設備導致無法發揮、機構知識,導致成效不佳,最後因為冰塊問題爆氣 (12) 與夥伴的期望不同,真實世界熱血無用
     Like  Bookmark
  • contributed by < ShawnXuanc > Reviewed by SimonLee0316 你的洞見呢? Reviewed by SHChang-Anderson new_element 實作中提到可以使程式碼更加簡潔,請提出改進的規劃。 檢視 commit 連結是否貼錯,q_swap, q_ascend, q_descend commit 連結點入皆為 q_merge 的實作。 嘗試使用 List API 如 : list_move_tail 或 list_move 透過不同順序移動節點達成 q_swap 實作。
     Like  Bookmark
  • contributed by <ShawnXuanc> 自我檢查 MODULE_LICENSE 條款包含 GPL, GPL v2, GPL and additional rights, Dual BSD/GPL, Dual MIT/GPL, Dual MPL/GPL, Proprietary 七種不同的類型 GPL 為自由軟體許可協議條款其特點包含,可以自由使用、自由修改、共享衍生產品 前面兩者為 GNU 授權許可第一版以及第二版,而第三個為 GPL 加上額外的條款,後面有加上 Dual 代表兩種授權方式,最後的 Proprietary 代表非自由即專有軟體,由原作者保留所有著作權利
     Like  Bookmark
  • contributed by <ShawnXuanc> 第三周測驗 測驗 1 版本一 使用 log 的方式來取得當前數 2 的次方數,即可知道 msb 為第幾個位元 版本二 以右移的方式來減少 log 的運算量
     Like  Bookmark
  • contributed by <ShawnXuanc> 第一週測驗 測驗1 運作原理 測驗 1 的程式碼內容,實作一個非遞迴的快速排序,排序的對象為鏈結串列,使用 node_t 的指標陣列來模擬 stack 的部分 int max_level = 2 * n; ... node_t *begin[max_level], *end[max_level];
     Like  Bookmark