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