天天看點

linux核心注釋的讀書筆記

linux作業系統最核心的是:

1.檔案系統,記憶體管理系統 【檔案,記憶體】

2.軟硬體驅動【驅動】

3.作業控制,虛拟控制台,檔案符号連結,虛拟記憶體對換 【虛拟】 

4.網絡支援,高速緩沖,動态連結庫,x-windows 【網絡】

-----------------------------------

1.boot下面有三個彙程式設計式

(1)磁盤引導程式bootsect.s 【把核心從實體塊裝置加載到記憶體】

(2)擷取bios【Basic Input Output System】參數程式setup.s 【探測系統配置】

(3)32位運作期的代碼 head.s 【進入32位保護模式前初始化】

2.init/目錄下的main.c 【初始化系統,建立shell】

3.kenel/ 程序排程,系統調用相關程式

kenel/dev_blk/ 各種裝置驅動

kenel/math/數學相關程式

4. fs/檔案系統程式

5. mm/記憶體管理程式

6. include/各種頭檔案

7. lib/各種庫函數

8.tools/  核心連接配接工具

-----------------------------

作業系統結構

硬體-核心-服務-應用

------------------------

核心體系結構:

程序排程子產品,記憶體管理子產品,檔案系統子產品,程序間通信子產品,網絡接口子產品

linux核心注釋的讀書筆記

------------------------- 

任務資料結構。

【狀态,時間片,優先級,信号,退出碼,代碼段實體位址,長度,堆棧記憶體位址.

程序号,父程序号,會話号,使用者标記号,組,tty子裝置号,工作目錄

狀時優信代碼堆

進會用組裝置工】

os -

-

- -

-

--------------------------------

程序初始化

boot中的引導程式把核心加載到記憶體,然後執行init/main.c,程序号0

【kill 0,會怎麼樣。不到0的,估計kill 0應該沒啥事,kill應該無這個權限.

man kill 發現,實際是

 All processes in the current process group are signaled.

 殺死自己和同組的所有

PID 為零的 時候向與發送者同組的所有程序發送該信号】

程序1,shell

最大程序數量:64 都是從0,fork出來的

【之是以是找到的最長時間片的程序優先執行,是因為

使用的是時間片輪轉法進行配置設定,這樣時間片越長的說明是越新被加入任務的,沒被執行的機率最大,或者優先級高】

虛拟記憶體:程式記憶體可以比系統實際記憶體大得多。因為重複利用,就像火車開過後,把鐵軌不斷放到火車之前。

2.7 程序堆棧

(1)系統初始化堆棧(2)核心程式堆棧(3)任務核心态堆棧(4)任務使用者态堆棧

linux核心注釋的讀書筆記

----------------------------

linux核心代碼結構

linux

-boot【系統引導彙程式設計式】

-fs【檔案系統】

-include【頭檔案】

-asm【與cpu體系相關】

-linux【核心專用】

-sys【系統資料結構】

-init【核心初始化】

-kernel【程序排程,信号處理,系統調用】

-blk_drv【塊裝置驅動】

-chr_drv【字元裝置驅動】

-math【數學】

-lib【核心庫】

-mm【記憶體管理】

-tools【核心工具】

-----------------------------

頭檔案

【常數,字元類型,錯誤号,檔案控制頭,信号頭,時間,輸入輸出】

asm

【io,記憶體拷貝,段操作,系統】

linux

【核心配置,軟驅,檔案,硬碟,排程,調用】

sys

【檔案狀态,類型,名稱結構,等待調用】

-----------------------------

boot【引導啟動】

bootsect.s【磁盤引導,将setup.s從磁盤加載到記憶體】

setup.s【讀取系統資料,光标位置,顯示記憶體,顯示狀态,硬碟參數等】

head.s 【進入核心保護模式,去運作main()函數】

init【初始化程式】

【載入記憶體,讀參數,運作main,

之後,每10秒發出一次時鐘中斷,檢查所有程序的目前執行情況,

來确定程序的下一步狀态。

實際上很像win32程式設計所幹的事情。】

---------------------------------------

繼續閱讀