/**
****************************************************************************** * @author 何問起 * @version V1.0.0 * @date 2016-02-23 ****************************************************************************** * < Beijing university of posts and telecommunications > ******************************************************************************* ****************************************************************************** * platform exynos4412 ******************************************************************************* **/如下圖所示,Linux體系結構,從大的方面可以分為用戶空間(User Space)和內核空間(Kernel Space)。
用戶空間中包含了C庫,用戶的應用程序。在某些體系結構圖中還包含了shell,當然shell腳本也是Linux體系中不可缺少的一部分。
內核空間包括硬件平台、平台依賴代碼、內核、系統調用接口。
在任何一個現代操作系統中,都是分層的。為什麼需要分層呢?
從程序員的角度分析,將linux底層和和應用分開,將linux底層和應用分開,做應用的做應用,做底層的做底層,各干各的。經濟學的基本原理是,分工產生效率。
從安全性的角度分析,是為了保護內核。現代CPU通常都實現了不同的工作模式。
以ARM為例:ARM實現了7種工作模式,不同模式下CPU可以執行的指令或者訪問的寄存器不同: (1)用戶模式 usr (2)系統模式 sys(3)管理模式 svc(4)快速中斷 fiq(5)外部中斷 irq(6)數據訪問終止 abt(7)未定義指令異常。如果任何一個上層應用都可以調用都可以調用寄存器,那樣肯定是無法穩定執行的。而且因為出現了這個問題,出現了一個新的學科“現代操作系統”,如果大家感興趣可以看一下“現代操作系統”相關文章或者書籍。
以X86為例:X86實現了4個不同級別的權限,Ring0—Ring3 ;Ring0下可以執行特權指令,可以訪問IO設備;Ring3則有很多的限制
如果分析一下Android的,這方面做的更加“喪心病狂”,Android所有的APK應用程序,都是在Java虛擬機上面運行,應用程序更加遠離底層。
另外,用戶空間和內核空間是程序執行的兩種不同狀態,我們可以通過“系統調用”和“硬件中斷”來完成用戶空間到內核空間的轉移。
這一節,分析一下內核結構。
如下圖所示,是Linux內核結構圖。
SCI層(System Call Interface),這一層是給應用用戶空間提供一套標准的系統調用函數來訪問Linux。前面分析Linux體系結構的時候,介紹過任何一類現代操作系統都不會允許上層應用直接訪問底層,在Linux中,內核提供了一套標准接口,上層應用就可以通過這一套標准接口來訪問底層。
PM(Procees Management),這一部分包括具體創建創建進程(fork、exec),停止進程(kill、exit),並控制他們之間的通信(signal等)。還包括進程調度,控制活動進程如何共享CPU。這一部分是Linux已經做好的,在寫驅動的時候,只需要調用對應的函數即可實現這些功能,例如創建進程、進程通信等等。
MM(Memory Management),內存管理的主要作用是控制多個進程安全的共享內存區域。
VFS(Virtual File Systems),虛擬文件系統,隱藏各種文件系統的具體細節,為文件操作提供統一的接口。在Linux中“一切皆文件”,這些文件就是通過VFS來實現的。Linux提供了一個大的通用模型,使這個模型包含了所有文件系統功能的集合。如下圖所示,是一個虛擬文件系統的結構圖。
Device Drivers設備驅動,這一部分就是需要學習和掌握的。Linux內核中有大量的代碼在設備驅動程序部分,用於控制特定的硬件設備。
Linux驅動一般分為網絡設備、塊設備、字符設備、雜項設備,需要我們編寫的只有字符設備,雜項設備是不容易歸類的一種驅動,雜項設備和字符設備有很多重合的地方。
網絡協議棧,Linux內核中提供了豐富的網絡協議實現。
在學習Linux驅動之前需要理解和掌握linux體系結構和Linux內核結構 本人文字水平有限,所以就一步一步的寫和截圖,希望這種形式對大家有所幫助!