posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          相冊

          搜索

          •  

          積分與排名

          • 積分 - 337537
          • 排名 - 167

          最新評論

          zz 整理的內核學習計劃

          Posted on 2007-09-24 11:22 ZelluX 閱讀(654) 評論(0)  編輯  收藏 所屬分類: Linux
          開始看lkd,不過最新可以抽出來的時間不多,下星期Java課還有project,還要寫一份robocode的項目文檔,然后編譯課也得跟上,英語高口課還得準備資料。。。先轉一篇學習計劃過來


          發信人: ccedcced (turing), 信區: KernelTech
          標  題: 整理的內核學習計劃
          發信站: 水木社區 (Fri Jan  6 18:15:35 2006), 轉信

          內核學習現在開始
          方法就是:
          讀書(lkd)+源代碼閱讀-->項目

          先從基礎做起!
          希望大家都能積極地參與討論,寫讀書筆記和源碼閱讀筆記!
          ------------------------------
          內核學習第一周計劃--Are you ready?

          時間:11月2號--11月5日
          閱讀內容:前言和第一章
          導讀:這是比較容易閱讀的開頭部分,內容比較少而且常識性的內容比較多。請在閱讀的過程中考慮如下的問題:

          1.linux和unix相比有哪些特點?
          2.內核編程和用戶空間編程相比有哪些不同之處?
          3.自己編譯一下內核,你編譯成功了么?如果不成功,有什么問題?使用你新編譯的內核,
            能順利啟動么?有什么問題?
          4.linux內核源代碼樹中你能找到sg設備驅動是在那個文件中實現的么?sg是什么含意?
            清楚地了解一下內核中源代碼樹的結構。
          Are you ready?
          ------------------------------
          內核學習第二周計劃
          時間:11.7-11.13
          內容:
           主要是lkd中文版第一版第二章(英文第二版版第三章)的內容,比較重要。

           1.和進程管理相關的內核文件都有哪些?找出來大致瀏覽一下.
           2.什么是進程和線程?在Linux中有什么獨特的地方?
           3.什么是進程描述符?怎樣得到當前進程的進程描述符?進程的內核棧有多大?
           4.進程的狀態都有哪些?在什么情況下發生轉化?
           5.Linux中所有進程之間的關系是怎么樣的?
           6.用戶線程和內核線程的區別和聯系?
           7.Linux是怎樣創建進程和線程的?
           8.Linux怎樣終結進程?
           9.對照相應的內核源代碼文件,分析一下問題3、5、6、7。
          ------------------------------
          內核學習第三、四周計劃
          內核學習第三、四周計劃:

          時間:11.14-11.27

          調度是操作系統中非常重要的部分,也是最核心的東西。通過學習這一章,希望大家都能大致掌握Linux的調度策略,以及為什么要這么做,Linux相比其它的系統有什么優點。重點多分析源代碼中的算法實現!!我希望我能有時間和大家一起分析代碼,也希望大家積極主動地分析一些代碼片斷。

          學習內容:
          1.進程調度最基本的原理是什么?
          2.列舉出幾個I/O消耗性和處理器消耗型的進程。
          3.Linux都采用了哪些調度的算法?詳細解釋一下這些算法。
          4.進程什么時間進入運行態?什么時間進入休眠(阻塞)狀態?
          5.了解進程搶占的算法;
          6.討論一下Linux進程調度的實時性怎么樣,還有哪些需要提高的地方?
          7.自己查找進程調度的相關文件,分析為題3-6。
          ------------------------------
           內核學習第五周計劃
          時間:11.28--12.5

          1、什么是系統調用?

          2、為什么需要系統調用?

          3、實現系統調用相關的代碼有哪些,找出來瀏覽一下

          4、詳細閱讀getuid()這一下系統調用的實現代碼

          5、如何導出sys_call_table,有幾種方法,注意不同內核版本的區別

          6、嘗試自己給kernel添加一個簡單的系統調用
             功能要求:調用這個系統調用,使用戶的uid等于0。(這個題目取自《邊干邊學》)
          7、采用添加系統調用的方式實現一個新功能的利弊有哪些,替代方法是什么?
          ------------------------------
          內核學習第六周計劃

          這一周就總結了一下中斷和下半部相關的知識點,供大家參考一下!同時附件里有我以前學習時候的筆記,寫的不好請多多指教。
          內核學習第六周計劃:
          1、如何理解中斷、中斷上下文和進程上下文的區別、為何中斷不能睡眠
          2、關于x86中選擇子、描述符和各種門的理解
          3、查閱相關資料和內核源碼理解:
          中斷是如何發生以及硬件和內核是如何相應的,如何返回的
          x86上中斷發生時上下文(寄存器)如何保存以及中斷返回時上下文如何恢復的,系統的第一個任務是如何啟動的

          4、內核中安排下半部的理由
          5、軟中斷及其他的下半部策略適用于什么樣的任務和場合?
          6、下半部可以睡眠么?為什么?
          7、2.4和2.6內核中下半部包括哪些部分,為何2.6內核相比2.4內核會做這樣的改進
          8、閱讀內核中關于軟中斷、tasklet以及工作隊列的代碼、相關書籍和資料,總結如下兩個問題:
          軟中斷、tasklet以及工作隊列是如何初始化,注冊以及觸發的,使用了哪些關鍵的數據結構及內核變量?
          軟中斷、tasklet以及工作隊列都在什么場合下使用?
          ------------------------------
          內核學習第七周計劃
          內核學習第七周計劃:
          時間:12月13日--12月19日
          內容:內核同步的理論知識。
           
          問題:
          1.為什么要進行內核的同步?
          2.內核中怎么定義原子操作?
          3.競爭產生的條件與加鎖的順序?
          4.要保護的對象?
          5.死鎖產生的條件與解決辦法?
          6.你有什么比較好的方法來調試多線程的程序?
          7.據一個內核中產生競爭的例子。
          ------------------------------
          內核學習第八周計劃
          第八周:
          內容:
          上一周我們分析了內核中的同步,這一次我們要接觸的是內核中怎么進行同步和互斥。
            
          問題:
          1.原子操作的粒度問題;
          2.自旋鎖的設計及其應用場合,分析自旋鎖;
          3.信號量及其應用,信號量怎么使用?
          4.鎖的粒度以及其分類;
          5.內核可搶占性的實現及其與鎖的關系;
          6.smp中需要考慮哪些同步與互斥;
          ------------------------------  
          內核學習第九周計劃
          前面的話:
             內核學習已經進行了兩個月的時間,LKD這本書我們基本上已經進行了一半。希望大家在下面多用功。
          我們在這個計劃里面列出來的只是一些比較基本的問題,而且我們沒有給出問題的答案,但是只要你在下面
          用功了,我想答案就在這本書里和源代碼里面。

          本周內容:TIMERS AND TIME MANAGEMENT

          1.HZ和jiffies值的定義?
          2.內核中怎樣解決jiffies的回繞?為什么這樣可以解決jiffies回繞?
          3.時鐘中斷處理程序有哪些值得注意的地方?
          4.xtime_lock鎖和seqlock鎖?
          5.定時器的實現、使用和競爭條件?
          6.udelay()&mdelay()?
          ------------------------------  
           內核學習第十周計劃:
          內存管理
              學習內容
                  內存管理是比較龐大的一個部分,在lkd這本書中用了很少的篇幅,從這里面我們基本能看清楚 內存管理的概貌。《情景分析》一書關于內存管理的部分講得比較多,代碼分析比較透徹也比較深入。 但是相對的難度也比較大,建議先看看lkd這本書,然后再看《情景分析》一書的內存管理。
              
             問題:
                  1.內核中內存的分頁、分區;
                  2.內核中有哪些函數來獲得內存?內核中分配內存要注意什么?
                  3.為什么使用slab?slab對象的詳細分析。
                  4.內核棧上內存的靜態分配問題;
          51La
          主站蜘蛛池模板: 云和县| 西华县| 德阳市| 富锦市| 罗城| 定结县| 昌图县| 桃园县| 河源市| 汕头市| 延安市| 乃东县| 富民县| 什邡市| 株洲县| 兴安县| 栾川县| 朝阳市| 大港区| 谢通门县| 册亨县| 常熟市| 剑川县| 霍邱县| 碌曲县| 江永县| 成安县| 漳州市| 敦煌市| 鄂托克旗| 黎平县| 伊宁县| 辛集市| 拜泉县| 河南省| 常德市| 齐河县| 平南县| 双峰县| 神农架林区| 平泉县|