版本 a2ff5ae959956d834ddfba71bca30124b35bc449
Changes from a2ff5ae959956d834ddfba71bca30124b35bc449 to 581159ae6c42da49cf3ab4209063c039003a8df2
---
title: ChingChieh(黃敬傑)
categories: User
...
黃敬傑
===
- 成功大學資訊工程學系108級
- Github: [https://github.com/ChingChieh](https://github.com/ChingChieh)
- gmail: garnett.huang@gmail.com
- 修課: 進階電腦系統理論與實作 (Fall 2018)
作業 Lab
===
- lab0:
- 重新複習 linked-list 實作,以及了解自動評分系統如何偵測 malloc 的記憶體空間是否有正確釋放
- [共筆](https://hackmd.io/s/HJv5mIct7#)
- [Github](https://github.com/ChingChieh/lab0-c)
- datalab:
- 學習利用 bitwise operation 代替 conditional branch 來完成各個 function 所需要的功能
- [共筆](https://hackmd.io/s/rJbZ6gXhQ#)
- [Github](https://github.com/ChingChieh/datalab)
- dict
- 探討 memory pool 和每當需要時才 malloc 那個發生 cache miss 機率較高,以及哪個執行速度較快
- 學習使用 perf 工具來分析程式效能
- 學習使用 linux 畫圖工具 gnuplot
- [共筆](https://hackmd.io/s/rJbZ6gXhQ#)
- 期中分組作業
- 了解 bit field 的 variable 不能對其取址
- 重新複習 big & little endian 差異以及 union 特性
- 學習使用 SIMD 來改寫 parity function
- [共筆](https://hackmd.io/VYD7-xDaS8ObS5-zdjlBxw)
- [影片](https://www.youtube.com/watch?v=_aaj9jgEswM&t=789s)
- 期末分組作業
- 複習多執行緒的程式以及 mutex ,測試有 mutex lock 的程式在多執行緒的情況下的正確性
- 了解 lockfree 在多執行緒的情況下如何實作
- 學習利用 valgrind 來 debug 多執行緒的程式
- [共筆](https://hackmd.io/SGK9Q1A1Rnep8XqKYy0rSg)
回顧
===
- 知道 x - y < 0 敘述為何不能寫為 x < y 嗎?
- 假設 x = 1, y = INT_MIN 那便不成立了
- 知道 C 語言規格書如何解釋 ptr++ 和 *ptr++ 行為的差異嗎?
- 規格書寫到 postfix increment 是對 operand 相加一個單位
- 而 ptr++ 則是對 ptr 的資料型態相加一個對應的 byte , *ptr++ 則是對 *ptr 的值相加一個對應的單位
- 知道通訊領域中如何應用 parity bit 嗎?
- 知道 void (*signal(int sig, void (*handler)(int))) (int); 這樣的宣告該如何解讀嗎?
- signal 這個 function 吃兩個參數,分別是一個 integer 和一個 handler 這個 function pointer 指向吃一個 integer 的參數且沒有回傳值的 function ,而這個 signal 會回傳一個 function pointer 指向吃一個 integer 的參數且沒有回傳值的 function
- 知道 Linux 核心 < include/linux/list.h> 裡頭 #define
list_for_each_prev(pos, head) for (pos = (head)->prev; pos != (head);
pos = pos->prev) 這樣的巨集到底在做什麼?以及 head 使用時需要加小括號,為何?
期末自評(1-10)
===
總合這學期所學,相比於還未修這門課的我來說我覺得我寫 c 方面有進步,也學到滿多好用的工具及技巧,更重要的是一些心態,所以我給自己 9 分