說明:只供學習交流
一,linux體系結構
如果有人問你,linux系統是如何構成的?只要把下面這幅圖說給他聽,就ok
從圖上我們可以知道,linux系統是由使用者空間和核心空間兩部分組成,之所以將linux系統劃分為使用者空間和核心空間很大一部分原因是為了安全著想。
linux簡化了分段機制,使得虛擬位址與線性位址總是一致,因此,linux的虛擬位址空間也為0~4g。linux核心將這4g的空間劃分為兩部分。最高的1g(0xc0000000~0xffffffff),供核心使用,稱為「核心空間」。而將較低的3g位元組(0x00000000~0xbffffffff),供各程序使用,稱為「使用者空間」。因為各程序可以通過系統呼叫進入核心,因此linux核心為系統內的所以程序共享。從程序的角度來看,每個程序可以擁有4g的虛擬空間。
linux使用兩級保護機制(x86也實現了4個不同的級別:ring0—ring3。ring0下,可以執行特權指令,可以訪問io裝置等,在ring3則有很多限制):0級供核心使用,3級供使用者程式使用。
使用者空間包含了使用者應用程式和c庫。核心空間從上到下分別是:系統呼叫介面,核心,體系結構相關的**。在到下面就是硬體了。
二,使用者空間進入核心空間的方法
核心空間與使用者空間是程式執行的兩種不同狀態,通過系統呼叫和硬體中斷能夠完成從使用者空間到核心空間的轉移。
linux 作業系統和驅動程式執行在核心空間,應用程式執行在使用者空間,兩者不能簡單地使用指標傳遞資料,因為linux使用的虛擬記憶體機制,使用者空間的資料可能被換出,當核心空間使用使用者空間指標時,對應的資料可能不在記憶體中。
三,linux核心是如何構成的?
當有人問我們linux系統是如何構成的,我們用上面那幅圖,但當有人問我們linux核心是如何構成的呢?呵呵,我們看下面這幅圖,千萬不要搞反了哦
系統呼叫介面(system call inte***ce):這個簡單,不說了,沒它使用者空間的程序可進不來哦。
程序管理(process management):主要的工作有程序的建立與銷毀,程序間通訊,程序排程等。
記憶體管理(memory management):主要工作是記憶體的分配,**,對映等。
體系相關(arch):各個與體系相關的**都放在這裡,比如記憶體管理與體系結構相關的**,程序管理與體系結構相關的**等等,都把他放在這裡,那麼其他的就是與體系結構無關的**,移植起來是不是方便多了呢?現在你知道linux的偉大了吧。
裝置驅動(device driver):略
協議棧(network stack):linux為什麼這麼受歡迎,就是因為它支援豐富的網路協議,不僅豐富而且還相當的穩定。像什麼tcp,udp,icmp等等都在這裡實現。
虛擬檔案系統(virtual file system):它的作用只是隱藏各種檔案系統的具體細節,為檔案操作提供統一的操作介面,看下面這幅圖:
我們在程式設計的時候,比如開啟乙個檔案,我們關心了它在哪個檔案系統上沒有,毫無疑問我們沒有,我們都是使用open系統呼叫,無論它是在ext2還是fat上,這就是虛擬檔案系統的作用。如果沒有虛擬檔案系統這層抽象,那麼乙個檔案在ext2上我們開啟它用open,那麼把它放到fat上估計得用open1了,再放到nfs上估計得用open2了。
Linux 核心 簡介
核心是linux系統的最底層,提供了系統的核心功能並允許程序以一種有序的方式訪問硬體 用於控制程序,輸入,輸出裝置,檔案系統操作,管理記憶體,這些都是系統自動完成的,你大可安然睡覺去,linux核心支援多使用者,多工模式執行 多使用者 同時有多個使用者訪問系統 多工 某個時刻有多個任務執行 linu...
Linux核心簡介
linux體系結構 linux由 使用者空間 和核心空間 兩部分組成。為什麼linux 系統會被劃分為使用者空間與核心空間?現代cpu 通常實現了不同的工作模式,以 arm為例,實現了 7種工作模式 使用者模式 usr 快速中斷 fiq 外部中斷 irq 管理模式 svc 資料訪問中止 abt 系統...
linux核心簡介
linux體系結構分為使用者空間和核心空間兩個部分,以此來提高linux系統的安全性。使用者空間一般都是我們看得見的應用程式,c庫,核心空間一般都是我們看不見的系統呼叫介面,kernel等等。核心空間和使用者空間是程式執行的兩種不同狀態,通過系統呼叫,硬體中斷,程式可以從使用者空間跳到核心空間。li...