|
系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)
- Task List
Process Scheduler 針對(duì)每個(gè)進(jìn)程維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu)task_struct;所有的進(jìn)程用鏈表管理,形成task list;process scheduler還維護(hù)一個(gè)current指針指向當(dāng)前正在占用CPU的進(jìn)程。 - Memory Map
Memory Manager存儲(chǔ)每個(gè)進(jìn)程的虛擬地址到物理地址的映射;并且也提供了如何換出特定的頁(yè),或者是如何進(jìn)行缺頁(yè)處理。這些信息存放在數(shù)據(jù)結(jié)構(gòu)mm_struct中。每個(gè)進(jìn)程都有一個(gè)mm_struct結(jié)構(gòu),在進(jìn)程的task_struct結(jié)構(gòu)中有一個(gè)指針mm指向次進(jìn)程的mm_struct結(jié)構(gòu)。
在mm_struct中有一個(gè)指針pgd,指向該進(jìn)程的頁(yè)目錄表(即存放頁(yè)目錄首地址)——>當(dāng)該進(jìn)程被調(diào)度時(shí),此指針被換成物理地址,寫入控制寄存器CR3(x86體系結(jié)構(gòu)下的頁(yè)基址寄存器) - I-nodes
VFS通過inodes節(jié)點(diǎn)表示磁盤上的文件鏡像,inodes用于記錄文件的物理屬性。每個(gè)進(jìn)程都有一個(gè)files_struct結(jié)構(gòu),用于表示該進(jìn)程打開的文件,在task_struct中有個(gè)files指針。使用inodes節(jié)點(diǎn)可以實(shí)現(xiàn)文件共享。文件共享有兩種方式:(1)通過同一個(gè)系統(tǒng)打開文件file指向同一個(gè)inodes節(jié)點(diǎn),這種情況發(fā)生于父子進(jìn)程間;(2)通過不同系統(tǒng)打開文件指向同一個(gè)inode節(jié)點(diǎn),舉例有硬鏈接;或者是兩個(gè)不相關(guān)的指針打開同一個(gè)文件。 - Data Connection
內(nèi)核中所有的數(shù)據(jù)結(jié)構(gòu)的根都在Process Scheduler維護(hù)的task list鏈表中。系統(tǒng)中每個(gè)進(jìn)程的的數(shù)據(jù)結(jié)構(gòu)task_struct中有一個(gè)指針mm指向它的內(nèi)存映射信息;也有一個(gè)指針files指向它打開的文件(用戶打開文件表);還有一個(gè)指針指向該進(jìn)程打開的網(wǎng)絡(luò)套接字。
更多交流可以加QQ啊2685896890
|
|