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