本文介绍Linux虚拟文件系统的初始化过程。如下图:
+-----> start_kernel()
|
|
+-----> vfs_caches_init_early()
|
|
+-----> vfs_caches_init()
|                        +--->new thread(kernel_init)
|                        |       +
|                        |       |
+-----> rest_init()+------       v
                           kernel_init_freeable
                                 + 
                                 | 
                                 v
                             do_basic_setup
                                 +
                                 |
                                 v
                           prepare_namespace

在Linux kernel的入口函数start_kernel中,系统调用vfs_caches_init_early和vfs_caches_init进行必要的初始化。Continue Reading "Linux虚拟文件系统(2)– 初始化流程"
 

VFS简介

说明:本系列文章均以Linux 4.4为原型进行分析 Linux将系统中很多资源都抽象成文件,如Socket、设备节点、以及内存。可以如此做,归功于Linux操作系统的虚拟文件系统(VFS)。 有了VFS,无论底层文件系统格式是FAT、ext格式甚至是内存,(一般情况下)上层应用无论关心底层这些文件系统的实现细节,可以按照统一的方式对文件进行操作。 Linux虚拟文件系统(1) 如上图,用户态应用通过glibc提供的API对文件进行操作,如open()、read()、 write()等。Glibc将这些函数转换成Linux提供的系统调用,操作系统根据系统调用号执行对应的操作函数,如__syscall_open/__syscall_read/__syscall_write等。这样就走到了Linux的虚拟文件系统层(上图VFS)。 Continue Reading "Linux虚拟文件系统(1)"