操作系统 文件系统课件.ppt

上传人:小飞机 文档编号:1455168 上传时间:2022-11-27 格式:PPT 页数:120 大小:1.07MB
返回 下载 相关 举报
操作系统 文件系统课件.ppt_第1页
第1页 / 共120页
操作系统 文件系统课件.ppt_第2页
第2页 / 共120页
操作系统 文件系统课件.ppt_第3页
第3页 / 共120页
操作系统 文件系统课件.ppt_第4页
第4页 / 共120页
操作系统 文件系统课件.ppt_第5页
第5页 / 共120页
点击查看更多>>
资源描述

《操作系统 文件系统课件.ppt》由会员分享,可在线阅读,更多相关《操作系统 文件系统课件.ppt(120页珍藏版)》请在三一办公上搜索。

1、1,文件系统,2,本章教学目标,理解文件的概念理解文件目录的概念和组织方式理解文件的逻辑结构和组织方式掌握文件的物理结构和组织方式理解文件空间管理的方法理解Linux文件系统中文件系统调用,文件系统的问题,文件逻辑上的组织方式? 字节流形式? 固定记录长度? 可变记录长度文件的访问模式 顺序访问? 随机访问?众多的文件如何有序地进行组织和管理? 文件目录结构文件如何进行共享和保护? 访问控制权限文件在物理磁盘上如何存储?如何分配物理磁盘的空间? 给定文件名和逻辑记录号或逻辑块号,如何转换到文件的物理位置?,3,4,大纲,文件与文件系统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空

2、间管理方法文件系统调用的实现,5,文件系统,文件系统的功能: 文件的按名存取 文件目录的建立和维护 文件的查找和定位 文件存储空间的分配和管理 提供文件的存取方法和文件存储结构 实现文件的共享、保护和保密 提供一组易用的文件操作和命令 提供与设备管理交互的统一接口,6,文件的概念,文件是操作系统对所存储的信息对外提供的统一逻辑视图文件由是由文件名标识的一组存储在二级存储设备上的信息的集合从用户的角度,文件是逻辑二级存储设备最小的分配单元用户按名存取文件,操作系统负责文件名到物理存储位置的映射文件是由位串、连续的字节、行、或记录构成的集合,文件内容的含义取决于文件创建者,7,文件类型,按用途分系

3、统文件库文件用户文件按保护级别分只读文件读写文件不保护文件按数据类型分源程序文件目标文件可执行文件,8,UNIX/Linux的文件类型,普通文件ASCII文件二进制文件目录文件 由文件目录所构成的用来维护文件系统结构的系统文件特别文件 指各类外部设备文件 将所有I/O设备统一在文件系统下,9,文件名与文件类型,各个操作系统的文件命名规则略有不同文件名一般由文件名称和扩展名称组成,两者中间以”.”分割,如”myfile.doc, command.exe”文件名用于识别文件扩展名用于区分文件类型,10,文件名,/,tmp,etc,bin,dmr,wm4,foo,who,date,usr,.prof

4、ile,foowhodate.profile,由字符(除了/)构成的字符串,有可能是大小写敏感的,11,12,文件属性,文件名 唯一用户可读的信息文件标识 文件系统内的唯一标识类型 普通文件、目录文件、设备文件位置指向文件的位置,包括设备以及设备上的位置大小 当前长度和允许的最大长度权限访问控制信息,例如谁可以读、写、执行文件等时间文件的创建时间,最后修改时间,最后使用时间等,13,文件属性,与文件相关的所有信息保存在文件目录结构中文件目录通常包含文件名和文件标识两部分文件标识用于定位其它属性,14,文件操作,创建文件(create)从文件系统中找到存放文件的空间(空间分配问题) 在目录中为该

5、文件添加新目录项写文件(write) 给出文件名和需要写入文件的信息 文件系统查找目录,从文件目录项中找到文件的位置 文件系统保存了一个写指针,指出下一个写操作开始的位置读文件(read)给出文件名以及内存地址,用于存放读出的下一个文件块文件系统查找目录,找到对应的文件目录项系统保存一个读指针,指出下一个读操作开始的位置读指针每个进程都不一样,15,文件操作(cont),重定位(repositioning, seek)查找文件目录,找到对应的目录项,将当前文件位置指针修改为给定的值 文件重定位并不涉及真正的I/O操作删除文件(delete) 查找文件目录,找到给定文件名对应的目录项 释放文件所

