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