国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩


嵌入式linux內(nèi)核的五個子系統(tǒng)

分享到:
           

    Linux內(nèi)核主要由進(jìn)程調(diào)度(SCHED)、內(nèi)存管理(MM)、虛擬文件系統(tǒng)(VFS)、網(wǎng)絡(luò)接口(NET)和進(jìn)程間通信(IPC)5個子系統(tǒng)組成,如圖1所示。

    
圖1 Linux內(nèi)核的組成部分與關(guān)系

    1.進(jìn)程調(diào)度

    進(jìn)程調(diào)度控制系統(tǒng)中的多個進(jìn)程對CPU的訪問,使得多個進(jìn)程能在CPU中“微觀串行,宏觀并行”地執(zhí)行。進(jìn)程調(diào)度處于系統(tǒng)的中心位置,內(nèi)核中其他的子系統(tǒng)都依賴它,因?yàn)槊總子系統(tǒng)都需要掛起或恢復(fù)進(jìn)程。

    
圖2 Linux進(jìn)程狀態(tài)轉(zhuǎn)換

    如上圖2所示,Linux的進(jìn)程在幾個狀態(tài)間進(jìn)行切換。在設(shè)備驅(qū)動編程中,當(dāng)請求的資源不能得到滿足時(shí),驅(qū)動一般會調(diào)度其他進(jìn)程執(zhí)行,并使本進(jìn)程進(jìn)入睡眠狀態(tài),直到它請求的資源被釋放,才會被喚醒而進(jìn)入就緒態(tài)。睡眠分成可被打斷的睡眠和不可被打斷的睡眠,兩者的區(qū)別在于可被打斷的睡眠在收到信號的時(shí)候會醒。

    在設(shè)備驅(qū)動編程中,當(dāng)請求的資源不能得到滿足時(shí),驅(qū)動一般會調(diào)度其他進(jìn)程執(zhí)行,其對應(yīng)進(jìn)程進(jìn)入睡眠狀態(tài),直到它請求的資源被釋放,才會被喚醒而進(jìn)入就緒態(tài)。

    設(shè)備驅(qū)動中,如果需要幾個并發(fā)執(zhí)行的任務(wù),可以啟動內(nèi)核線程,啟動內(nèi)核線程的函數(shù)為:

    pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);

    2.內(nèi)存管理

    內(nèi)存管理的主要作用是控制多個進(jìn)程安全地共享主內(nèi)存區(qū)域。當(dāng)CPU提供內(nèi)存管理單元(MMU)時(shí),Linux內(nèi)存管理完成為每個進(jìn)程進(jìn)行虛擬內(nèi)存到物理內(nèi)存的轉(zhuǎn)換。Linux 2.6引入了對無MMU CPU的支持。

    如下圖3所示,一般而言,Linux的每個進(jìn)程享有4GB的內(nèi)存空間,0~3GB屬于用戶空間,3~4GB屬于內(nèi)核空間,內(nèi)核空間對常規(guī)內(nèi)存、I/O設(shè)備內(nèi)存以及高端內(nèi)存存在不同的處理方式。

    
圖3 Linux進(jìn)程地址空間

    3.虛擬文件系統(tǒng)

    如下圖4所示,Linux虛擬文件系統(tǒng)(VFS)隱藏各種了硬件的具體細(xì)節(jié),為所有的設(shè)備提供了統(tǒng)一的接口。而且,它獨(dú)立于各個具體的文件系統(tǒng),是對各種文件系統(tǒng)的一個抽象,它使用超

    
圖4 Linux文件系統(tǒng)

    級塊super block存放文件系統(tǒng)相關(guān)信息,使用索引節(jié)點(diǎn)inode存放文件的物理信息,使用目錄項(xiàng)dentry存放文件的邏輯信息。

    4.網(wǎng)絡(luò)接口

    網(wǎng)絡(luò)接口提供了對各種網(wǎng)絡(luò)標(biāo)準(zhǔn)的存取和各種網(wǎng)絡(luò)硬件的支持。如下圖5所示,在Linux中網(wǎng)絡(luò)接口可分為網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)驅(qū)動程序,網(wǎng)絡(luò)協(xié)議部分負(fù)責(zé)實(shí)現(xiàn)每一種可能的網(wǎng)絡(luò)傳輸協(xié)議,網(wǎng)絡(luò)設(shè)備驅(qū)動程序負(fù)責(zé)與硬件設(shè)備通信,每一種可能的硬件設(shè)備都有相應(yīng)的設(shè)備驅(qū)動程序。

    
圖5 Linux網(wǎng)絡(luò)體系結(jié)構(gòu)

    5.進(jìn)程通信

    進(jìn)程通信支持提供進(jìn)程之間的通信,Linux支持進(jìn)程間的多種通信機(jī)制,包含信號量、共享內(nèi)存、管道等,這些機(jī)制可協(xié)助多個進(jìn)程、多資源的互斥訪問、進(jìn)程間的同步和消息傳遞。

    Linux內(nèi)核的5個組成部分之間的依賴關(guān)系如下。

    ·進(jìn)程調(diào)度與內(nèi)存管理之間的關(guān)系:這兩個子系統(tǒng)互相依賴。在多道程序環(huán)境下,程序要運(yùn)行必須為之創(chuàng)建進(jìn)程,而創(chuàng)建進(jìn)程的第一件事情,就是將程序和數(shù)據(jù)裝入內(nèi)存。

    ·進(jìn)程間通信與內(nèi)存管理的關(guān)系:進(jìn)程間通信子系統(tǒng)要依賴內(nèi)存管理支持共享內(nèi)存通信機(jī)制,這種機(jī)制允許兩個進(jìn)程除了擁有自己的私有空間,還可以存取共同的內(nèi)存區(qū)域。

    ·虛擬文件系統(tǒng)與網(wǎng)絡(luò)接口之間的關(guān)系:虛擬文件系統(tǒng)利用網(wǎng)絡(luò)接口支持網(wǎng)絡(luò)文件系統(tǒng)(NFS),也利用內(nèi)存管理支持RAMDISK設(shè)備。

    ·內(nèi)存管理與虛擬文件系統(tǒng)之間的關(guān)系:內(nèi)存管理利用虛擬文件系統(tǒng)支持交換,交換進(jìn)程(swapd)定期由調(diào)度程序調(diào)度,這也是內(nèi)存管理依賴于進(jìn)程調(diào)度的惟一原因。當(dāng)一個進(jìn)程存取的內(nèi)存映射被換出時(shí),內(nèi)存管理向文件系統(tǒng)發(fā)出請求,同時(shí),掛起當(dāng)前正在運(yùn)行的進(jìn)程。

    除了這些依賴關(guān)系外,內(nèi)核中的所有子系統(tǒng)還要依賴于一些共同的資源。這些資源包括所有子系統(tǒng)都用到的例程,如分配和釋放內(nèi)存空間的函數(shù)、打印警告或錯誤信息的函數(shù)及系統(tǒng)提供的調(diào)試?yán)痰取?/p>

   熱點(diǎn)鏈接:

   1、如何分析Linux內(nèi)核源碼
   2、嵌入式linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表
   3、嵌入式linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)之雙向鏈表
   4、嵌入式linux內(nèi)核數(shù)據(jù)結(jié)構(gòu)之單向鏈表
   5、Linux內(nèi)核模塊程序結(jié)構(gòu)

更多新聞>>