6、占用的所有空间 删除对应的目录项清空文件 删除文件内容,但保留其属性(长度除外),16,文件操作(cont),追加(appending)重命名(renaming)拷贝(copy)获取和修改文件属性(get/set attribute),17,文件存取方法,顺序存取 存取操作在上次的基础上进行 系统设置读写指针,指向要读出或写入的字节位置或记录位置。直接存取 快速地以任意次序直接读写某条记录,对文件读/写的次序没有任何限制索引存取基于索引文件的存取方法用户提供记录名或记录键,按名搜索,找到所需要的记录,索引存取(续),例如,一个零售商品价格的文件每条记录包含两个部分 UPC(商品代码)-10字符

7、长 价格6个字符存储假设有1200000条记录则文件大小为16*1200000=19.2M如何快速地读取商品代码为”2353765401”的价格?,18,索引存取(续),假设物理块大小为1024字节,则每个块能存放1024/16=64个记录一共需要18750个物理块如果文件记录按无序的方式存放,则平均需要检索600000条记录才能找到如果文件记录按顺序存放,并且为文件建立索引,索引的下标表示逻辑块号,而索引表项的值存放的是该逻辑块里第一条记录的UPC,19,20,2353765401,64条记录,索引,21,22,大纲,文件与文件系统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空

8、间管理方法文件系统调用的实现,23,文件控制块(FCB),文件系统为每个文件建立的唯一的管理数据结构,一般包括:文件标识和控制信息文件名、用户名、文件存取权限、访问控制权限、文件类型等; 文件逻辑结构信息记录类型、记录个数、记录长度、成组因子等; 文件物理结构信息文件所在设备名、文件物理结构类型、记录存放在辅存中的块号或文件信息首块盘块号,文件索引的位置等; 文件使用信息共享文件的进程数,文件修改情况,文件最大长度和当前大小 文件管理信息文件建立日期,最近修改日期,最近访问日期等;,24,FCB,基于FCB可以方便地实现文件的按名存取创建文件时,为其建立一个FCB,用来记录文件的属性信息存取此

9、文件时,先找到其FCB,再找到文件信息盘块号或首块物理位置为了加快文件的查找速度,通常将FCB集中起来进行管理,组成文件目录,25,文件目录,文件目录包含两种目录项: 文件的FCB 描述子目录的目录文件的FCB全部由目录项构成的文件称为目录文件目录项的格式按统一标准定义目录文件至少包含两个目录项当前目录项”.” 父目录项”.”文件目录的基本功能将文件名转换成此文件信息在磁盘上的物理位置有效地组织和管理文件,26,目录,/,tmp,etc,bin,dmr,wm4,foo,who,date,usr,.profile,etcusrdmrbin,27,文件路径,/,tmp,etc,bin,dmr,wm

10、4,foo,who,date,usr,.profile,/usr/wm4/.profile,由从根目录开始沿着目录结构一直到文件的目录项和文件名顺序组合而成,28,工作目录,/,tmp,etc,bin,dmr,wm4,foo,who,date,usr,.profile,默认情况下文件名所处的目录,29,相对路径,/,tmp,etc,bin,dmr,wm4,foo,who,date,usr,.profile,.profile./.profile./wm4/.profile,相对于当前工作目录的路径,. refers to parent directory. refers to current d

11、irectory,30,目录结构,单级目录结构两级目录结构树形目录结构DAG结构图结构,31,单级目录结构,所有用户都共用一个目录缺点:名字易于重复用户没有独立的目录,不利于共享和保护,32,两级目录结构,33,纯树形目录结构,目录可以有任意多的层次目录可以包含子目录,也可以包含文件每个文件只有一个父目录文件共享较为困难,34,DAG目录结构,一个文件可以有多个父目录能较方便地实现文件的共享目录结构的维护较复杂需要为每个文件维护一个引用计数,以记录文件的父目录个数,仅当引用计数值为1时,删除操作才真正删除文件,35,DAG目录结构示意图,36,文件共享的实现方式,LINUXHard linkS

