操作系统有关知识
32
陕西师范大学学报(自然科学版)
第33卷
初始化函数,如init_E)也一fS()是E)以文件系统初始化函数;i“t一耐nix-fS()是n】inix文件系统的初始化函数;init—n_l{jd盼fS()是nlsd吣文件系统初始化函数.
intinit—Ext2一fs(void)
{
returmregiste卜filesystem(&Ext2一fs—type);
在各种文件系统初始化函数中,把该文件系统
的注册结构体作为参数,调用由内核提供的文件注册函数repister—fileSsyStem().该函数的功能是把文件系统注册结构体加入到注册链表中,从而完成注册任务.如Ext2文件系统的初始化函数在/fs/Ext2/Super.c中定义如下:
Ext2文什系统
}
该函数以Ext2文件系统的注册结构体Ext2一fs—type的首地址作为参数,调用register—filesyStem()函数.该函数的执行过程是在注册链表中从链首开始向后遍历,查看该文件系统是否已注册,若没有注册,则把该文件系统的注册结构体加到注册链表的链尾.
proc文件系统
—-
proc
read
super
msdos文什系统
msdosread
suDer
File—system卜.
Ext2read“Ext2”
l
next
super
“prOc”
I
—
“msdos”
1
一
neXt
neXt
图3文件系统的注册链表
Fig.3
Re画strati帅linked
listoffilesystem
3通过虚拟文件系统访问
Ext2中的文件
当进程访问某一个物理文件系统的文件时,并不直接访问该物理文件系统,而是通过VFS访问它在内存中的VFS超级块和inode,获得文件系统和文件的管理信息,然后使用这些信息访问磁盘上的文件.
由于不同文件系统对文件操作的函数不同,所以VFS中设置了公共的操作函数接口.当进程向系统发出文件操作的请求时,该文件可以是某个物理文件系统中的一个文件,内核将通过VFS公共的操作接口转换到该文件系统的相应操作函数.在操作
函数执行过程中,对文件的搜索、定位等则是通过VFS超级块和inode得到该文件相应的管理数据.这样,进程通过VFS接口就可以访问各种不同的物理文件系统.VFS的功能及其工作原理,可以通过进程访问不同物理文件系统的过程来说明.图4给出了进程访问Ext2文件系统时,经VFS实现转换的示意图.参考文献:
[1]linux文件系统[EB/oL].http://yanjin415.go.neaSe.
net.2004.
[2]M。sheBar.Linux文件系统[M].天宏工作室译.北京:
清华大学出版社,2003.
[3]Linux的文件系统[EB/oL].http://、ww.ironwareinfo.
conl.cn,2004.
J访问Exl2J
I超级块
[4]文件系统[EB/oL].http://、ww.todayhero.net,2004.[5]EviNemeth,GarthSnyder,Trent
R
Hein.Linux系统管
理技术手册[M].张辉译.北京:人民邮电出版社,
flf蒜的inode
Il转换入口f
2004.53~66.113~152.
[6]杜聪,徐志伟.oOsM()S文件系统的性能分析[J].计算
机学报,200l,(7):702~709.
Ext2文什系统
[7]赵慧斌,李小群,孙玉芳.改善Linux核心可抢占性方
closewrite
超级块块描述符
块位幽inode位幽inode表数据区
OpenRead
法的研究与实现[J].计算机学报,2004,(2):244~251.[8]徐德民.操作系统原理“l ux篇[M].北京:国防工业出
版社,2004.252~283.
[9]张丽芬,刘美华.操作系统原理教程[M].北京:电子工
业出版社,2004.277~310.
Delete…
文件组织操作函数
图4由vFs实现转换的示意图
Fig.4
Sketch
map0ftr锄sfonnbyV礴
[责任编辑张惠民]
万方数据