核心與作業系統:
核心是作業系統的核心部分,包含了系統執行的核心過程,決定系統的效能,作業系統啟動核心被裝入到ram中;
作業系統與底層硬體裝置互動和為執行應用程式提供執行環境。
linux核心與微核心比較:
微核心:核心只需要乙個很小的函式集,通常包括幾個同步原語,乙個簡單的排程程式和程序間通訊機制。
執行在微核心之上的幾個系統程序實現系統級功能:記憶體分配,裝置驅動程式……完全的模組化程序。任何操作
系統層都是獨立的程式模組,
通過模組化的方法定義明確清晰的軟體介面與其它層互動。核心中暫且不需要執行
的系統程序可以被調出或者撤銷。
微核心便於移植和充分利用ram,但開銷大效率是個問題。
單核心:linux核心:單塊結構。核心的全部**,包括所有子系統(如記憶體管理、檔案系統、裝置驅動程式)
都打包到乙個檔案中。核心中的每個函式都可以訪問核心中所有其他部分。模組特性依賴於核心與使用者層之間設計
精巧的通訊方法,這使得模組的熱插拔和動態裝載得以實現。
每個核心層都被繼承到整個核心程式中,並代表著當前程序在核心態下執行。
模組化(非程序)——允許在執行狀態下動態的安裝。模組是乙個目標檔案,其**在執行時鏈結到核心或從核心解除鏈結。
目標**通常
是一組函式組成,用來實現檔案系統,驅動程式……這些模組與其他靜態鏈結核心函式一樣,代表著
當前程序
在核心態下執行,直接函式呼叫避免程序切換訊息傳遞的開銷,效率可能更高。
linux使用者程式兩種狀態:
使用者態和核心態;使用者態切換到核心態:
l 程序系統呼叫
l cpu異常
l 中斷
l 核心執行緒被執行
多使用者系統:
能併發執行和獨立的執行多個使用者的應用程式,各個使用者擁有獨立空間。使用者組,root使用者。
linux程序:
程序process:
l 作業系統的基本抽象。
l 程序是程式執行時的乙個例項;乙個執行程式的執行上下文。
l 幾個程序能併發的執行同乙個程式;而同乙個程序能順序執行幾個程式。
l 具有獨立的位址空間;多個程序可以同時執行。
程序受核心管理;每個程序由乙個程序描述符表示,包含程序當前的狀態資訊。
當核心暫停乙個程序的執行時,就把幾個相關處理器暫存器的內容儲存在程序描述符中。這些暫存器包括:
l 程式計數器pc和棧指標sp暫存器
l 通用暫存器
l 浮點暫存器
l 包含cpu狀態資訊的處理控制暫存器
l 跟蹤程序對ram訪問的記憶體管理暫存器
當核心恢復執行程序時:將程序描述符中合適欄位來裝在cpu暫存器,根據程式計數器指向恢復到程式執行的地方。
linux重入核心:
核心可重入:
可重入函式:使用區域性變數
實現同步機制:訊號量、鎖、關中斷
程序執行狀態切換: 程序在使用者態與核心態的轉換,linux是搶占式核心
同步和臨界區:核心資料操作訪問。
程序間通訊ipc:訊號量、訊息佇列、共享記憶體
程序管理:fork與_exit,exec(),子程序與父程序
linux檔案系統:
檔案系統是對儲存裝置上的資料和元資料進行組織的機制,以樹形結構組織。
檔案型別:
不同檔案
目錄符號鏈結
面向塊得裝置檔案 (裝置驅動相關)
面向字元的裝置檔案 (裝置驅動相關)
管道(pipe)和命名管道(named pipe)(程序間通訊相關)
套接字(socket) (程序間通訊相關)
檔案訪問許可權和訪問模式
檔案描述符和索引節點:記錄檔案的資訊資料。
檔案操作的系統呼叫:open、read、write……
記憶體管理:
虛擬記憶體:處於應用程式記憶體請求與硬體記憶體單元之間的邏輯層。
隨即訪問儲存器ram:一部分用於核心映像,其餘虛擬記憶體處理
核心記憶體分配器:kma 處理記憶體請求子系統
l 速度快
l 減少記憶體浪費
l 減輕記憶體碎片
l 與其他記憶體管理合作(頁框)
l 記憶體分配演算法
程序虛擬空間位址處理:核心分配給程序的虛擬位址空間由以下記憶體區組成:
l 程式的可執行**
l 程式的初始化資料
l 程式未初始化資料
l 初始化程式棧
l 所需共享庫的可執行**和資料
l 程式動態請求的記憶體堆
快取記憶體:
裝置驅動程式:
核心通過裝置驅動程式與i/o裝置互動,裝置驅動程式在核心中,使用者程式通過核心訪問裝置。
linux核心學習筆記
核心的配置 a.make s3c2410 deconfig b.make menuconfig 圖形化配置 c.使用廠家給出的配置 生成.config 編譯生成核心,使用如下命令 make vmlinux make uimage 帶頭部 真正核心 1 config 建立生成autoconf.h 供源...
Linux核心學習筆記
2.2 核心原始碼樹 arch 特定體系結構的原始碼 block crypto api crypto 核心原始碼文件 drivers 裝置驅動程式 firmware fs vfs和各種檔案系統 include 核心標頭檔案 init 核心引導和初始化 ipc 程序間通訊 kernel 像排程程式這樣...
Linux核心學習筆記 核心同步
linux核心中執行的程式,時刻都要防止併發引起的競態。這將會導致資料結構被破壞,嚴重的時候會引起核心崩潰。所以核心同步技術對核心開發的驅動程式來說非常重要。不懂核心同步技術的人,是寫不出安全健壯的核心驅動程式來的。在學習核心同步技術之前需要掌握一下幾個概念。1 並行,併發與競態 在smp執行的li...