12、ymbolic linkWindows快捷方式,37,Hard Link,/,bob,alice,home,bin,xx,yy,当前工作目录为bob$ln ./alice/xx yy,38,Symbolic Link,/,bob,alice,home,bin,xx,yy,/home/alice/xx,当前工作目录为bob$ ln s ./alice/xx yy,39,任意图结构,目录可能包含环查找比较困难,40,Linux/Unix的目录项结构,将文件名和文件属性分离,其它信息单独组成一个数据结构,称为索引节点inode, 其位置由inode号标识每个文件或子目录都在父目录文件中有一条目录项每

13、个目录项包含两个字段 文件名 i-node号:指出存放文件属性信息的inode节点号每个磁盘块可以存放几十个基本目录项,41,I-node 结构,mode,owner,timestamp,Size,Block count,Direct blocks0-9,Double indirect,Triple indirect,Single indirect,Data block,Data block,Data block,Indirect block,.,Data block,Data block,Data block,.,Indirect block,Indirect block,Indirect

14、block,.,Reference count,42,inode,Unix/Linux操作系统对由文件目录项组成的目录文件和普通文件同等对待,均存放在磁盘中文件系统中的每个文件都有一个磁盘inode与之对应,这些inode存放在磁盘的inode区找到文件的inode就能找到文件在物理磁盘中的存放位置,43,目录项、inode和数据块的关系,44,引导块位于文件卷最开始的第一扇区,该512字节是文件系统的引导代码,为根文件系统所特有,其他文件系统这512字节为空超级块 位于文件系统第二扇区,紧跟引导块之后,用于描述本文件系统的结构和管理信息。如inode节点所占盘块数、文件数据所占的盘块数等磁盘

15、inode区 位于超级块之后,长度由超级块中的inode所占盘块数决定 每个inode用于描述文件属性中除文件名之外的属性,包括文件的长度、属主、物理数据块号等;数据块分为目录文件数据块和普通文件数据块 目录文件数据块中存放的是目录项的集合 普通文件数据块存放的是文件数据,45,Linux中文件目录的检索,46,大纲,文件与文件系统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空间管理方法文件系统调用的实现,47,文件组织与数据存储,逻辑结构 从用户的观点出发,研究用户概念中的抽象的信息组织方式 用户可以观察到的、可加以处理的数据集合 相关数据的集合称为逻辑文件物理结构逻辑文件在物

16、理存储空间中的存放方法和组织关系物理文件被看成是相关物理块的集合主存与物理存储器进行信息交换的物理单位是块,48,文件的逻辑结构,流式文件 又称为无结构文件 文件内的数据不再分记录,而是看成字节流 也可以看作是记录就为1个字节的记录式文件大多数现代操作系统如WINDOWS, UNIX, LINUX只提供流式文件由应用程序自行根据字节重构对应用有意义的记录,49,文件的逻辑结构,记录式文件文件是一组记录的集合例如职工的工资记录构成工资文件从操作系统的角度看,逻辑记录是文件内独立的最小信息单位,每次总是为使用者存储、检索或更新一条逻辑记录记录式文件的记录组织和使用方法 记录式顺序文件记录顺序编号,

17、并被顺序访问 记录式索引文件用索引表根据记录键快速查找到相应的记录在文件中的位置,50,成组与分解,逻辑记录与物理块之间的对应关系一条逻辑记录被存放到物理存储器时,可能会占用一块或多块,或者一个物理块可以包含多条逻辑记录成组:若干逻辑记录合并成一组,写入一块,每块中的逻辑记录的个数称为成块因子分解:从读进内存缓冲区的物理块中分解出逻辑记录的过程,51,记录成组与分解的处理过程,52,记录格式,记录格式就是记录内数据的排列方式记录格式分为: 定长记录 所有逻辑记录具有相同的长度 记录中的所有数据项的相对位置固定 变长记录 逻辑记录长度不等 每条逻辑记录的长度在处理之前能预先确定 跨块记录 记录长

