笔记 Linux文件系统的初始化

uboot结束时调用start_kernel(/3.1.10/init/main.c)函数启动linux


start_kernel做内存初始化,操作系统数据结构初始化,调度系统初始化,各种资源初始化之后会调用vfs_caches_init初始化文件系统(/3.1.10/fs/dcache.c)


vfs_cache_init:

vfs_cache_init调用inode_init(/3.1.10/fs/inode.c)初始化inode数据结构,就是申请一大片内存,哈希表;

vfs_cache_init调用files_init(/3.1.10/fs/file_table.c)初始化文件句柄数据结构;

vfs_cache_init调用mnt_init(/3.1.10/fs/namespace.c)挂载根文件系统"/";

vfs_cache_init调用bdev_cache_init(/3.1.10/fs/block_dev.c)初始化块设备文件系统;

vfs_cache_init调用chrdev_init(/3.1.10/fs/char_dev.c)初始化字符设备文件系统。


mnt_init:

mnt_init调用sysfs_init(/3.1.10/fs/mount.c)注册"sysfs"类型的文件系统

    sysfs_init调用sysfs_inode_init(/3.1.10/fs/inode.c)

        sysfs_inode_init调用bdi_init(&sysfs_backing_dev_info)初始化backing_dev(???)

    sysfs_init调用register_filesystem(&sysfs_fs_type)(/3.1.10/fs/filesystem.c)注册类型为"sysfs"的文件系统

        register_filesystem将sysfs_fs_type添加到file_systems的全局链表中

    sysfs_init再调用kern_mount(/3.1.10/fs/namespace.c)将sysfs_fs_type绑定

        kern_mount_data调用vfs_kern_mount

            vfs_kern_mount调用alloc_vfsmnt分配一个mount的数据结构

                alloc_vfsmnt调用mnt_alloc_id分配一个mount id

               

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值