LINUX课件filesystem.ppt_第1页
LINUX课件filesystem.ppt_第2页
LINUX课件filesystem.ppt_第3页
LINUX课件filesystem.ppt_第4页
LINUX课件filesystem.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件系统,DOS的文件系统,Unix的文件系统,Linux的文件系统,当你把新买的一个硬盘装到电脑上之后,你接下来要做的事情是什么?,文件系统,分区和格式化,为什么一定要分区?,分区的理由:首先,分区可以方便我们对磁盘的使用,不同的分区可以建立不同的文件系统;其次,分区有安全性上的优势。因为一个分区毁坏了,另一个分区仍然可以使用;再次,分区有可靠性上的优势。一个分区的故障不影响另一个分区的运行。,这些都是好的理由,但都不是必须分区的理由。,必须分区的理由:必须分区的理由是对磁盘空间的使用。因为计算机的内存字长是有限的,而磁盘地址需要存放在内存字里面。因此,操作系统能够访问的磁盘地址数量是一个有限数。例如,早期的内存字长度为16位,操作系统能够表示的磁盘地址数为216,也就是65536个磁盘地址。假设磁盘数据块(每个地址)的大小为512字节,则操作系统能够访问的最大磁盘空间为33554432,即32MB的空间,文件系统,常用的文件物理分配方式如下:连续区分配,优点:(1)顺序访问容易(2)顺序访问速度快;文件访问的速度是几种存储空间分配方式中最高的一种。缺点:要求有连续的存储空间必须事先知道文件的长度不宜用来存放用户文件、数据库文件等经常被修改的文件。,隐式链接在文件目录的每个目录项中,都必须含有指向链接文件第一个盘块和最后一个盘块的指针,顺序访问(随机访问低效)可靠性差为了提高检索速度和指针所占的存储空间,可将几个盘块组成一个簇(cluster),显式链接用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,该表在整个磁盘仅一张,即FAT。,文件分配表,FAT技术,Microsoft在其早期的操作系统中采用的是FAT(FileAllocationTable,文件分配表)文件系统.早期MS-DOS操作系统所使用的是FAT12文件系统,在每个分区中都配有两张文件分配表FAT1和FAT2,在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB(FileControlBlock,文件控制块,即目录项)中。,MS-DOS的文件物理结构,对于1.2MB的软盘,每个盘块的大小为512B,在每个FAT中共含有2.4K个表项,由于每个FAT表项占12位,故FAT表占用3.6KB的存储空间,现在我们来计算以盘块为分配单位时,所允许的最大磁盘容量。由于每个FAT表项为12位,因此,在FAT表中最多允许有4096个表项,如果采用以盘块作为基本分配单位,每个盘块(也称扇区)的大小一般是512字节,那么,每个磁盘分区的容量为2MB(4096512B)。同时,一个物理磁盘支持4个逻辑磁盘分区,所以相应的磁盘最大容量仅为8MB。这对最早时期的硬盘还可应付,但很快磁盘的容量就超过了8MB,FAT12是否还可继续用呢,回答虽是肯定的,但需要引入一个新的分配单位簇.,FAT技术,簇的概念为了适应磁盘容量不断增大的需要,在进行盘块分配时,不再以盘块而是以簇(cluster)为基本单位。簇是一组连续的扇区,在FAT中它是作为一个虚拟扇区,簇的大小一般是2n(n为整数)个盘块,在MS-DOS的实际运用中,簇的容量可以仅有一个扇区(512B)、两个扇区(1KB)、四个扇区(2KB)、八个扇区(4KB)等。一个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇仅有一个扇区时,磁盘的最大容量为8MB;当一个簇包含两个扇区时,磁盘的最大容量可以达到16MB;当一个簇包含了八个扇区时,磁盘的最大容量便可达到64MB。,FAT技术,由上所述可以看出,以簇作为基本的分配单位所带来的最主要的好处是,能适应磁盘容量不断增大的情况。值得注意的是,使用簇作为基本的分配单位虽可减少FAT表中的项数(在相同的磁盘容量下,FAT表的项数是与簇的大小成反比的)。这一方面会使FAT表占用更少的存储空间,并减少访问FAT表的存取开销,提高文件系统的效率;但这也会造成更大的簇内零头(它与存储器管理中的页内零头相似)。,FAT技术,FAT12存在的问题尽管FAT12曾是一个不错的文件系统,但毕竟已老化,已不能满足操作系统发展的需要,其表现出来的主要问题是,对所允许的磁盘容量存在着严重的限制,通常只能是数十兆字节,虽然可以用继续增加簇的大小来提高所允许的最大磁盘容量,但随着支持的硬盘容量的增加,相应的簇内碎片也将随之成倍地增加。此外,它只能支持8+3格式的文件名。,FAT技术,FAT16对FAT12所存在的问题进行简单的分析即可看出,其根本原因在于,FAT12表最多只允许4096个表项,亦即最多只能将一个磁盘分区分为4096个簇。这样,随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。由此可以得出解决方法,那就是增加FAT表的表项数,亦即应增加FAT表的宽度,如果我们将FAT表的宽度增至16位,最大表项数将增至65536个,此时便能将一个磁盘分区分为65536(216)个簇。我们把具有16位表宽的FAT表称为FAT16。在FAT16的每个簇中可以有的盘块数为4、8、16、32直到64,由此得出FAT16可以管理的最大分区空间为21664512=2048MB。,FAT技术,由上述分析不难看出,FAT16对FAT12的局限性有所改善,但改善很有限。当磁盘容量迅速增加时,如果再继续使用FAT16,由此所形成的簇内碎片所造成的浪费也越大。例如,当要求磁盘分区的大小为8GB时,则每个簇的大小达到128KB,这意味着内部零头最大可达到128KB。一般而言,对于14GB的硬盘来说,大约会浪费1020的空间。为了解决这一问题,微软推出了FAT32。由于FAT12和FAT16都不支持长文件名,为了满足用户的需求,Windows95系统对FAT16进行了扩展,通过一个长文件名占用多个目录项的方法,使文件名的长度可以达到255个字符,这种扩展的FAT16也成为VFAT。,FAT技术,FAT32如同存储器管理中的分页管理,所选择的页面越大,可能造成的页内零头也会越大。为减少页内零头就应该选择适当大小的页面。在这里,为了减小磁盘的簇内零头,也就应当选择适当大小的簇。问题是FAT16表的长度只有65535项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内零头,也就应当增加FAT表的长度。为此,需要再增加FAT表的宽度,这样也就由FAT16演变为FAT32。当然,FAT32也有一些不足,微软后来专门为WindowsNT开发了一个全新的文件系统NTFS(NewTechnologyFileSystem).,FAT技术,FAT32是FAT系列文件系统的最后一个产品。每一簇在FAT表中的表项占据4字节(232),FAT表可以表示4294967296项,即FAT32允许管理比FAT16更多的簇。这样就允许在FAT32中采用较小的簇,FAT32的每个簇都固定为4KB,即每簇用8个盘块代替FAT16的64个盘块,每个盘块仍为512字节,FAT32分区格式可以管理的单个最大磁盘空间大到4KB232=2TB。三种FAT类型的最大分区以及所对应的块的大小如图所示。,FAT技术,簇的大小在一些磁盘管理工具如分区魔术师(PartitionMagic)中可以调整簇的大小。从节约磁盘空间的角度来说簇越小越好,但是从系统的存取速度上来看是越大越好(一定范围内),要是全是大文件的话用大簇比较好(比如可以专门用一个分区来存放电影,这个分区可以用大簇),否则就用默认就可以了。,FAT技术,UNIX文件系统是UNIX成功的关键。其特点主要表现为以下几点:目录结构采用树形层次结构可安装拆卸的文件系统文件是无结构的字符流式文件把外部设备和文件目录作为文件处理。,UNIX文件系统特点,UNIX文件系统特点,目录(directory)的实现目录的功能是实现文件名到文件地址的映射。目录中的一项称为目录项(dentry,directoryentry)。所以,文件名和地址这两项在目录中是必不可少的。而文件的其他属性是否放到目录中,不同的操作系统有不同的做法。下图是一个MS-DOS的目录项,它总共32个字节。,目录,属性,保留,时间,日期,第一块号,长度,目录的实现UNIX中采用的目录结构非常简单,如图,每个目录项占16个字节,其中只包含文件名及其索引节点号。有关文件类型、长度、时间、所有者和磁盘地址等信息都放到索引节点(inode,indexnode)中,inode的引入为文件共享提供了便利。,目录,索引节点号,索引节点,hello.c的内容,目录项,磁盘驱动器,注意:目录也是一个文件,可以像普通文件一样通过less命令查看,链接的目的是为了文件共享。可以用链接命令ln(Link)对一个已存在的文件再建立一个新的链接,而不复制文件的内容硬链接(hardlink):让一个文件对应一个或多个文件名,或者说把我们使用的文件名和文件系统使用的节点号链接起来,这些文件名可以在同一目录或不同目录软链接(也叫符号链接,symboliclink):是一种特殊的文件,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件,软链接和硬链接,在Unix/Linux系统中,每个文件有一个唯一的数字标示,称为索引节点号,用来唯一标示物理上的一个文件。硬链接lnsourcefilelinkfile对一个现存的文件a,执行lnab操作,即建立了一个硬链接b,其实质是a和b指向同一个物理文件,它们的索引节点号相同,也就是多个逻辑文件同时指向一个物理文件,删除任何一个逻辑文件,只是将索引节点中的文件链接数减一,直到减为零,才会删除物理文件。硬链接其实就是为物理文件增加一个逻辑文件名。硬链接的缺点:不能跨文件系统建立硬链接;不能对目录建立硬链接。当文件所有者把本地文件删除了,别人却还是可以通过另一个连接点访问到该文件。,链接文件,软链接(又称符号链接):为了克服硬链接的上述缺点,产生了软链接。用法:lnssourcefilelinkfile软链接相当于windows下的快捷方式,其只包含目标文件的路径,当目标文件被删除后,就不能通过软链接访问文件了。可以跨文件系统建立符号链接,也可以对目录创建符号链接,甚至可以对一个不存在的文件创建符号链接。,链接文件,一行表示一个目录项,.,当一个进程执行以下代码:fd1=open(“/etc/passwd”,O_RDONLY);fd2=open(“local”,O_RDONLY);fd3=open(“/etc/passwd”,O_WRONLY);,文件的打开,磁盘驱动器,当第二个进程执行以下代码:fd1=open(“/etc/passwd”,O_RDONLY);fd2=open(“private”,O_RDONLY);,文件的打开,磁盘驱动器,目录,索引节点中的地址明细表采用混合索引式文件结构,Linux最初采用Minix的文件系统,其大小限于64MB,文件名长度也限于14个字节Linux经过一段时间的改进和发展,特别是吸取了Unix文件系统的经验,最后形成了现在的Ext3(ExtendedFileSystem)文件系统为了支持其他各种不同的文件系统,Linux提供了一种统一的框架,就是所谓的虚拟文件系统转换(VirtualFilesystemSwitch),简称虚拟文件系统(VFS)。,Linux文件系统,虚拟文件系统的引入,超级块(superblock)对象:存放系统中已安装文件系统的有关信息索引节点(inode)对象:存放关于具体文件的一般信息目录项(dentry)对象:存放目录项与对应文件进行链接的信息文件(file)对象:存放打开文件与进程之间进行交互的有关信息,VFS中的数据结构,超级块用来描述整个文件系统的信息。每个具体的文件系统都有各自的超级块VFS超级块是各种具体文件系统在安装时建立的,并在卸载时被自动删除,其数据结构是super_block所有超级块对象以双向环形链表的形式链接在一起与超级块关联的方法就是超级块操作表。这些操作是由数据结构super_operations来描述,VFS超级块数据结构,structsuper_blockkdev_ts_dev;/*具体文件系统的块设备标识符*/unsignedlongs_blocksize;/*以字节为单位数据块的大小*/unsignedchars_blocksize_bits;/*块大小的值占用的位数*/structlist_heads_list;/*指向超级块链表的指针*/structfile_system_type*s_type;/*指向文件系统的file_system_type数据结构的指针*/structsuper_operations*s_op;/*指向具体文件系统的用于超级块操作的函数集合*/u;/*一个共用体,其成员是各种文件系统的fsname_sb_info数据结构*/,文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构inode中。在同一个文件系统中,每个索引节点号都是唯一的inode中有两个设备号,i_dev(常规文件的设备号)和i_rdev(某一设备的设备号),VFS的索引节点,structinodestructlist_headi_hash;*指向哈希链表的指针*/structlist_headi_list;/*指向索引节点链表的指针*/structlist_headi_dentry;/*指向目录项链表的指针*/unsignedlongi_ino;/*索引节点号*/kdev_ti_dev;/*设备标识号*/umode_ti_mode;/*文件的类型与访问权限*/kdev_ti_rdev;/*实际设备标识号*/uid_ti_uid;/*文件拥有者标识号*/gid_ti_gid/*文件拥有者所在组的标识号*/structinode_operations*i_op;/*指向对该节点进行操作的一组函数*/structsuper_block*i_sb;/*指向该文件系统超级块的指针*/atomic_ti_count;/*当前使用该节点的进程数。*/structfile_operations*i_fop;/*指向文件操作的指针*/structvm_area_struct*i_op/*指向对文件进行映射所使用的虚存区指针*/structpage*i_page/*指向页结构的指针*/unsignedlongi_state;/*索引节点的状态标志*/unsignedinti_flags;/*文件系统的安装标志*/union/*联合体结构,其成员指向具体文件系统的inode结构*/structminix_inode_infominix_i;structext2_inode_infoext2_i;,每个文件除了有一个索引节点inode数据结构外,还有一个目录项dentry数据结构。dentry结构代表的是逻辑意义上的文件,描述的是文件逻辑上的属性,目录项对象在磁盘上并没有对应的映像inode结构代表的是物理意义上的文件,记录的是物理上的属性,对于一个具体的文件系统,其inode结构在磁盘上就有对应的映像一个索引节点对象可能对应多个目录项对象,目录项对象,structdentryatomic_td_count;/*目录项引用计数器*/unsignedintd_flags;/*目录项标志*/structinode*d_inode;/*与文件名关联的索引节点*/structdentry*d_parent;/*父目录的目录项*/structlist_headd_hash;/*目录项形成的哈希表*/structlist_headd_lru;/*未使用的LRU链表*/structlist_headd_child;/*父目录的子目录项所形成的链表*/structlist_headd_subdirs;/*该目录项的子目录所形成的链表*/structlist_headd_alias;/*索引节点别名的链表*/intd_mounted;/*目录项的安装点*/structqstrd_name;/*目录项名(可快速查找)*/structdentry_operations*d_op;/*操作目录项的函数*/structsuper_block*d_sb;/*目录项树的根(即文件的超级块)*/unsignedlongd_vfs_flags;void*d_fsdata;/*具体文件系统的数据*/unsignedchard_inameDNAME_INLINE_LEN;/*短文件名*/;,进程是通过文件描述符来访问文件的Linux中专门用了一个file文件对象来保存打开文件的文件位置,这个对象称为打开的文件描述(openfiledescription)file结构中主要保存了文件位置,此外,还把指向该文件索引节点的指针也放在其中。file结构形成一个双链表,称为系统打开文件表。,与进程相关的文件结构文件对象,文件描述符是用来描述打开的文件的。每个进程用一个files_struct结构来记录文件描述符的使用情况,这个files_struct结构称为用户打开文件表,它是进程的私有数据,与进程相关的文件结构用户打开文件表,fs_struct结构描述进程与文件系统的关系,与进程相关的文件结构fs_struct结构,structfs_structatomic_tcount;rwlock_tlock;intumask;structdentry*root,*pwd,*altroot;structvfsmount*rootmnt,*pwdmnt,*altrootmnt;,count域表示共享同一fs_struct表的进程数目。umask域由umask()系统调用使用,用于为新创建的文件设置初始文件许可权。fs_struct中的dentry结构是对一个目录项的描述,root、pwd及altroot三个指针都指向这个结构,超级块是对一个文件系统的描述;索引节点是对一个文件物理属性的描述;而目录项是对一个文件逻辑属性的描述一个进程所处的位置是由fs_struct来描述的,而一个进程(或用户)打开的文件是由files_struct来描述的,而整个系统所打开的文件是由file结构来描述主要数据结构间关系的图示,主要数据结构间的关系,open()系统调用就是打开文件,它返回一个文件描述符。所谓打开文件实质上是在进程与文件之间建立起一种连接,而“文件描述符”唯一地标识着这样一个连接打开文件,还意味着将目标文件的索引节点从磁盘载入内存,并进行初始化。打开文件后,文件相关的“上下文”、索引节点、目录对象等都已经生成,,文件的打开,安装文件系统mount,将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为安装(mount)或挂载。把该子目录称为安

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论