18、度大于块长,53,记录键,能用于区别同一文件中其它逻辑记录的数据项,也称为关键字或键能唯一标识某条逻辑记录的键称为主键,54,大纲,文件与文件系统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空间管理方法文件系统调用的实现,55,文件的物理结构,文件系统需要提供将逻辑文件存储到物理存储设备上去的组织方式 逻辑上连续的文件是否需要连续存放在物理存储介质上? 文件的存取速度?两类方法 计算法通过对记录键进行计算,从而转换成对应的物理地址 指针法设置专门的指针,指明相应记录的物理地址或表达各个记录之间的关联,56,文件的物理结构,具体的文件物理结构和组织方法 顺序文件/连续文件 连接文件

19、 FAT 索引文件,57,顺序文件/连续文件,文件中逻辑上连续的信息存放到物理介质的相邻物理块上形成顺序结构文件控制块FCB中保存第一个物理块的地址和占用的总物理块数可以对顺序文件按记录进行排序,成为有序的顺序文件优点:顺序存取和随机存取时速度较快缺点 建立文件之前需要确定文件的长度,以分配存储空间 修改、插入和添加文件记录较为困难 对于变长记录的处理很困难 会产生外部碎片,58,59,连接文件,文件在物理上被组织成物理块的链表,分配给一个文件的物理块在空间上可能是分散的文件控制块FCB给出第一个物理块的地址每个块的连接字指出文件的下一个物理块位置当连接字内容为某个特殊值时,表示文件至本块结束

20、,60,61,连接文件(cont),优点:文件的逻辑顺序独立于存储空间的物理块顺序 易于记录的增、删、改 易于文件扩充缺点 仅适宜于顺序存取 随机存取速度慢,需要从头开始查找 连接字与数据混放,破坏了数据块的完整性 连接字需要占用额外的空间,62,FAT,连接文件的一个变种,用于克服连接字和数据混放的缺点,提高随机存取的速度把连接指针从数据块中分离出来,单独建立一个指针数组PTRSn, n为组成磁盘连接文件物理块的总块数每个PTRSi对应于一个物理块i, 如果物理块j在文件中紧跟物理块i之后,则PTRSi=j文件控制块FCB存放文件第一个物理块的块号指针数组保存在磁盘的一个专门区域,如0磁道的

21、前k个块为了缩短定位文件信息块所需要的时间,可以把这些指针连续盘块装进主存或高速缓存。假设4字节记录磁盘块号,块大小为1K,则当k=100时,可以记录256100=25600个数据块的磁盘块号,即25,600,000字节大小的存储空间,63,64,索引文件,为每个文件建立索引,给出逻辑记录或逻辑块号到物理块号的映射索引表可以存放在文件控制块中,也可以让索引表作为物理块单独驻留在磁盘的任意位置,而FCB中仅包含索引表的地址优点 随机存储速度快 便于信息的增、删、改缺点 索引表的空间开销,65,66,索引文件(cont),当记录数目很多/文件很大时,索引表本身要占用很多物理块,则查找某个记录键所对

22、应的索引项时,可能需要查找多个物理块若索引表占用n块,则平均要载入n/2个物理块,才能找到所需记录的物理地址可以建立索引的索引,称为二级索引;或索引的索引的索引,即三级索引,67,UNIX/LINUX中的多级索引结构,每个FCB中规定了13个索引项前10项为直接索引11、12项为一次间接寻址13项为二次间接寻址小文件无需二次索引,超大文件可以用3级索引,文件最大可以到11亿字节,68,UNIX/LINUX中的多重索引结构,69,70,大纲,文件与文件系统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空间管理方法文件系统调用的实现,71,文件空间管理的作用,辅助存储空间的有效分配和释

23、放创建和扩充文件时,决定分配哪些磁盘块是很重要的,这会影响磁盘访问次数删除文件和缩短文件时,需要回收磁盘块随着分配和回收,可能会出现碎片,72,常用磁盘空间管理方法,位示图空闲区表空闲块链成组空闲块链,73,位示图法,磁盘空间由固定大小的块组成,可方便地使用位示图管理。每一字位对应于一个物理块,字位值为1表示被占用,0表示空闲。优点:每个盘块仅需一比特来标识若盘块长为1KB,则位示图开销为0.012%,74,空闲区表法,常常用于连续文件,将空闲区存储块的位置及其连续空闲的块数构成一张表类似于内存管理中的连续存储管理分配时,依次扫描空闲区表,寻找合适的空闲块并修改登记项;删除文件并释放空闲区时,

