20135132陳雨鑫 + 原創做品轉載請註明出處 + 《Linux內核分析》MOOC課程http://mooc.study.163.com/course/USTC-1000029000 」html
第一週http://www.cnblogs.com/20135132yoggie/p/5220003.htmllinux
第二週http://www.cnblogs.com/20135132yoggie/p/5240418.html程序員
第三週http://www.cnblogs.com/20135132yoggie/p/5251382.html數據結構
第四周http://www.cnblogs.com/20135132yoggie/p/5279906.html架構
第五週http://www.cnblogs.com/20135132yoggie/p/5312850.html函數
第六週http://www.cnblogs.com/20135132yoggie/p/5333026.html學習
第七週http://www.cnblogs.com/20135132yoggie/p/5363734.htmlspa
第八週http://www.cnblogs.com/20135132yoggie/p/5389083.html操作系統
1、計算機是如何工做的?調試
一、存儲程序計算機工做模型
1)馮諾依曼體系結構
2)存儲程序計算機工做模型
3)CPU識別什麼樣的指令?如何定義?
API:程序員與計算機的接口界面。
ABI:程序與CPU接口界面
二、X86彙編基礎
1) X86 CPU的寄存器
2)常見彙編指令
2、操做系統是如何工做的
一、函數調用堆棧
1)三個法寶 計算機是如何工做的?(總結)——三個法寶(存儲程序計算機、函數調用堆棧、中斷機制)
2)深刻理解函數調用堆棧
二、藉助Linux內核部分源代碼模擬存儲程序計算機工做模型及時鐘中斷
三、在mykernel基礎上構造一個簡單的操做系統內核
3、構造一個簡單的Linux系統MenuOS
一、linux內核源代碼簡介
三大法寶(存儲程序計算機、函數調用堆棧、中斷)和兩把寶劍(中斷上下文的切換:保存現場和恢復現場、進程上下文的切換)
1)在linux內核源碼裏面arch佔有的代碼量至關龐大。arch/x86目錄下的代碼是咱們重點關注的。
2)內核啓動相關的代碼基本都在init目錄下(main.c)。
start_kernel是初始化linux內核的起點。
start_kernel至關於c程序中的main函數
3)linux內核的核心代碼在kernel目錄中
二、構造一個簡單的linux系統
init是第一個用戶態進程,是1號進程。
三、跟蹤調試Linux內核的啓動過程
4、扒開系統調用的三層皮(上)
一、用戶態、內核態和中斷
庫函數將系統調用封裝起來。
1)什麼是用戶態和內核態
2)在linux內核代碼中區分用戶態和內核態
用cs(代碼段選擇寄存器)和eip(偏移量寄存器)進行區分。
3)中斷處理是從用戶態進入內核態的主要方式
二、系統調用概述
三、使用庫函數API和C代碼中嵌入彙編代碼觸發同一個系統調用
5、扒開系統調用的三層皮(下)
一、給menuOS增長time和time-asm
二、使用gdb跟蹤系統調用內核函數sys_time
三、系統調用在內核代碼中的工做機制和初始化
1) 系統調用在內核代碼中的工做機制和初始化
2) 簡化後便於理解的system_call僞代碼
3)簡單瀏覽system_call和iret之間的主要代碼
6、進程的描述和進程的建立
一、進程的描述
1)進程描述符task_struct數據結構(一)
操做系統的三大功能:進程管理(核心)、內存管理、文件系統。
二、進程的建立
7、可執行程序的裝載
一、預處理、編譯、連接和目標文件的格式
1)可執行程序是怎麼得來的
2)目標文件的格式ELF
3)靜態連接的ELF可執行文件和進程的地址空間
二、可執行程序、共享庫和動態加載
1)裝載可執行程序以前的工做
2)裝載時動態連接和運行時動態連接應用舉例
3)可執行程序的裝載
1.可執行程序的裝載相關關鍵問題分析
2.sys_execve的內部處理過程
3.使用gdb跟蹤sys_execve內核函數的處理過程
4.可執行程序的裝載與莊生夢蝶的故事
5.淺析動態連接的可執行程序的裝載
8、進程的切換和系統的通常執行過程
一、進程切換的關鍵代碼switch_to分析
1)進程進度與進程調度的時機分析
2)進程上下文切換相關代碼分析
二、Linux系統的通常執行過程
1)Linux系統的通常執行過程分析
2)Linux系統執行過程當中的幾個特殊狀況
3)內核與舞女
三、Linux系統架構和執行過程概覽
1)Linux操做系統架構概覽
2)最簡單也是最複雜的操做——執行ls操做
3)從CPU和內存的角度看Linux系統的執行
總結
linux內核分析的網課轉眼就結束了,這幾個月來,仍是收穫頗豐,至少如今對一些操做仍是有些瞭解,在實驗過程當中,雖然碰到了許多問題,但仍是一個一個的解決了,使用gdb調試,設斷點等等一系列操做。瞭解了計算機是怎麼工做的,什麼是操做系統,操做系統是如何工做的,瞭解系統調用的過程,以及進程的描述和建立,可執行程序的裝載,進程的建立等等。須要在從此的學習中,經過不斷練習加深理解。