linux內核期中總結

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調試,設斷點等等一系列操做。瞭解了計算機是怎麼工做的,什麼是操做系統,操做系統是如何工做的,瞭解系統調用的過程,以及進程的描述和建立,可執行程序的裝載,進程的建立等等。須要在從此的學習中,經過不斷練習加深理解。

相關文章
相關標籤/搜索