24、把空闲位置及连续空闲区长度填入空闲区表,出现邻接的空闲区时,还需执行合并操作搜索算法:最先适应最佳适应最坏适应等,75,空闲块链,把所有空闲块连接在一起,系统保持指针指向第一个空闲块,每一空闲块中包含指向下一个空闲块的指针申请一个空闲块时,从链头取一块并修改系统指针;删除时释放占用块,使其成为空闲块并挂到空闲链上,76,UNIX/Linux空闲块成组连接法(1),存储空间分成512字节一块。假定文件卷启用时共有可用空闲块338块,编号从12至349。每100块划分一组,每组第一块登记下一组空闲块的物理盘块号和空闲总数。,77,UNIX/Linux空闲块成组连接法(2),78,大纲,文件与文件系

25、统文件目录的组织方式文件的逻辑组织方式文件的物理组织方式文件空间管理方法文件系统调用的实现,79,文件系统调用的实现,创建和删除文件打开和关闭文件读/写文件文件共享主存映射文件,80,文件系统内部结构,主存,用户打开文件表files_struct,文件描述符fd,系统打开文件表file_struct,一个打开文件的file,活动inode,活动inode,主存活动inode表,81,主存活动inode表,磁盘inode记录文件的属性和相关信息,文件访问过程会频繁地用到它,因此频繁地访问辅存极不经济Linux/Unix在内核开辟一张专用表,用于存储经常访问的磁盘inode,以及一些动态信息,称为

26、主存inode表/活跃inode表,82,主存活动inode表,主存inode表包含: 磁盘inode的所有信息,如物理块地址 主存inode的状态 Inode是否上锁 Inode数据是否改变 文件数据是否改变 文件系统的逻辑设备号. inode号 引用数:i_count,83,系统打开文件表,内核有一个系统打开文件表,用于存放文件访问信息 系统打开文件表中的每一个表项包括: 指向主存inode表的指针 下一次读/写文件的位移 打开进程的访问权限 引用计数:f_count,84,用户打开文件表,每个进程有一个用户文件描述符表,用于描述所有打开的文件 每个用户文件打开表中的表项都指向一个内核系统

27、文件打开表中的表项三个特殊的表项 Entry 0: 标准输入 Entry 1: 标准输出 Entry 2: 标准错误输出,85,文件系统调用 -文件的创建,系统调用C语言格式为: int fd, mode; char *filenamep; fd = create (filenamep, mode); 创建兼有打开功能,86,文件系统调用 -文件的创建, 为新文件分配索引节点和活动索引节点,并把索引节点编号与文件分量名组成新目录项,记到目录中。 在新文件所对应的活动索引节点中置初值,如置存取权限i_mode,连接计数i_nlink等。 分配用户打开文件表项和系统打开文件表项,置系统打开文件表项

28、初值,如读写位移f_offset清0。 把各表项及文件对应的活动索引节点用指针连接起来,把文件描述字fd返回给调用者。,87,文件系统调用 -文件的删除,删除的任务:把指定文件从所在的目录文件中去除。如果没有连接用户(i_link 为1),还要把文件占用的存储空间释放。系统调用形式为:unlink (filenamep)。在执行删除时,必须要求用户对该文件具有“写”操作权。,88,文件系统调用 -文件的打开,调用方式为: int fd, mode; char * filenamep; fd = open (filenamep, mode);,89,文件系统调用 -文件的打开, 检索目录,把它的

29、外存索引节点复制到活动索引节点表。根据参数mode核对权限,如果非法,则这次打开失败。 当“打开”合法时,为文件分配用户打开文件表项和系统打开文件表项,并为系统打开文件表的表项设置初值。通过指针建立这些表项与活动索引节点间的联系。把文件描述字,即用户打开文件表中相应文件表项的序号返回给调用者。,90,文件系统调用 -文件的打开,如果执行open()时,其它用户已经打开了同一文件,则活动inode表中已经有此文件的inode,则无需执行第步的inode复制工作但需要将活动inode中的i_count加1i_count反映通过不同的系统打开文件表项来共享同一个活动inode的进程数目是执行文件关闭

