- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
图5.17描述了Linux的根文件系统ext2及两个独立的文件系统A和B。在A和B安装到Linux文件系统前如图5.17(a)所示,它们各自都是独立的。安装后,文件系统A安装在Linux文件系统树形结构的home目录下,文件系统B安装在usr目录下,如图5.18(b)所示。其中,目录home和usr就是安装点。
若选定的安装目录中存在着文件和下级子目录,则安装新的文件系统后,该目录下的所有文件和子目录将被掩盖。在文件系统卸载后,安装目录中原来的文件再次出现。在Linux系统中,安装文件系统需要指出三种信息:文件系统类型、文件系统所在的物理块设备、文件系统的安装点。例如,超级用户可以通过下列命令安装文件系统:
mount-tmsdos/dev/hdc/mnt/usr
其中,msdos是要安装的文件系统类型;/dev/hdc是文件系统所在的设备;/mnt/usr是安装点。
文件系统安装后就可以通过树形目录结构按照Linux提供的文件存取方法访问其中的文件。图5.17文件系统的安装(2)文件系统安装注册链表。为了对VFS超级块和inode节点进行跟踪,Linux对系统中已安装的每个文件系统通过一个vfsmount结构进行描述,它的定义如下:
suuctvfsmount
{
kdev_tmnt_dev; /*文件系统所在设备的设备号*/
char*mnt_devname; /*文件系统所在设备的设备名,如/dev/dsk/hdal*/
char*mnt_dirname; /*安装点的目录名*/ unsignedintmnt_flags; /*设备标志*/
structsemaphoremnt_sem; /*对设备I/O操作时的信号量*/
structsuper_block*mnt_sb; /*指向该文件系统VFS超级块的指针*/
structfile*mnt_quotas[MAXQUOTAS]; /*指向配额文件的指针数组*/
time_tmnt_iexp[MAXQUOTAS]; /*inode分配允许延迟时间*/
time_tmnt_bexp[MAXQUOTAS]; /*数据块分配允许延迟时间*/
structvfsmnt*mnt_next; /*指向链表中下一结构*/
};在这个结构体中包含了对已安装的文件系统的管理信息,如指出文件系统所在设备的属性、安装点的目录名、文件系统VFS超级块的指针等。系统中所有已安装文件系统的各个vfsmount结构体使用其成员项mnt_next组成一个链表,称为物理文件系统链表。全局变量vfsmantlist指向物理文件系统链表的链首,如图5.18所示。图5.18超级块、安装点和具体的文件系统的关系(3)文件系统的注册链表。内核通过VFS使用一个已安装的文件系统前,还必须向内核注册,以实现从虚拟文件系统到实际文件系统的转换。内核通过执行文件系统注册链表来有哪些信誉好的足球投注网站每个文件系统的接口函数,以便装入该文件系统的超级块,实现虚实文件系统的转换。内核将每个已注册的文件系统登记在一个filesystem_type结构体中,所有已注册文件系统的filesystem_type结构体组成一个链表,称为注册链表,链表的链首由全局变量file_system给出。
注册链表结构体filesystem_type在/include/linux/fs.h中定义,如下所示:structfile_system_type{
structsuper_block*(*read_super)(structsuper_block*,void*,int);
constchar*name;
intrequires_dev;
structfile_system_type*next;
};第一个成员项read_super是一个函数指针,它所指向的函数用于读出该文件系统在外存的超级块。成员项name是指向文件系统名字的字符指针。requires_dev表示该文件系统是否需要设备支持,若需要则为1,否则为0。并不是所有的文件系统都需要设备支持,如PROC文件系统并不需要使用块设备。next指向链表中下一个注册结构体。由注册结构体形成的注册链表如图5.19所示。图5.19三种文件系统的示意图超级用户要装配文件系统时,Linux内核必须先验证传入系统调用中的参数的有效性。由上面“(1)文件系统安装”例可知,mount命令会向内核传送三部分信息:文件系统名、包含该文件
文档评论(0)