麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 操作系統 > 正文

讀核日記(四)

2024-07-26 00:31:37
字體:
來源:轉載
供稿:網友

這幾天身體不太好,進展不快.有時候突然發現在拼命的讀代碼的間隙里,停一會想一想,收獲會更大.特別是對于這種非常龐大的系統來說.把握整體的意義尤其重要.隨著對linux整體的拆解,我對于整個系統,已經不想開始是那么模糊.好像已經度過了那個極點.不過我也應做好準備,因為一但我對整個細節解讀時,肯定也會有同樣的經歷.

整個linux內核之所以這樣艱澀,難懂就在于它的整體性.想我們這樣很少寫萬行以上程序的人來說,它就好像一個龐大的肉球.讓你不知道如何下嘴.不過一但咬破.就非常香美了.畢竟,讀這么優秀的代碼也是一種享受.

我個人認為linux 的內核難在這幾點:1,系統龐大,太多的變量,結構, 以及typedef定義的東西不容易找到.2,作為操作系統,它的函數調用時動態的,讀不懂大量的makefile 你根本就不知道這50 M的東西是怎么組織起來的,況且,你絕對不可以像跟蹤程序一樣用debug走一下.3, 龐大的數據結構,可能是比較簡單的運算變得不容易讀.

因此在讀核的初級階段.我們應該善于想象,善于將不容易理解的部分用偽碼的理解方式走過,當我們對大局把握好了,將整個結構拆解清楚了,在讀不遲.況且,雖內核本身來說,它所涉及到的運算,結構. 本質上和課本上的沒有差別.(可惜我不是計算機系畢業的).只不過是內容多了一些罷了.

比如說進程調度這一部分,說白了,就是在調用fork()的時候,就產生一task_strut 類型的指針,它包含進程調度所用到的一切信息.然后將這個指針插到隊列中去就行了,然后cpu 一次總隊類中取出指針,分配給他們時間片.

而這個指針如何插入呢?說白了就是看它的weight,weight 的計算方法,有根據進程類型的不同由不同的算法(實時進程,內核進程,普通進程).好了,這樣我們想一下<<數據結構中>>關于隊列的操作,插入,刪除,插到隊頭,置于隊尾.再想一下,這些操作如何同操作系統的應用結合在一塊.例如;好隊進程正在運行,突然,由于一硬件中斷.產生一進程,它必須馬上處理.系統應把它插入到隊頭.

好了.你可以讀一下/usr./src/linux/kenrel/sched.c,不要過那么多全局變量,現在數據結構上走過去,如下面的代碼:

 

static inline void move_last_runqueue(struct task_struct * p)

{

struct task_struct *next = p->next_run;

struct task_struct *PRev = p->prev_run;

 

/* remove from list */

next->prev_run = prev;

prev->next_run = next;

/* add back to list */

p->next_run = &init_task;

prev = init_task.prev_run;

init_task.prev_run = p;

p->prev_run = prev;

prev->next_run = p;

}

 

static inline void move_first_runqueue(struct task_struct * p)

{

struct task_struct *next = p->next_run;

struct task_struct *prev = p->prev_run;

 

/* remove from list */

next->prev_run = prev;

prev->next_run = next;

/* add back to list */

p->prev_run = &init_task;

next = init_task.next_run;

init_task.next_run = p;

p->next_run = next;

next->prev_run = p;

}

如果你還不懂,你可能要先,在c語言和數據結構上下一點功夫.其他的模塊,我想也是大同小異, 不過,也修補會這么簡單.如內存管理中用到了好多平衡二叉樹的排序,遍歷等等.但總的結構時不變的.只要可以通欄全局,在不開定義的情況下,可以讀懂全局變量的意思(其實,猜個八九不成問題),看懂是不成問題的.起碼我是信心十足.

我應該在熟悉一下,計算機專業的軟件基礎課!!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃91麻豆 | 国产一区二区三区在线视频 | 99精品视频久久精品视频 | 久久精品视频国产 | 亚洲视频在线观看免费 | 欧美高清一级片 | 看免费一级毛片 | av不卡毛片 | 精品欧美一区二区精品久久 | 久久中文一区 | 一级免费a | 香蕉在线看 | 国产午夜亚洲精品 | 毛片免费视频播放 | 在线免费观看日韩视频 | 91美女啪啪 | 欧美日韩1区2区3区 黄片毛片一级 | 欧美日韩大片在线观看 | 三级国产三级在线 | 黄色高清免费 | av视屏| 国产一级二级在线播放 | 日日草夜夜 | 亚洲成人在线免费 | 草久影视 | 欧美h版在线观看 | 国产精品成人一区二区三区电影毛片 | 亚洲视屏| 黄色特级一级片 | 久久精品国产99久久久古代 | 久久影院在线观看 | 久久久久久久久久综合 | 日韩黄色一级视频 | 成人一级毛片 | 涩涩屋av| 外国一级黄色片 | 精品一区二区三区在线视频 | 国产精品视频自拍 | 成人资源在线观看 | 鲁人人人鲁人人鲁精品 | 青草视频在线观看视频 |