30、操作时,能否释放活动inode节点的依据。,91,#include #include #include main() int fd1, fd2, fd3; printf(Before open .n); fd1 = open( /etc/passwd, O_RDONLY); fd2 = open(./openEx1.c, O_WRONLY); fd3 = open( /etc/passwd, O_RDONLY); printf(fd1=%d fd2=%d fd3=%d n, fd1, fd2, fd3);,$ cc openEx1.c -o openEx1$ openEx1Before ope

31、n .fd1=3 fd2=4 fd3=5 $,92,CNT=2/etc/passwd,CNT=1./openEx2.c,主存活动inode表,文件描述符表指针,用户区,用户打开文件表,0,1,2,3,4,5,6,7,.,.,.,CNT=1 R,CNT=1 W,.,CNT=1 R,系统打开文件表,.,.,.,93,文件系统调用 -文件的关闭,调用方式为: int fd; close (fd);,94,文件系统调用 -文件的关闭, 根据fd找到用户打开文件表项,再找到系统打开文件表项,释放用户打开文件表项。 把对应系统打开文件表项中的f_count减1,如果非0,说明进程族中还有其它进程共享这一表

32、项,不用释放直接返回;否则释放表项,并找到与之连接的主动活动inode。 把活动inode中的i_count减1,若不为0,表明还有用户进程正在使用该文件,不用释放而直接返回;否则在把该活动inode中的内容复制回磁盘上的相应inode后,释放该活动inode。,95,文件系统调用,f_count和i_count反映了进程动态共享一个文件的两种方式系统打开文件表中的f_count反映不同进程通过同一个系统打开文件表项共享一个文件的情况 进程使用相同的位移指针f_offset共享文件 如fork()系统调用产生的父子进程主存活动inode中的i_count反映不同进程通过不同系统打开文件表项共享

33、一个文件的情况 进程使用不同的位移指针f_offset共享文件,96,文件系统调用 -读文件,调用的形式为: int nr, fd, count; char buf ; nr = read (fd, buf, count);,97,文件系统调用 -读文件,系统根据f_flag中的信息,检查读操作合法性;若合法,按活动i_node中i_addr指出的文件物理块存放地址,从文件当前的位移量f_offset处开始,读出所要求的count个字节,存放到系统缓冲区中,然后再送到buf指向的用户主存区中。,98,fd,fp,f_flag(r/w),f_count(1),f_offset(0),f_inod

34、e,i_mode(x),i_nlink(1),i_addr(40),系统打开文件表,活动inode,用户打开文件表,物理块,99,#include #include #include main() int fd1, fd2, fd3; char buf120, buf220; buf119=0; buf219=0; printf(=n); fd1 = open(/etc/passwd, O_RDONLY); read(fd1, buf1, 19); printf(fd1=%d buf1=%s n,fd1, buf1); read(fd1, buf2, 19); printf(fd1=%d bu

35、f2=%s n,fd1, buf2); printf(=n);,$ cc openEx2.c -o openEx2$ openEx2=fd1=3 buf1=root:x:0:1:Super-Usfd1=3 buf2=er:/:/sbin/shdaemo =$,100,#include #include #include main() int fd1, fd2, fd3; char buf120, buf220; buf119=0; buf219=0; printf(=n); fd1 = open(/etc/passwd, O_RDONLY); fd2 = open(/etc/passwd, O

36、_RDONLY); read(fd1, buf1, 19); printf(fd1=%d buf1=%s n,fd1, buf1); read(fd2, buf2, 19); printf(fd2=%d buf2=%s n,fd2, buf2); printf(=n);,$ cc openEx3.c -o openEx3$ openEx3=fd1=3 buf1=root:x:0:1:Super-Us fd2=4 buf2=root:x:0:1:Super-Us =$,两次系统调用,创建了两个系统打开文件表项,每个都有自己的读写位移指针,101,CNT=2/etc/passwd,.,主存活动in

37、ode表,用户打开文件表指针,用户区,用户打开文件表,0,1,2,3,4,5,6,7,.,.,.,CNT=1 R,.,.,CNT=1 R,系统打开文件表,.,.,.,102,文件系统调用 -写文件,调用的形式为: nw = write (fd, buf, count); buf是信息传送的源地址,即把buf所指向的用户主存区中的信息,写入到文件中。,103,文件系统调用 -文件的随机存取,系统调用的形式为: long lseek; long offset; int whence, fd; lseek (fd, offset, whence);,104,文件系统调用 -文件的随机存取,fd:文件

