文件系统其他功能.pptx

上传人:莉*** 文档编号:87373866 上传时间:2023-04-16 格式:PPTX 页数:38 大小:180.45KB
返回 下载 相关 举报
文件系统其他功能.pptx_第1页
第1页 / 共38页
文件系统其他功能.pptx_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《文件系统其他功能.pptx》由会员分享,可在线阅读,更多相关《文件系统其他功能.pptx(38页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、6.4.1 6.4.1 文件操作的实现文件操作的实现 文件系统提供给用户程序的一组系统调用,包括:建立、打开、关闭、撤销、读、写和控制,通过这些系统调用用户能获得文件系统的各种服务。第1页/共38页文件系统磁盘结构文件系统磁盘结构 1 超级块:占用1#号块 2 索引节点区:2#k+1#块 3 数据区:k+2#n#为数据块 两个重要数据结构:1 用户打开文件表:2 系统打开文件表:第2页/共38页文件系统内部结构文件系统内部结构主存i_numberi_counti_numberi_counti_addr40 i_numberi_counti_addr40f_flagf_countf_inode

2、file的指针fp 用户打开文件表files_struct文件描述符fd系统打开文件表file_struct一个打开文件的file活动inode活动inode主存活动inode表磁盘磁盘文件卷0#1#2#引导块超级块磁盘inode区磁盘信息区:目录块和数据块磁盘文件第3页/共38页目录项、目录项、inodeinode和数据块的关系和数据块的关系磁盘文件卷inode 文件名inode inode 文件名inode 磁盘文件0#1#2#数据块数据块目录块数据块数据块目录块引导块磁盘inode区磁盘信息区:目录块和数据块inodeinode超级块第4页/共38页文件系统调用文件系统调用 (1)(1)

3、(1)(1)文件的创建文件的创建 系统调用C语言格式为:int fd,mode;char*filenamep;fd=create(filenamep,mode);第5页/共38页文件系统调用文件系统调用 (2)(2)文件创建执行过程文件创建执行过程 为新文件分配索引节点和活动索引节点,并把索引节点编号与文件分量名组成新目录项,记到目录中。在新文件所对应的活动索引节点中置初值,如置存取权限i_mode,连接计数i_nlink等。分配用户打开文件表项和系统打开文件表项,置表项初值,读写位移f_offset清“0”。把各表项及文件对应的活动索引节点用指针连接起来,把文件描述字返回给调用者。第6页/共

4、38页文件系统调用文件系统调用 (3)(3)(2)(2)文件的删除文件的删除 删除把指定文件从所在的目录文件中除去。如果没有连接用户(i_link 为“1”),还要把文件占用的存储空间释放。删除系统调用形式为:unlink(filenamep)。在执行删除时,必须要求用户对该文件具有“写”操作权。第7页/共38页文件系统调用文件系统调用 (4)(4)(3)(3)文件的打开文件的打开(1)(1)调用方式为:int fd,mode;char*filenamep;fd=open(filenamep,mode);第8页/共38页文件系统调用文件系统调用 (5)(5)文件打开执行过程文件打开执行过程(2

5、)(2)检索目录,把它的外存索引节点复制到活动索引节点表。根据参数mode核对权限,如果非法,则这次打开失败。当“打开”合法时,为文件分配用户打开文件表项和系统打开文件表项,并为表项设置初值。通过指针建立这些表项与活动索引节点间的联系。把文件描述字,即用户打开文件表中相应文件表项的序号返回给调用者。第9页/共38页文件系统调用文件系统调用 (6)(6)(4)(4)文件的关闭文件的关闭(1)(1)调用方式为:int fd;close(fd);第10页/共38页文件系统调用文件系统调用 (7)(7)文件的关闭文件的关闭(2)(2)根据fd找到用户打开文件表项,再找到系统打开文件表项。释放用户打开文

6、件表项。把对应系统打开文件表项中的f_count减“1”,如果非“0”,说明还有进程共享这一表项,不用释放直接返回;否则释放表项。把活动索引节点中的i_count减“1”,若不为“0”,表明还有用户进程正在使用该文件,不用释放而直接返回,否则在把该活动索引节点中的内容复制回文件卷上的相应索引节点中后,释放该活动索引节点。第11页/共38页文件系统调用文件系统调用 (8)(8)(5)(5)读文件读文件(1)(1)调用的形式为:int nr,fd,count;char buf nr=read(fd,buf,count);第12页/共38页文件系统调用文件系统调用 (9)(9)读文件读文件(2)(2

7、)系统根据f_flag中的信息,检查读操作合法性,再根据当前位移量f_offset值,要求读出的字节数,及活动索引节点中i_addr指出的文件物理块存放地址,把相应的物理块读到缓冲区中,然后再送到bufp指向的用户主存区中。第13页/共38页文件系统调用文件系统调用 (10)(10)读文件读文件(3)(3)fdfpf_flag(r/w)f_count(1)i_mode(x)f_flag(r/w)f_count(1)f_flag(r/w)f_count(1)f_offset(0)f_inode读操作时文件数据结构的关系文件描述符用户打开文件表活动inode表物理块系统打开文件表i_nlink(1

8、)i_addr(40)第14页/共38页文件系统调用文件系统调用 (11)(11)(6)(6)写文件写文件 调用的形式为:nw=write(fd,buf,count);buf是信息传送的源地址,即把buf所指向的用户主存区中的信息,写入到文件中。第15页/共38页文件系统调用文件系统调用 (12)(12)(7)(7)文件的随机存取文件的随机存取(1)(1)系统调用的形式为:long lseek;long offset;int whence,fd;lseek(fd,offset,whence);第16页/共38页文件系统调用文件系统调用 (13)(13)文件的随机存取文件的随机存取(2)(2)文

9、件描述字fd必须指向一个用读或写方式打开的文件,当whence是“0”时,则f_offset被置为offset,当whence是“1”时,则f_offset被置为文件当前位置加上offset。第17页/共38页6.4.26.4.2文件共享文件共享 1文件的静态共享 2文件的动态共享 3文件的符号链接共享 第18页/共38页1 1文件的静态共享文件的静态共享(1)(1)系统调用形式为:chat*oldnamep,*newnamep;link(oldnamep,newnamep);检索目录找到oldnamep所指向文件的索引节点inode编号。再次检索目录找到newnamep所指文件的父目录文件,

10、并把已存在文件的索引节点inode编号与别名构成一个目录项,记入到该目录中去。把已存在文件索引节点inode的连接计数i_nlink加“1”。第19页/共38页Linux层次目录结构 Btestfile.ctty00devusrlibetchometty01binlibman tmppasswdvarfei1myfile.cgettyfei3fei2fei4fei5第20页/共38页文件的静态共享文件的静态共享(2)(2)链接实际上是共享已存在文件的索引节点inode,完成链接的系统调用:link(link(“/usr/fei1/myfile.c/usr/fei1/myfile.c”,”/us

11、r/fei2/myfile.c/usr/fei2/myfile.c”);link(link(“/usr/fei1/myfile.c/usr/fei1/myfile.c”,”/usr/include/testfile.c/usr/include/testfile.c”);执行后,三个路径名指的是同一个文件:/usr/fei1/myfile.c,/usr/fei2/myfile.c,/usr/include/testfile.c。第21页/共38页文件的静态共享文件的静态共享(3)(3)文件解除链接调用形式为:unlink(namep)解除链接与文件删除执行的是同一系统调用代码。删除文件是从文件主

12、角度讲的,解除文件连接是从共享文件的其他用户角度讲的。都要删去目录项,把i_nlink减“1”,不过,只有当i_nlink减为“0”时,才真正删除文件。第22页/共38页2 2文件的动态共享文件的动态共享(1)(1)文件动态共享是系统中不同的用户进程或同一用户的不同进程并发访问同一文件。这种共享关系只有当用户进程存在时才可能出现,一旦用户的进程消亡,其共享关系也就自动消失。文件的每次读写由一个读/写位移指针指出要读写的位置。现在的问题是:应让多个进程共用同一个读/写位移,还是各个进程具有各自的读写位移呢?第23页/共38页文件的动态共享文件的动态共享(2)(2)同一用户父、子进程协同完成任务,

13、使用同一读/写位移,同步地对文件进行操作。该位移指针宜放在相应文件的活动索引节点中。当用系统调用fork建立子进程时,父进程的pcb结构被复制到子进程的pcb结构中,使两个进程的打开文件表指向同一活动的索引节点,达到共享同一位移指针的目的。第24页/共38页文件的动态共享文件的动态共享(3)(3)系统打开文件表活动inode表file结构活动的inode驻留主存i_count=1f_offsetf_count=2f_inode使用同一位移指针的文件共享fpfp父进程的打开文件表 父进程fdfd子进程的打开文件表fd 子进程非驻留主存第25页/共38页文件的动态共享文件的动态共享(4)(4)多用

14、户共享文件,每个希望独立地读、写文件,这时不能只设置一个读写位移指针,须为每个用户进程分别设置一个读、写位移指针。位移指针应放在每个进程用户打开文件表的表目中。这样,当一个进程读、写文件,并修改位移指针时,另一个进程的位移指针不会随之改变,从而,使两个进程能独立地访问同一文件。第26页/共38页文件文件的动的动态共态共享享(5)(5)fda进程A的子进程驻留主存活动inode表活动inode表newfile活动的inodei_count=2 使用不同位移指针的文件共享fdafpafd进程B的打开文件表fdb 进程B非驻留主存进程A的打开文件表 进程Afpbf_offsetf_count=2f_

15、flag(r)f_inodef_offsetf_count=1f_flag(r/w)f_inode系统打开文件表进程A的子进程的打开文件表fpa第27页/共38页3 3文件的符号链接共享文件的符号链接共享 又称软链接,符号链接是一种只有文件名,不指向inode的文件符号链接共享文件的实现思想:用户A目录中形afilebfile,实现A的目录与B的文件的链接。其中只包含被链接文件bfile的路径名而不是它的inode号。第28页/共38页6.4.3 6.4.3 文件空间管理文件空间管理 辅存空间分配采用两种办法 连续分配:文件存放在辅存空间连续存储区中,在建立文件时,用户必须给出文件大小,然后,

16、查找到能满足的连续存储区供使用。非连续分配:一种方法是以块(扇区)为单位,扇区不一定要连续,同一文件的扇区按文件记录的逻辑次序用链指针连接或位示图指示。另一种方法是以簇为单位,簇是由若干个连续扇区组成的分配单位;实质上是连续分配和非连续分配的结合。各个簇可以用链指针、索引表,位示图来管理。第29页/共38页具体文件辅存空间管理方法具体文件辅存空间管理方法字位映象表(位示图)空闲区表空闲块链第30页/共38页UNIX/LinuxUNIX/Linux空闲块成组连接法空闲块成组连接法(1)(1)存储空间分成512字节一块。假定文件卷启用时共有可用文件438块,编号从12至349。每100块划分一组,

17、每组第一块登记下一组空闲块的盘物理块号和空闲总数。第31页/共38页 空闲块数395049121212空闲块数10015014951空闲块数100250249151空闲块数1000349251分配算法IF 空闲块数=1 THEN IF第一个单元=0 THEN 等待 ELSE 复制第一个单元对应块到专用块,并分配之ELSE 分配第(空闲块数)个单元对应块,空闲块数减1归还算法IF 空闲块数100 THEN 专用块的空闲块数加一,第(空闲块数)个单元置归还块号ELSE 复制专用块到归还块,专用块的空闲块数置一,第一单元置归还块号(磁盘)专用块(主存)专用块UNIX/Linux空闲块成组连接法(2)

18、第32页/共38页6.4.46.4.4主存映主存映射文件文件(1)(1)什么是主存映射文件系统提供两个新的系统调用,1)映射文件,有两个参数:一个文件名和一个虚拟地址,把一个文件映射到进程地址空间。2)移去映射文件,让文件与进程地址空间断开,并把映射文件的数据写回磁盘文件。第33页/共38页主存映主存映射文件文件(2)(2)123451234552413进程A虚存进程B虚存物理主存1 2 3 4 5磁盘文件第34页/共38页6.4.56.4.5虚拟文件系统虚拟文件系统(1)(1)虚拟文件系统要实现以下目标虚拟文件系统要实现以下目标同时支持多种文件系统;多个文件系统应与传统的单一文件系统没有区别

19、,在用户面前表现为一致的接口;提供通过网络共享文件的支持,访问远程结点上的文件系统应与访问本地结点的文件系统一致;可以开发出新的文件系统,以模块方式加入到操作系统中。第35页/共38页虚拟文件系统虚拟文件系统(2)(2)虚拟文件系统设计思想:虚拟文件系统设计思想:1 应用层:2 虚拟层:3 实现层:第36页/共38页虚拟文件系统虚拟文件系统(3)(3)VFS实质上是一种存在于主存中的,支持多种类型具体文件系统的运行环境,功能有:记录安装的文件系统类型,;建立设备与文件系统的联系;实现面向文件的通用操作;涉及特定文件系统的操作时映射到具体文件系统中去。第37页/共38页感谢您的观看。第38页/共38页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com