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/ 核心連接配接工具
-----------------------------
作業系統結構
硬體-核心-服務-應用
------------------------
核心體系結構:
程序排程子產品,記憶體管理子產品,檔案系統子產品,程序間通信子產品,網絡接口子產品

-------------------------
任務資料結構。
【狀态,時間片,優先級,信号,退出碼,代碼段實體位址,長度,堆棧記憶體位址.
程序号,父程序号,會話号,使用者标記号,組,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
-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程式設計所幹的事情。】
---------------------------------------