在task_struct中,我們可以發現有:進程的文件,mm_struct和files_struct中的文件之間的關係?
struct mm_struct *mm, *active_mm;
struct files_struct *files;
files_struct包含指向多達256層文件的數據結構,正被此過程中的每一個描述文件。
struct file * fd_array[NR_OPEN_DEFAULT];
mm_struct包含一個vm_area_struct。
struct vm_area_struct * mmap; /* list of VMAs */
而且在一個vm_area_struct,我們可以發現:
struct file * vm_file; /* File we map to (can be NULL). */
所以我的問題是:
是什麼fd_array文件和vm_file之間的關係?
顯示在fd_array中的所有文件是否也將以類似於圖片所示的方式映射到vm_area_struct中?或者,映射在vm_area_struct中的所有文件都將顯示在fd_array中?
感謝,
a busy cat http://static.duartes.org/img/blogPosts/memoryDescriptorAndMemoryAreas.png