# 2025q1 Homework5 (assessment)
contributed by < `Max042004` >
## 前六週學習回顧
在與老師一對一討論後,我明白我不該急,應該把基礎概念學習清楚,把教材好好看完。
- [ ] [重新閱讀浮點數](https://hackmd.io/@Max042004/B1Ni0dNblg)
- [ ] [閱讀每位程式開發者都該有的記憶體知識](https://hackmd.io/@Max042004/rJUvQj6Wle)
- [ ] [一對一討論後續紀錄](/DFq4K1SCQmuHcZ21RAW57g)
- [ ] 閱讀並行程式設計
- [ ] CSAPP 讀到第二章
## 問題紀錄
### Q1
之前在回答 [5/27 課堂問答](https://hackmd.io/L8NQsV0SRwmbKyXSayizWw?stext=14616%3A9%3A0%3A1749832619%3AQRZnIG&both=) 的問題時閱讀了 task_struct,發現 task_struct 內有一個 field 是 pid_t:
```c
pid_t pid;
pid_t tgid;
```
我原本以為這個 pid 就是所謂的每一個 task 獨一無二的 pid,但後來發現 task_struct 內還有另一個結構體為 pid:
```c
struct upid {
int nr;
struct pid_namespace *ns;
};
struct pid
{
refcount_t count;
unsigned int level;
spinlock_t lock;
struct dentry *stashed;
u64 ino;
struct rb_node pidfs_node;
/* lists of tasks that use this pid */
struct hlist_head tasks[PIDTYPE_MAX];
struct hlist_head inodes;
/* wait queue for pidfd notifications */
wait_queue_head_t wait_pidfd;
struct rcu_head rcu;
struct upid numbers[];
};
```
### Q2

記憶體映射的階層架構
### Q3
在 [案例探討: Ring buffer](/JO-6VfkLRfWqAC9RaAYj8g),此 ring buffer 寫入的初始條件判斷的邏輯是否錯誤:
```c
bool put(queue_t *q, uint8_t *data, size_t size)
{
if (q->tail - q->head > size)
return false;
for (size_t i = 0; i < size; i++)
q->buffer[(q->tail + i) % q->size] = data[i];
q->tail = (q->tail + size) % q->size;
return true;
}
```
```c
if (q->tail - q->head > size)
return false;
```
此條件判斷的含義為:若已寫入的資料量大於將要寫入的資料量,就回傳否。
但應該要判斷的是:若剩餘空間小於將要寫入的資料量,才回傳否。
## 因為自動飲料機而延畢的那一年
我很佩服作者,如果我是作者,我肯定在挫折的時候日日夜夜地拷問自己,我做這件事的意義是什麼,他對我未來幫助是什麼,若看起來投入與回報不成比例,這麼痛苦我為什麼要做。
後來來到成大資工時,因此我在面對學業總想著要快速提升,也因此大一期間,喜歡把時間花在學習程式設計,我自認為程式設計相對來說更重要,但對於基礎的數學與物理我便不願意花時間,考試成績總是在及格線徘徊,這學期連普通物理學和微積分二都索性退選。
在看到這句:「你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已」。讓我反思,把程式視為更值得花時間,而捨棄物理和數學,是不是其實是一種逃避。我自從國中二年級碰到理化中的物理,就開始逃避學習物理,高一繼續逃避,高三也逃避,到了大一普物雖然通過,但概念也似懂非懂,以至於我現在要計算基本的普通物理題目都成了問題。
對我來說,學習物理和數學是比學習程式更加困難,而上了這堂課以後,我才知道數學的重要性完全不亞於程式,我猜這也是大學教育堅持要教授大量數學的原因,但之前我以我狹隘的認知,便斷定學習程式比數學和物理重要,因此拋棄數學與物理不讀,現在反思便覺得我真的在逃避困難。
然後在學習程式也一樣,雖然花時間較多,但始終沒有把一個概念好好掌握,只是這邊懂一點,那邊懂一點,但樣樣不精通。因此之前跟老師一對一討論時,讓我深刻意識到不能在用過去的方式學習,必須學會把一件事做好,以 T 字型的方法培養自己的能力。
時刻誠實面對自己。