首先,Linux整體的架構(gòu)如圖:
再來看Linux內(nèi)核架構(gòu),
內(nèi)核由五個主要子系統(tǒng)組成:
Process Scheduler :
進程調(diào)度(SCHED)負責控制對CPU的進程訪問。調(diào)度程序執(zhí)行相應的策略,使得多個進程能在CPU中“微觀串行,宏觀并行”地執(zhí)行。進程調(diào)度處于系統(tǒng)的中心位置,內(nèi)核中其他的子系統(tǒng)都依賴它,因為每個子系統(tǒng)都需要掛起或恢復進程。在用戶空間,進程是由進程標示符(PID)表示的。在linux內(nèi)核空間,每個進程都有一個獨立的數(shù)據(jù)結(jié)構(gòu),用來保存該進程的ID、優(yōu)先級、地址的空間等信息,這個結(jié)構(gòu)也被稱做進程控制塊(Process Control Block)。所謂的進程管理就是對進程控制塊的管理。
Memory Manager:
內(nèi)存管理器(MM)允許多個進程安全地共享機器的內(nèi)存系統(tǒng)。此外,內(nèi)存管理器還支持虛擬內(nèi)存,該虛擬內(nèi)存允許Linux支持使用的內(nèi)存量超過系統(tǒng)可用內(nèi)存的進程。為了解決物理內(nèi)存有時被耗盡的問題,內(nèi)存管理子系統(tǒng)規(guī)定頁面可以移出內(nèi)存并放入磁盤中,這個過程稱為交換。內(nèi)存管理的源代碼可以在./linux/mm中找到。
Virtual File System :
虛擬文件系統(tǒng)(VFS)通過為所有設(shè)備提供通用文件接口來抽象化各種硬件設(shè)備的詳細信息。它獨立于各個具體的文件系統(tǒng),是對各種文件系統(tǒng)的一個抽象,它使用索引節(jié)點inode存放文件的物理信息,使用目錄項dentry存放文件的邏輯信息。
Network Interface :
網(wǎng)絡接口可分為網(wǎng)絡協(xié)議和網(wǎng)絡驅(qū)動程序,網(wǎng)絡協(xié)議部分負責實現(xiàn)每一種可能的網(wǎng)絡傳輸協(xié)議,網(wǎng)絡設(shè)備驅(qū)動程序負責與硬件設(shè)備通信。寫網(wǎng)絡應用程序,使用socket通過TCP/IP協(xié)議與其他機器通信。網(wǎng)絡數(shù)據(jù)從用戶進程到達實際的網(wǎng)絡設(shè)備需要四個層次:用戶進程,套接字,網(wǎng)絡協(xié)議,網(wǎng)絡設(shè)備。
Inter-Process Communication :
進程通信支持提供進程之間的通信,Linux支持進程間的多種通信機制,包含信號量、共享內(nèi)存、管道等。
評論
查看更多