Try   HackMD

2025q1 Homework5 (assessment)

contributed by < Max042004 >

前六週學習回顧

在與老師一對一討論後,我明白我不該急,應該把基礎概念學習清楚,把教材好好看完。

問題紀錄

Q1

之前在回答 5/27 課堂問答 的問題時閱讀了 task_struct,發現 task_struct 內有一個 field 是 pid_t:

pid_t				pid;
pid_t				tgid;

我原本以為這個 pid 就是所謂的每一個 task 獨一無二的 pid,但後來發現 task_struct 內還有另一個結構體為 pid:

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

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

記憶體映射的階層架構

Q3

案例探討: Ring buffer,此 ring buffer 寫入的初始條件判斷的邏輯是否錯誤:

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;
}
if (q->tail - q->head > size)
        return false;

此條件判斷的含義為:若已寫入的資料量大於將要寫入的資料量,就回傳否。
但應該要判斷的是:若剩餘空間小於將要寫入的資料量,才回傳否。

因為自動飲料機而延畢的那一年

我很佩服作者,如果我是作者,我肯定在挫折的時候日日夜夜地拷問自己,我做這件事的意義是什麼,他對我未來幫助是什麼,若看起來投入與回報不成比例,這麼痛苦我為什麼要做。我之前念過獸醫系幾個月期間,就是經歷懷疑自己的挫折,不理解自己為什麼要待在獸醫系,沒過多久我就選擇休學。
後來來到成大資工時,已經比同學大了兩歲,因此我在面對學業總想著要追上同齡人,想著要快速提升,也因此大一期間,喜歡把時間花在學習程式設計,我自認為程式設計相對來說更重要,但對於基礎的數學與物理我便不願意花時間,考試成績總是在及格線徘徊,這學期連普通物理學和微積分二都索性退選。
在看到這句:「你不能現在就放棄,要是現在就放棄的話,你這輩子日後遇到這種等級的困難,就只會想逃避而已」。讓我反思,把程式視為更值得花時間,而捨棄物理和數學,是不是其實是一種逃避。我自從國中二年級碰到理化中的物理,就開始逃避學習物理,高一繼續逃避,高三也逃避,到了大一普物雖然通過,但概念也似懂非懂,以至於我現在要計算基本的普通物理題目都成了問題。
對我來說,學習物理和數學是比學習程式更加困難,而上了這堂課以後,我才知道數學的重要性完全不亞於程式,我猜這也是大學教育堅持要教授大量數學的原因,但之前我以我狹隘的認知,便斷定學習程式比數學和物理重要,因此拋棄數學與物理不讀,現在反思便覺得我真的在逃避困難。
然後在學習程式也一樣,雖然花時間較多,但始終沒有把一個概念好好掌握,只是這邊懂一點,那邊懂一點,但樣樣不精通。因此之前跟老師一對一討論時,讓我深刻意識到不能在用過去的方式學習,必須學會把一件事做好,以 T 字型的方法培養自己的能力。
時刻誠實面對自己。