免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 983 | 回复: 0
打印 上一主题 下一主题

linux文件系统的根目录从哪里来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-28 18:50 |只看该作者 |倒序浏览

用linux,有这样一个疑问:要访问一个文件就得先访问一个目录,才能根据文件名从目录中找到该文件的目录项,进而找到i节点;可是目录本身也是文件,它本身的目录项又在另一个目录项中,这样一来不是成了 “先有鸡还是先有蛋”的问题,或者是递归了吗?这个圈子的出口在哪里呢?
答案是:系统中有这样一个目录,能够在固定的位置找到。这就是初始根节点
现在就来看看内核中是怎样实现的。
我们知道,打开文件时,需要调用path_lookup()函数查找文件名对应的目标节点 。这个函数首先会根据文件名的首字母是否为'/',设置查找的起点。若为'/'则从currend->fs->root目录开始。这里currend->fs->root是当前进程的根目录。那么,可以猜想,系统第一个进程的根目录就应该是“先有鸡还是先有蛋”问题出口了。
查看代码  
在文件Namespace.c中,有系统启动初始化时设置进程根目录的代码
//>>start_kernel>vfs_caches_init>mnt_init>init_mount_tree]
mnt = do_kern_mount("rootfs", 0, "rootfs", NULL);//这里挂载rootfs文件系统
.....
namespace->root = mnt;
.....
set_fs_pwd(current->fs, namespace->root, namespace->root->mnt_root);
set_fs_root(current->fs, namespace->root, namespace->root->mnt_root);
系统第一个进程是所有进程的祖先,由它fork出来的进程将继承它的根目录


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36646/showart_288323.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP