Linux內核總述

版權所有,轉載請說明轉自 http://my.csdn.net/weiqing1981127  

Linux內核

1.Linux內核主要由進程調度(SCHED)、內存管理(MM)、虛擬文件系統(VFS)、網絡接口(NET)和進程通信(IPC)五個子系統組成。

1.1進程調度控制系統中的多個進程對CPU的訪問,使得多個進程能在CPU微觀串行,宏觀並行地執行。

1.2內存管理的主要作用是控制多個進程安全地共享主內存區域,當CPU提供內存管理單元(MMU)時,Linux內存管理完成爲每個進程進行虛擬內存到物理內存的轉換。一般而言,Linux的每一個進程享有4GB的內存空間,0-3GB爲用戶空間,3-4GB爲內核空間,這 1GB的內核空間又被劃分爲物理內存映射區、虛擬內存分配區、高端頁面映射區和系統保留映射區。物理內存映射區最大長度爲896MB,系統物理內存0-896MB就映射到這個物理內存映射區,系統物理內存大於896MB的數據屬於高端內存,會被映射到高端頁面映射區。由此可見,在3-4GB的內核空間中,從低地址到高地址依次爲:物理內存映射區,隔離帶,虛擬內存分配區,隔離帶,高端內存映射區,專用頁面映射區和保留區。

爲了瞭解內存管理單元MMU,我們還需要知道TLB(塊表)TTW(轉換表漫遊,又叫慢表,當TLB中沒有緩衝對應的地址轉換關係時,需要通過多級頁表的訪問來獲得虛擬地址和物理地址的對應關係,TTW成功後,結果寫入TLB)

1.3虛擬文件系統隱藏各種硬件的具體細節,爲所有的設備提供統一的接口。

1.4網絡接口提供了對各種網絡標準的存取和各種網絡硬件的支持。

1.5進程通信支持提供進程之間的通信,包括信號量、共享內存、管道等。

 

2.Linux內核五個部分的關係

第一,進程調度和內存管理之間的關係:相互依賴,程序要運行必須爲之創建進程,而創建進程第一件事就是將程序和數據裝入內核。第二,進程通信與內存管理的關係:進程間通信需要依靠內存管理支持共享內存機制。第三,虛擬文件系統和網絡接口的關係:虛擬文件系統利用網絡接口支持網絡文件系統(NFS),也利用內存管理支持RAMDISK設備。第四,虛擬文件系統與內存管理的關係:內存管理利用虛擬文件系統支持交換,當一個進程存儲的內存映射被換出時,內存管理向文件系統發出請求,同時掛起當前正在運行的進程。

 

Linux內核的引導

1.Boot Loader 的主要任務

依賴於 CPU 體系結構的代碼,比如設備初始化代碼等,通常都放在 stage1 中,而且通常都用彙編語言來實現,以達到短小精悍的目的。而 stage2 則通常用C語言來實現,這樣可以實現給複雜的功能,而且代碼會具有更好的可讀性和可移植性。

2.Boot Loader stage1 通常包括以下步驟(以執行的先後順序)

(1) 硬件設備初始化。

(2)爲加載 Boot Loader stage2 準備 RAM 空間。

(3)拷貝 Boot Loader stage2 RAM 空間中。

(4)設置好堆棧(sp)。

(5)跳轉到 stage2 C 入口點(IP)。

3.Boot Loader stage2 通常包括以下步驟(以執行的先後順序)

(1)初始化本階段要使用到的硬件設備。

(2)檢測系統內存映射(memory map)

(3) kernel 映像和根文件系統映像從 flash 上讀到 RAM 空間中。

(4)爲內核設置啓動參數。

(5)調用內核。

4.嵌入式系統在復位後就直接運行bootloader,當bootloader的控制權被釋放,內核階段就開始了,內核在進行一些初始化操作之後,就調用/init/main.c中的start_kernel函數,該函數會調用一系列初始化函數來設置中斷,執行進一步的內存配置。之後,/arch/i386/kernel/process.ckernel_thread被調用以啓動第一個核心線程,該線程執行init函數,作爲核心線程的init函數完成外設及其驅動程序的加載和初始化,掛接跟文件系統,搜索init程序的順序是/sbin/init/etc/init/bin/init/bin/sh

 

處理器

中央處理器體系架構可以分爲兩類:馮諾依曼結構和哈佛結構。馮諾依曼結構把程序和操作數都放在同一個存儲器中,這個存儲器通過總線與處理器相連,而哈佛結構是把程序放在程序存儲器內,通過程序總線與處理器相連,然後把操作數放在操作數存儲器中,通過操作數總線與處理器相連。

中央處理器從指令的角度也可以分爲RISC(精簡指令集計算機)CISC(複雜指令集計算機)

中央處理器按應用領域可以分爲通用處理器(GPP)、數字信號處理器(DSP)和專用處理器及ASIC。其中GPP包括MCU(微控制器,又叫單片機)(MPU微處理器)DSP包括定點DSP和浮點DSP

 

存儲器

存儲器分爲非易失性存儲器(NVM)RAM。其中NVM包括ROMflash和光磁介質存儲器;RAM包括SRAMDRAM和特定應用的RAM

NOR FlashIntel公司,程序可以直接在NOR內運行。

NAND Flash:東芝公司,NAND以塊方式進行訪問,不支持芯片內執行,容量大,價格低,擦寫次數和速度以及編程速度遠超NOR。但是會出錯,應用ECC檢查錯誤。

 

其他

1.阻塞I/O意味着一直等待設備可訪問後再訪問,非阻塞I/O中使用poll函數意味着查詢設備是否可訪問,異步通知使用fasync函數意味着設備通知自身可訪問,阻塞和非阻塞都屬於同步。

2.中斷根據中斷入口跳轉的方法不同,分爲向量中斷和非向量中斷,向量中斷是由硬件提供中斷服務程序的入口地址,非向量中斷由軟件提供中斷服務的入口地址(比如系統調用時的int $80中斷)

 

 

發佈了57 篇原創文章 · 獲贊 63 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章