38、描述字fd必须指向一个用读或写方式打开的文件offset:当whence是0时,则f_offset被置为offset,即设置绝对位移当whence是1时,则f_offset被置为文件当前位置加上offset,即设置相对位移,105,文件共享,文件的静态共享 文件的动态共享 文件的符号链接共享,106,文件的静态共享,一个文件同时属于多个目录,但实际上文件仅有一处物理存储 文件链接优点: 节省空间 文件的修改对任何用户都可见,保证文件的一致性,107,文件的静态共享,系统调用形式为: char * oldnamep, * newnamep; link (oldnamep, newnamep);

39、检索目录找到oldnamep所指向文件的索引节点inode编号。 再次检索目录找到newnamep所指文件的父目录文件,并把已存在文件的索引节点inode编号与别名构成一个目录项,记入到该目录中去。 把已存在文件索引节点inode的连接计数i_nlink加“1”。,108,link(“/home/fei1/myfile.c”, “/home/fei2/myfile.c”);link(“/home/fei1/myfile.c”, “/home/fei3/fei4/testfile.c”);,109,文件的静态共享,文件解除链接调用形式为: unlink (namep)解除链接与文件删除执行的是同

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

41、该位移指针似乎适合放在相应文件的活动索引节点中。多用户共享文件,每个希望独立地读、写文件,这时不能只设置一个读写位移指针,须为每个用户进程分别设置一个读、写位移指针,该位移指针似乎放在用户打开文件表中合适。为了解决上述矛盾,系统建立系统打开文件表来解决上述矛盾,112,113,fda,进程A的子进程,驻留主存,使用不同位移指针的文件共享,fda,fpa,fd,进程B的打开文件表,fdb,进程B,非驻留主存,进程A的打开文件表,进程A,fpb,进程A的子进程的打开文件表,fpa,114,文件的符号链接共享,又称软链接,符号链接是一种只有文件名,不指向inode的文件符号链接共享文件的实现思想:用

42、户A目录中形afilebfile,实现A的目录与B的文件的链接。其中只包含被链接文件bfile的路径名而不是它的inode号,115,主存映射文件,主存映射文件使用读写主存的操作来操作文件,简化编程基于虚拟存储管理机制系统提供两个新的系统调用,映射文件mmap有两个参数:一个文件名和一个虚拟地址,把一个文件映射到进程地址空间。移去映射文件unmmap让文件与进程虚拟地址空间断开,并把映射文件的数据写回磁盘文件。,116,主存映射文件,117,虚拟文件系统,虚拟文件系统要实现以下目标同时支持多种文件系统;多个文件系统应与传统的单一文件系统没有区别,在用户面前表现为一致的接口;提供通过网络共享文件

43、的支持,访问远程结点上的文件系统应与访问本地结点的文件系统一致;可以开发出新的文件系统,以模块方式加入到操作系统中。,118,虚拟文件系统,虚拟文件系统设计思想:应用层:直接基于标准的UNIX文件系统调用来操作文件,无需考虑具体文件系统的特性和物理存储介质 虚拟层: 对具体文件系统的共同特性进行抽象,形成与具体文件系统的实现无关的虚拟层,定义与用户的一致性接口实现层: 使用类似于开关表的技术进行具体文件系统的转接,实现各种文件系统的细节。自包含,包含文件系统的各种实施设施,如超级块、节点区、数据区以及各种数据结构和文件类的操作函数,119,本章小结,文件可以分为普通文件和目录文件,其中目录文件是完全由目录项组成的文件文件目录的主要作用之一是实现文件的按名存取,即将文件名转换成物理块Linux/Unix将文件名和文件的其它属性进行分离,而将其它属性单独用一个数据结构inode表示,文件目录的表项仅包括文件名和inode号文件的物理组织方式包括顺序/连续文件、连接文件、FAT和索引文件等,其中连接文件不适合随机存取,120,本章小结,文件空间的管理方法可以用位示图、空闲区表、空闲块链和空闲块成组管理法等文件系统通常包含用户打开文件表和系统打开文件表两个数据结构,返回给用户的文件描述符即为在用户打开文件表中的下标,可以通过这两个表来实现文件的共享。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号