版權所有,轉載請說明轉自 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.c中kernel_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包括ROM、flash和光磁介質存儲器;RAM包括SRAM、DRAM和特定應用的RAM。
NOR Flash:Intel公司,程序可以直接在NOR內運行。
NAND Flash:東芝公司,NAND以塊方式進行訪問,不支持芯片內執行,容量大,價格低,擦寫次數和速度以及編程速度遠超NOR。但是會出錯,應用ECC檢查錯誤。
其他
1.阻塞I/O意味着一直等待設備可訪問後再訪問,非阻塞I/O中使用poll函數意味着查詢設備是否可訪問,異步通知使用fasync函數意味着設備通知自身可訪問,阻塞和非阻塞都屬於同步。
2.中斷根據中斷入口跳轉的方法不同,分爲向量中斷和非向量中斷,向量中斷是由硬件提供中斷服務程序的入口地址,非向量中斷由軟件提供中斷服務的入口地址(比如系統調用時的int $80中斷)。