欢迎来到天天文库
浏览记录
ID:14898086
大小:82.00 KB
页数:8页
时间:2018-07-30
《linux内核具体体系结构之虚拟文件系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Linux内核具体体系结构之虚拟文件系统收藏此文于2009-10-23被推荐到CSDN首页如何被推荐?Linux内核具体体系结构之虚拟文件系统译自:《ConcreteArchitectureoftheLinuxKernel》作者:Waterloo,OntarioN2L3G1CS746G,Winter1998刘建文略译(http://blog.csdn.net/keminlau)3.3VirtualFileSystem3.3.1GoalsLinux被设计成支持驱动多种不同物理设备的现代操作系统。注意,即便是同一种的硬件设备也可能存在多种不同的接口,比如硬盘有PATA、SATA
2、、SCSI、USB等不同接口(KEMIN:注意接口与总线的区别)。除了支持不同的物理设备接口外,Linux还支持各种不同的逻辑文件系统(logicalfilesystems),这个功能有助于Linux与其它的操作系统共存和互操作。[虚拟文件系统]泛化和囊括了[外设输入输出]和[逻辑文件系统]功能,实现以下一些“伟大”目标:·*Multiplehardwaredevices-provideaccesstomanydifferenthardwaredevices·*Multiplelogicalfilesystems-supportmanydifferentlogicalfil
3、esystems·*Multipleexecutableformats-supportseveraldifferentexecutablefileformats(likea.out,ELF,java)·*Homogeneity-presentacommoninterfacetoallofthelogicalfilesystemsandallhardwaredevices·*Performance-providehigh-speedaccesstofiles·*Safety-donotloseorcorruptdata·*Security-restrictuseraccess
4、toaccessfiles;restrictusertotalfilesizewithquotas3.3.2ExternalInterface[虚拟文件系统]为系统边界提供了两层的接口:对外的是给用户进程调用的系统调用(system-call);对内是给内核其它子系统调用的底层函数。对外系统调用函数是符合POSIX标准的,包括文件操作open/close/read/write/seek/tell,和目录操作readdir/creat/unlink/chmod/stat。对内的接口则更丰富一些,除了公开文件系统的功能函数,还会对内核其它子系统公开一些实现的数据结构。比如,in
5、ode和file。以下两个接口定义可在文件系统C头文件(/include/linux/fs.h)中找到:InodeInterface:·*create():createafileinadirectory·*lookup():findafilebynamewithinadirectory·*link()/symlink()/unlink()/readlink()/follow_link():managefilesystemlinks·*mkdir()/rmdir():createorremovesub-directories·*mknod():createadirectory
6、,specialfile,orregularfile·*readpage()/writepage():readorwriteapageofphysicalmemorytoabackingstore·*truncate():setthelengthofafiletozero·*permission():checktoseeifauserprocesshaspermissiontoexecuteanoperation·*smap():mapalogicalfileblocktoaphysicaldevicesector·*bmap():mapalogicalfileblockt
7、oaphysicaldeviceblock·*rename():renameafileordirectory注:除了以上inode的接口,其它内核子系统还可以调用namei()函数查出与inode相关联的文件或目录。FileInterface:·*open()/release():openorclosethefile·*read()/write():readorwritetothefile·*select():waituntilthefileisinaparticularstate(readableorwritea
此文档下载收益归作者所有