文件管理_文件管理系统 - CSDN
精华内容
参与话题
  • 操作系统基本原理---文件管理

    万次阅读 2018-08-02 22:06:20
    文件管理  操作系统对计算机的管理包括两个方面:硬件资源和软件资源。硬件资源的管理包括CPU 的管理、存储器的管理、设备管理等,主要解决硬件资源的有效和合理利用问题。  软件资源包括各种系统程序、各种...

    文件管理

        操作系统对计算机的管理包括两个方面:硬件资源和软件资源。硬件资源的管理包括CPU 的管理、存储器的管理、设备管理等,主要解决硬件资源的有效和合理利用问题。

        软件资源包括各种系统程序、各种应用程序、各种用户程序,也包括大量的文档材料、库函数等。每一种软件资源本身都是具有一定逻辑意义的相关信息的集合,在操作系统中它们以文件形式存储。

        计算机系统的重要作用之一是能快速处理大量信息,因此数据的组织、存取和保护成为一个极重要的内容。文件系统是操作系统中组织、存取和保护数据的一个重要部分。

        文件管理的功能包括:建立、修改、删除文件;按文件名访问文件;决定文件信息的存放位置、存放形式及存取权限;管理文件间的联系及提供对文件的共享、保护和保密等。允许多个用户协同工作又不引起混乱。文件的共享是指一个文件可以让多个用户共同使用,它可以减少用户的重复性劳动,节省文件的存储空间,减少输入/输出文件的次数等。文件的保护主要是为防止由于错误操作而对文件造成的破坏。文件的保密是为了防止未经授权的用户对文件进行访问。

        文件的保护、保密实际上是用户对文件的存取权限控制问题。一般为文件的存取设置两级控制:第 1 级是访问者的识别,即规定哪些人可以访问;第 2 级是存取权限的识别,即有权参与访问者可对文件执行何种操作。 

        1.文件的逻辑结构

        文件的结构是指文件的组织形式,从用户角度所看到的文件组织形式,称为文件的逻辑结构。

        文件的逻辑组织是为了方便用户使用。一般文件的逻辑结构可以分为两种:无结构的字符流文件和有结构的记录文件。记录文件由记录组成,即文件内的信息划分成多个记录,以记录为单位组织和使用信息。

       记录文件有顺序文件、索引顺序文件、索引文件和直接文件。

        (1)顺序文件。大多数文件是顺序文件。顺序文件的记录定长,记录中的数据项的类型长度与次序固定,一般还有一个可以唯一标识记录的数据项,称为键(key),记录是按键值的约定次序组织的。顺序文件常用于批处理应用,对于查询或更新某个记录的处理性能不太好。

        (2)索引顺序文件。索引顺序文件是基于键的约定次序组织的,而且维护键的索引和溢出区域。键的索引也可以是多级索引。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。

        (3)索引文件。索引文件是基于记录的一个键数据项组织的。许多应用需按照别的数据项访问文件,为此,常采用索引文件方法,即对主文件中的记录按需要的数据项(一个或几个)建索引,索引文件本身是顺序文件组织。

        (4)直接文件。直接文件又称哈希(Hash)文件。记录以它们在直接访问存储设备上的物理地址直接(随机地)访问。直接文件常用 于需要高速访问文件而且每次仅访问一条记录的应用中。 

        2.文件的物理结构

        文件的物理结构是指文件在存储设备上的存放方法。文件的物理结构侧重于提高存储器的利用效率和降低存取时间。文件的存储设备通常划分为大小相同的物理块,物理块是分配和传输信息的基本单位。文件的物理结构涉及文件存储设备的组块策略和文件分配策略,决定文件信息在存储设备上的存储位置。常用的文件分配策略有:

        (1)顺序分配(连续分配)。这是最简单的分配方法。在文件建立时预先分配一组连续的物理块,然后,按照逻辑文件中的信息(或记录)顺序,依次把信息(或记录)按顺序存储到物理块中。这样,只需知道文件在文件存储设备上的起始位置和文件长度,就能进行存取,这种分配方法适合于顺序存取,在连续存取相邻信息时,存取速度快。其缺点是在文件建立时必须指定文件的信息长度,以后不能动态增长,一般不宜用于需要经常修改的文件。

        (2)链接分配(串联分配)。这是按单个物理块逐个进行的。每个物理块中(一般是最后一个单元)设有一个指针,指向其后续连接的下一个物理块的地址,这样,所有的物理块都被链接起来,形成一个链接队列。在建立链接文件时,不需要指定文件的长度,在文件的说明信息中,只需指出该文件的第一个物理块块号,而且链接文件的文件长度可以动态地增长。只调整物理块间的指针就可以插入或删除一个信息块。

        链接分配的优点是可以解决存储器的碎片问题,提高存储空间利用率。由于链接文件只能按照队列中的链接指针顺序查找,因此搜索效率低,一般只适用于顺序访问,不适用于随机存取。

        (3)索引分配。这是另一种对文件存储不连续分配的方法。采用索引分配方法的系统,为每一个文件建立一张索引表,索引表中每一表项指出文件信息所在的逻辑块号和与之对应的物理块号。

        索引分配既可以满足文件动态增长的要求,又可以方便而迅速地实现随机存取。对一些大的文件,当索引表的大小超过一个物理块时,会发生索引表的分配问题。一般采用多级(间接索引)技术,这时在由索引表指出的物理块中存放的不是文件存放处而是存放文件信息的物理块地址。这样,如果一个物理块能存储 n 个地址,则一级间接索引将使可寻址的文件长度变成 n2 块,对于更大的文件可以采用二级甚至三级间接索引(例如,UNIX 操作系统采用三级索引结构,如图 2-9 所示)。

        索引文件的优点是既适用于顺序存取,又适用于随机存取。缺点是索引表增加了存储 空间的开销。另外,在存取文件时需要访问两次磁盘,一次是访问索引表,另一次是根据索引表提供的物理块号访问文件信息。为了提高效率,一种改进的方法是,在对某个文件进行操作之前,预先把索引表调入内存。这样,文件的存取就能直接从内存的索引表中确定相应的物理块号,从而只需要访问一次磁盘。

        3.文件存储设备管理 

        文件存储设备管理,就是操作系统要有效地进行存储空间的管理。由于文件存储设备是分成许多大小相同的物理块,并以块为单位交换信息,因此,文件存储设备的管理实质上是对空闲块的组织和管理问题。它包括空闲块的组织,空闲块的分配与空闲块的回收等问题。有3种不同的空闲块管理方法,它们分别是索引法、链接法和位示图法。

        (1)索引法。索引法把空闲块作为文件并采用索引技术。为了有效,索引对应于一个 或由几个空闲块构成的空闲区。这样,磁盘上每一个空闲块区都对应于索引表中一个条目,这个方法能有效地支持每一种文件分配方法。

        (2)链接法。链接法使用链表把空闲块组织在一起,当申请者需要空闲块时,分配程 序从链首开始摘取所需的空闲块。反之,管理程序把回收的空闲块逐个挂入队尾,这个方 法适用于每一种文件分配方法。空闲块的链接方法可以按释放的先后顺序链接,也可以按 空闲块区的大小顺序链接。后者有利于获得连续的空闲块的请求,但在分配请求和回收空闲块时系统开销多一点。

        (3)位示图法。该方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使 用情况。每一位仅对应文件存储器上的一个物理块,取值0 和1 分别表示空闲和占用。文件存储器上的物理块依次编号为:0、1、2、…。假如系统中字长为32位,有4096个物

    理块,那么在位示图中的第1个字对应文件存储器上的0、1、2、…、31号物理块;第2 个字对应文件存储器上的32、33、34、…、63号物理块;第128字对应文件存储器上的4064、4065、…、4095号物理块。这样位示图的大小为32字。

        位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况,如图2-10 所示。当其 值为“0”时,表示对应的盘块空闲;为“1”时表示已分配。由所有盘块对应的位构成一个集合,称为位示图。位示图也可描述为一个二维数组map:Varmap:array[1.…m,1.…n]of bit;

        4.树型目录结构

        在计算机的文件系统中,一般采用树型目录结构。在树型目录结构中,树的根结点为根目录,数据文件作为树叶,其他所有目录均作为树的结点。

       根目录隐含于一个硬盘的一个分区中,根目录在最顶层。它包含的子目录是一级子目录。每一个一级子目录又可以包含若干二级子目录,…,这样的组织结构就叫作目录树。

        当前盘和当前目录是系统默认的操作对象。如果用户没有指明操作对象,系统就将用户命令指向当前盘和当前目录。

        路径是指从根目录或者当前目录开始到访问对象(目录或者文件),在目录树中路经的所有目录的序列。例如“c:\dos\lmouse\mouse”就是 Windows 系统中的一条路径。在树型目录结构中,从根目录到任何数据文件之间,只有一条唯一的通路,从树根开始,把全部目录文件名与数据文件名,依次用“/”(UNIX/Linux 系统)或“\”(Windows 系统)连接起来,构成该数据文件的路径名,且每个数据文件的路径名是唯一的。这样,便可以解决文件重名问题。

        从树根开始的路径为绝对路径,如果文件系统有很多级时,使用不是很方便,所以引入相对路径,即从当前目录开始,再逐级通过中间的目录文件,最后到达所要访问的数据文件。

        绝对路径给出文件或目录位置的完全描述,通常由层次结构的顶端开始(根目录),通常第一个字符是“/”(UNIX/Linux 系统)或者是盘符(Windows 系统)。相对路径通常由目录结构中的当前位置开始,一般都比绝对路径要短。

        父目录是指当前路径的上一层目录。每个目录下都有代表当前目录的“.”文件和代表当前目录父目录的“..”文件,相对路径名一般就是从“..”开始的。

    展开全文
  • windows上最好用的文件管理软件 Directory Opus windows 自带的文件管理软件就不用提了,垃圾的一比。而市面上比较流行的文件管理软件 xyploer,total commander 之类我都使用过,其中 total commander 的确是神器,...

    windows上最好用的文件管理软件 Directory Opus

    windows 自带的文件管理软件就不用提了,垃圾的一比。而市面上比较流行的文件管理软件 xyploer,total commander 之类我都使用过,其中 total commander 的确是神器,但是界面太难看,还有学习路径比较陡峭,最后还是放弃了。

    后来我使用了 windows 上的资源管理器增强软件 clover 感觉还是不错的,也使用了很长时间。那为什么现在弃用了呢?因为我之前一直是用 win7 系统,现在转战 win10 系统,发现 clover 在 win10 上表现很差,经常有卡死的现象,实在难以忍受。

    在尝试过多款多标签的文件管理软件之后,我决定选定 Directory Opus,该软件目前可以的版本地址,提取码为 7icx。这款软件比 clover 强大上许多,而且使用起来学习成本很低,界面也美观不少,这是我日常使用界面的截图:

    20190401140543.png

    这款软件可以完美替代 windows 自带的资源管理器,并且可以像在 colver 在同一个窗口打开过个标签也,这部分的设置

    总体上来说是非常另我满意的,快捷键功能也非常丰富,这别要特别提一下的快捷键就是如何从坐标面板跳到右边面板,即 ctrl+tab 其他快捷键都可以从帮助栏下面的快捷键中找到:

    20190401140811.png

    Directory Opus 配合listary,使用可以说是天下无敌了。

    最后,我分享一下我个人使用的皮肤,其实我的皮肤是从 Directoy Opus 社区分享的多个主题皮肤,自己改进而来,我的 Directory Opus 一个完全的配置备份, 提取码:y5we。大家可以根据需要恢复自己想要的部分,至于如何恢复备份,如何导入主题之类的自行百度即可,前人都有分享方法,我就不再赘述。

    展开全文
  • 文件管理系统源码下载

    热门讨论 2020-07-16 23:31:46
    文件管理模块不能独立运行,它需要嵌入宿主应用程序当中才能正常使用。使用该程序,可以方便地在线上传、下载、移动、删除、压缩、解压文件和文件夹,并能准确统计出个人空间内文件及文件夹的数量。
  • 操作系统总结之文件管理

    万次阅读 多人点赞 2018-07-07 16:11:32
    文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。 二:文件和文件系统 ...

    一:主要内容:

    1. 概述
    2. 文件的逻辑结构 ( 顺序文件,索引文件,索引顺序文件,直接文件和哈希文件 )
    3. 外存分配方式
    4. 文件目录管理
    5. 文件存储空间管理
    6. 文件系统的可靠性和安全性
    7. 文件系统的数据一致性控制

    文件管理,由于系统的内存有限并且不能长期保存,故平时总是把它们以文件的形式存放在外存中,需要时再将它们调入内存。如何高效的对文件进行管理是操作系统实现的目标。

    二:文件和文件系统

    2.1

      现代OS几乎都是通过文件系统来组织和管理在计算机中所存储的大量程序和数据的。文件系统的管理功能是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。而文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录是一组有意义的数据项的集合。可以把数据组成分为数据项、记录、文件。
      
      ①数据项,数据项是最低级数据组织形式。分为基本数据项(用于描述一个对象某种属性的字符集,是数据组织中可以明明的最小逻辑数据单位,即原子数据,又称为数据元素或字段)和组合数据项(由若干个基本数据项组成)

      ② 记录,是一组相关数据项的集合,用于描述一个对象在某方面的属性,为了能够唯一标识一个记录,需要在一个记录的各个数据项中确定一个或几个数据项,把他们的集合称为关键字,关键字是能够唯一标识一个记录的数据项。

      ③ 文件,文件是具有文件名的一组相关元素的集合,分为有结构文件(又称记录式文件:文件由一组相似记录组成 。如报考某学校的所有考生的报考信息记录)和无结构文件(又称流式文件:被看成是一个字符流。比如一个二进制文件或字符文件)。有结构文件由若干个相关记录组成,无结构文件则被看成一个字符流。文件是文件系统的最大数据单位。文件应该具有自己的属性,包括文件类型(如源文件、目标文件、可执行文件等),文件长度(文件的当前长度,也可能是最大允许长度),文件的物理位置(指示文件在哪一个设备上及在该设备的哪个位置的指针),文件的建立时间(文件最后一次修改时间)。
      
       一个文件可对应若干个记录,一个记录可对应若干个数据项。

      文件系统管理的对象有:文件(作为文件管理的直接对象),目录(为了方便用户对文件的存取和检索,在文件系统中配置目录,每个目录项中,必须含有文件名及该文件所在的物理地址,对目录的组织和管理是方便和提高对文件存取速度的关键),磁盘(文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度)。
      

    2.2 文件的属性、基本操作以及文件的打开和关闭

    2.2.1 文件的属性

    ①名称:文件名称唯一,以容易读取的形式保存。

    ②标识符:标识文件系统内文件的唯一标签,通常为数字,它是对人不可读的一种内部名称。

    ③类型:被支持不同类型的文件系统所使用。

    ④位置:指向设备和设备上文件的指针。

    ⑤大小:文件当前大小(用字节、字或块表示),也可包含文件允许的最大值。

    ⑥保护:对文件进行保护的访问控制信息。

    ⑦时间、日期和用户标识:文件创建、上次修改和上次访问的相关信息,用于保护、 安全和跟踪文件的使用。

    2.2.2 文件的基本橾作

      ① 创建文件,在创建一个新文件时,系统首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项,目录项中应该记录新文件的文件名及其在外存的地址等属性。

      ② 删除文件,当已不再需要某文件时,可将其从文件系统中删除,在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

      ③ 读文件,读文件时,须在相应系统调用中给出文件名和应读入的内存目标地址。此时,系统要查找目录,找到指定目录项,从中得到被读文件在外存中的位置。在目录项中,还有一个指针用于对文件进行读/写。

      ④ 写文件,写文件时,须在相应系统调用中给出文件名和其在内存源地址。此时,系统要查找目录,找到指定目录项,从再利用目录中的写指针进行写操作。

      ⑤ 截断文件,如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新创建一个新文件,但如果文件名和属性均无改变,则可采取截断文件的方法,其将原有的文件长度设置为0,放弃原有文件的内容。

      ⑥ 设置文件的读/写位置,用于设置文件读/写指针的位置,以便每次读/写文件时,不需要从始端开始而是从所设置的位置开始操作。可以改顺序存取为随机存取。

    2.2.3 文件的打开和关闭

    来源:当前OS所提供的大多数对文件的操作,其过程大致都是这样两步:首先,检索文件目录来找到指定文件的属性及其在外存上的位置;然后,对文件实施相应的操作,如读/写文件等,当用户要求对一个文件实施多次读/写或其他操作时,每次都要从检索目录开始,为了避免多次重复地检索目录,在大多数OS中都引入了打开这一文件系统调用,当用户第一次请求对某文件系统进行操作时,先利用open系统调用将该文件打开。

    打开是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引号)返回给用户,以后,当用户再要求对该文件进行操作时,便可利用系统所返回的索引号向系统提出操作请求,系统便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索,如果用户不再需要对该文件实施操作,可利用关闭系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。

    三:文件的逻辑结构

    • 文件的逻辑结构:从用户角度看文件的组织形式
    • 文件的物理结构:文件在外存上的存储组织形式

    3.1 文件的逻辑结构类型

    无结构文件(流式文件)
    

    无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户可以方便地对其进行操作。所以,那些对基本信息单位操作不多的文件较适于釆用字符流的无结构方式,如源程序、可执行文件、库函数等。

    有结构文件(记录式文件)
    

    按记录的组织形式可以分为:

    3.1.1 顺序文件

    文件是记录的集合,文件中的记录可以是任意顺序的,因此,它可以按照各种不同的顺序进行排列,一般地,可归纳为以下两种情况。

      ① 串结构,个记录之间的顺序与关键字无关,通常按照时间先后排序,最先存入的记录作为第一个记录,其次,为第二个记录,以此类推。

      ② 顺序结构,文件中所有记录按照关键字排列,可以按照关键词长度从大到小排列。顺序结构的检索效率更高。

      顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次要读或写一大批记录时,此时,对顺序文件的存取效率是所有逻辑文件中最高的,此外,只有顺序文件才能存储在磁带上,并能有效工作。但是想要增加或删除一个文件比较困难。

    提问:为什么增加或删除一个文件比较困难?

    答:类似于数组的缺点。

    3.1.2 索引文件

      对于定长记录文件,可以方便的实现顺序存取和直接存取,然而,对于变长记录就很难实现。为了解决变长记录检索问题,可为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应的表项,用于记录该记录的长度 L 及指向该记录的指针(指向该记录在逻辑地址空间的首址),由于索引表按记录键排序的,因此,索引表本身就是一个定长记录的顺序文件。从而可以方便实现直接存取。
    这里写图片描述

    索引表与文件一一对应
    

      由于是按照关键字进行建立的索引,所以在对索引文件进行检索时,首先根据用户(程序)提供的关键字,并利用折半查找检索索引表,从中找到相应的表项,再利用该表项给出的指向记录的指针值,去访问所需的记录。每当要向索引文件中增加一个新纪录时,便须对索引表进行修改。索引表的问题在于除了有主文件外,还需要配置一张索引表,每个记录需要有一个索引项,因此提高了存储费用。优点就是拥有较快的检索速度,适合用于对及时性要求比较高的场合。

    3.1.3 索引顺序文件

    其有效克服了变长记录不便于直接存取的缺点,而且所付出的代价也不算太大,它是顺序文件和索引文件相结合的产物,它将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的键值和指向记录的指针。

      这里写图片描述
    在对索引顺序文件进行检索时,首先利用用户(程序)所提供的关键字及某种查找算法去检索索引表,找到该记录组中的第一个记录的表项,从中得到该记录组第一个记录在主文件中的位置,然后,再利用顺序查找法去查找主文件,从中找出所要求的记录。

    3.1.4 直接文件

      对于直接文件,则根据给定的记录键值,直接获得指定记录的物理地址,换言之,记录键值本身就决定了记录的物理地址,这种由记录键值到记录物理地址的转换被称为键值转换。

    3.1.5 哈希(Hash)文件

      利用Hash函数可将记录键值转换为相应记录的地址,为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。
      这里写图片描述
    emmmmmmm , 这个所讲的意思并不是很懂~_~

    四:文件目录管理

    为了能够对文件实施有效的管理,必须对它们加以妥善组织,这主要是通过文件目录实现的,文件目录也是一种数据结构,用于标识系统中的文件及其物理地址,供检索时使用,对目录的管理要求如下:

      ① 实现按名存取,即用户只须向系统提供所需访问的文件的名字,便能够快速准确地找到指定文件在外存上的存储位置,这是目录管理中最基本的功能。

      ② 提高对目录检索速度,通过合理地组织目录结构的方法,可加快对目录的检索速度,从而提高对文件的存取速度。

      ③ 文件共享,在多用户系统中,应该允许用户共享一个文件。

      ④ 允许文件重名,系统应允许不同用户对不同文件采用相同的名字,以便用户按照自己的习惯给文件命名和使用文件。

    4.1 文件控制块

      为了能对文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称之为文件控制块FCB,文件管理程序可借助于文件控制块中的信息,对文件施加各种操作,文件与文件控制块一一对应,而人们把文件控制块的有序集合称为文件目录,一个文件控制块就是一个文件目录项。通常,一个文件目录也可被看成是一个文件,称为目录文件。
      
        文件控制块包含基本信息、存取控制信息、使用信息。
        
      ① 基本信息,包括文件名(标识一个文件的符号名,在每个系统中,每个文件都有唯一的名字,用户利用该名字进行存取);文件物理位置(指文件在外存上的存储位置,包括存放文件的设备名、文件在外村上的起始盘块号、指示文件所占用的盘块数或字节数的文件长度);文件逻辑结构(指示文件是流式文件还是记录式文件、记录数,文件是定长还是变长记录);文件物理结构(指示文件是顺序文件、链式文件还是索引文件)

      ② 存取控制信息,包括文件主的存取权限、核准用户的存取权限及一般用户的存取权限。

      ③ 使用信息,包括文件的建立日期和时间、文件上一次修改的日期和时间及当前使用信息(这项信息包括当前已打开该文件的进程数、是否被其他进程锁住、文件在内存中是否已被修改但尚未拷贝到盘上)

    4.2 索引结点

      文件目录通常是存放在磁盘上的,当文件很多时,文件目录可能要占用大量的盘块,在查找的过程中,先将存放目录文件的第一个盘块中的目录调入内存,然后把用户所给定的文件名和目录项中的文件名逐一对比。若未找到指定文件,则再将下一个盘块中的目录项调入内存。在检索目录文件时,只用到了文件名,仅当找到一个目录项(即其中的文件名与指定要查找的文件名相匹配)时,才需要从该目录项中读出该文件的物理地址,而其他一些对该文件进行描述的信息,在检索目录时一概不用,显然,这些信息在检索目录时不需要调入内存。为此,在有的系统中,如UNIX系统,便采用了把文件名和文件描述信息分开的方法,亦即,使文件描述信息单独形成一个称为索引结点的数据结构,简称为i结点,在文件目录中的每个目录项由文件名和指向该文件所对应的i结点的指针所构成。
      这里写图片描述

    每个文件都有唯一的磁盘索引结点(磁盘索引结点信息与文件名等信息一起构成了FCB)
    

    4.3 目录结构

      目录结构的组织,关系到文件系统的存取速度,也关系到文件的共享性和安全性,目前常用的目录结构形式有单级目录、两级目录、多级目录。
      ① 单级目录结构,在整个系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名、文件扩展名、文件长度、文件类型、文件物理地址、状态位(表示目录项是否空闲)等。每当要建立一个新文件时,必须先检查所有的目录项,以保证新文件名在目录中是唯一的,然后再从目录表中找到一个空白目录项,填入新文件的文件名及其他说明信息,并置状态为1,删除文件时,先从目录中找到该文件的目录项,回收该文件所占用的存储空间,然后再清除该目录项。单级目录的有点是简单并且能够实现目录管理的基本功能-按名存取,但是查找速度慢(查找一个目录项要花费较多的时间),不允许重名(在一个目录表中的所有文件,都不能与另一个文件有相同的名字,这是难以避免的),不便于实现文件共享(每一个用户都有自己的名字空间或命名习惯,因此,应该允许不同用户使用不同的文件名来访问同一个文件)
      这里写图片描述
        ② 两级目录结构,为每个用户建立一个单独的用户文件目录UFD(User File Directory),这些文件目录具有相似的结构,由用户所有文件的文件控制块组成。此外,系统中还有一个主文件目录MFD(Master File Directory)在主文件目录中,每个用户目录文件都占有一个目录项,其目录项包括用户名和指向用户目录文件的指针。
        这里写图片描述
      两级目录结构克服了单级目录的缺点,具有如下优点:提高了检索目录的速度(如果在主目录中有n个子目录,每个用户目录最多为m个目录项,则为查找一指定的目录项,最多只需要检索n+m个目录项)。在不同的用户目录中,可以使用相同的文件名(只要在用户自己的UFD中,每个文件名都是唯一的,不同用户可以有文件名相同的文件)。不同用户还可使用不同的文件名来访问系统中同一个共享文件。但在多个用户需要合作完成一个大任务时,不便于用户之间共享文件。
       ③ 多级目录结构,对于大型文件系统,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。多级目录结构又称为树形目录结构,主目录被称为根目录,把数据文件称为树叶,其他的目录均作为树的结点。 
        
       这里写图片描述
       
    说明:方框代表目录文件,圆圈代表数据文件
    1. 应该允许在一个目录文件中的目录项既是作为目录文件的FCB,又是数据文件的FCB,这一信息可用目录项中的一位来指示。如用户A总目录中,目录项A是目录文件FCB,而目录项B和D则是数据文件的FCB。
    2. 系统中的每个文件都有唯一的路径名
    3. 绝对路径与相对路径

    4.4 目录查询技术

      当用户要访问一个已存在的文件时,系统首先利用用户提供的文件名对目录进行查询,找出该文件的文件控制块或对应索引结点,然后,根据FCB或索引结点中所记录的文件物理地址(盘块号),换算出文件在磁盘上的物理位置,最后,再通过磁盘驱动程序,将所需文件读入内存。目前常用的方式有线性检索法和Hash方法。
      ① 线性检索法,其又称为顺序检索法,在树形目录中,用户提供的文件名是由多个文件分量名组成的路径名,此时须对多级目录进行查找,假定用户给定的文件路径名为/usr/ast/mbox,则查找过程如下。  
      这里写图片描述
      
    1. 读入第一个文件分量名usr,用它与根目录文件(或当前目录文件)中各目录项中的文件名顺序地进行比较
    2. 得到匹配项的索引结点号是6
    3. 从6号索引结点中得到usr目录文件放在132号盘块中,将该盘块内容读入内存
    4. 再将路径名中的第二个分量名ast读入,用它与放在132号盘块中的第二级目录文件中各目录项的文件名顺序进行比较
    5. 依次类推

      ② Hash方法,系统利用用户提供的文件名并将它转换为文件目录的索引值,再利用该索引值到目录中去查找,这将提高检索速度。

    五:文件共享(略)

    六:文件保护(略)

    参考文献:

    https://www.cnblogs.com/tangshiguang/p/6746235.html
    https://blog.csdn.net/xiaoyangsavvy/article/details/78260777

    展开全文
  • 《操作系统》总结四(文件管理

    万次阅读 2017-10-17 15:11:05
    文件管理 主要内容: 文件系统基础:包括文件概念、文件的逻辑结构(顺序文件,索引文件,索引顺序文件)、目录结构(文件控制块和索引结点,单级目录结构和两级目录结构,树形目录结构,图形目录结构)、文件...

    文件管理

    主要内容:
    • 文件系统基础:包括文件概念、文件的逻辑结构(顺序文件,索引文件,索引顺序文件)、目录结构(文件控制块和索引结点,单级目录结构和两级目录结构,树形目录结构,图形目录结构)、文件共享和文件保护(访问类型,访问控制)。
    • 文件系统实现:包括文件系统层次结构、目录实现、文件实现。
    • 磁盘组织与管理:包括磁盘的结构、磁盘调度算法、磁盘的管理。

    4.1 文件的概念和定义

    文件(File)是操作系统中的一个重要概念。在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而在用户进行的输入、输出中,则以文件为基本单位。大多数应用程序的输入都是通过文件来实现的,其输出也都保存在文件中,以便信息的长期存及将来的访问。当用户将文件用于应用程序的输入、输出时,还希望可以访问文件、修改文件和保存文件等,实现对文件的维护管理,这就需要系统提供一个文件管理系统,操作系统中的文件系统(File System)就是用于实现用户的这些管理要求。

    从用户的角度看,文件系统是操作系统的重要部分之一。用户关心的是如何命名、分类和查找文件,如何保证文件数据的安全性以及对文件可以进行哪些操作等。而对其中的细节,如文件如何存储在辅存上、如何管理文件辅存区域等关心甚少。

    文件系统提供了与二级存储相关的资源的抽象,让用户能在不了解文件的各种属性、文件存储介质的特征以及文件在存储介质上的具体位置等情况下,方便快捷地使用文件。

    用户通过文件系统建立文件,提供应用程序的输入、输出,对资源进行管理。首先了解文件的结构,我们通过自底向上的方式来定义。

    1) 数据项

    数据项是文件系统中最低级的数据组织形式,可分为以下两种类型:
    • 基本数据项:用于描述一个对象的某种属性的一个值,如姓名、日期或证件号等,是数据中可命名的最小逻辑数据单位,即原子数据。
    • 组合数据项:由多个基本数据项组成。

    2) 记录

    记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性,如一个考生报名记录包括考生姓名、出生日期、报考学校代号、身份证号等一系列域。

    3) 文件

    文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件和无结构文件两种。在有结构文件中,文件由一组相似记录组成,如报考某学校的所有考生的报考信息记录,又称记录式文件;而无结构文件则被看成是一个字符流,比如一个二进制文件或字符文件,又称流式文件。

    虽然上面给出了结构化的表述,但实际上关于文件并无严格的定义。通常在操作系统中将程序和数据组织成文件。文件可以是数字、字母或二进制代码,基本访问单元可以是字节、 行或记录。文件可以长期存储于硬盘或其他二级存储器中,允许可控制的进程间共享访问,能够被组织成复杂的结构。

    4.2 文件的属性、基本操作以及文件的打开和关闭

    文件的属性

    文件有一定的属性,这根据系统的不同而有所不同,但是通常都包括如下属性:

    ①名称:文件名称唯一,以容易读取的形式保存。

    ②标识符:标识文件系统内文件的唯一标签,通常为数字,它是对人不可读的一种内部名称。

    ③类型:被支持不同类型的文件系统所使用。

    ④位置:指向设备和设备上文件的指针。

    ⑤大小:文件当前大小(用字节、字或块表示),也可包含文件允许的最大值。

    ⑥保护:对文件进行保护的访问控制信息。

    ⑦时间、日期和用户标识:文件创建、上次修改和上次访问的相关信息,用于保护、 安全和跟踪文件的使用。

    所有文件的信息都保存在目录结构中,而目录结构也保存在外存上。文件信息当需要时再调入内存。通常,目录条目包括文件名称及其唯一标识符,而标识符定位其他属性的信息。

    文件的基本橾作

    文件属于抽象数据类型。为了恰当地定义文件,就需要考虑有关文件的操作。操作系统提供系统调用,它对文件进行创建、写、读、定位和截断。.

    ①创建文件:创建文件有两个必要步骤,一是在文件系统中为文件找到空间;二是在目录中为新文件创建条目,该条目记录文件名称、在文件系统中的位置及其他可能信息。

    ②写文件:为了写文件,执行一个系统调用,指明文件名称和要写入文件的内容。对于给定文件名称,系统搜索目录以查找文件位置。系统必须为该文件维护一个写位置的指针。每当发生写操作,便更新写指针。

    ③读文件:为了读文件,执行一个系统调用,指明文件名称和要读入文件块的内存位置。同样,需要搜索目录以找到相关目录项,系统维护一个读位置的指针。每当发生读操作时,更新读指针。一个进程通常只对一个文件读或写,所以当前操作位置可作为每个进程当前文件位置指针。由于读和写操作都使用同一指针,节省了空间也降低了系统复杂度。

    ④文件重定位(文件寻址):按某条件搜索目录,将当前文件位置设为给定值,并且不会读、写文件。

    ⑤删除文件:先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。

    ⑥截断文件:允许文件所有属性不变,并删除文件内容,即将其长度设为0并释放其空间。

    这6个基本操作可以组合执行其他文件操作。例如,一个文件的复制,可以创建新文件、 从旧文件读出并写入到新文件。

    文件的打开与关闭

    因为许多文件操作都涉及为给定文件搜索相关目录条目,许多系统要求在首次使用文件时,使用系统调用open,将指明文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件目录表的一个表目中,并将该表目的编号(或称为索引)返回给用户。操作系统维护一个包含所有打开文件信息的表(打开文件表,open-file table)。当用户需要一个文件操作时,可通过该表的一个索引指定文件,就省略了搜索环节。当文件不再使用时,进程可以关闭它,操作系统从打开文件表中删除这一条目。

    大部分操作系统要求在文件使用之前就被显式地打开。操作open会根据文件名搜索目录,并将目录条目复制到打开文件表。如果调用open的请求(创建、只读、读写、添加等)得到允许,进程就可以打开文件,而open通常返回一个指向打开文件表中的一个条目的指针。通过使用该指计(而非文件名)进行所有I/O操作,以简化步骤并节省资源。

    整个系统表包含进程相关信息,如文件在磁盘的位置、访问日期和大小。一个进程打开一个文件,系统打开文件表就会为打开的文件增加相应的条目。当另一个进程执行open时,只不过是在其进程打开表中增加一个条目,并指向整个系统表的相应条目。通常,系统打开文件表的每个文件时,还用一个文件打开计数器(Open Count),以记录多少进程打开了该文件。每个关闭操作close则使count递减,当打开计数器为0时,表示该文件不再被使用。系统将回收分配给该文件的内存空间等资源,若文件被修改过,则将文件写回外存,并将系统打开文件表中相应条目删除,最后释放文件的文件控制块(File Control Block, FCB)。

    每个打开文件都有如下关联信息:
    • 文件指针:系统跟踪上次读写位置作为当前文件位置指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件属性分开保存。
    • 文件打开计数:文件关闭时,操作系统必须重用其打开文件表条目,否则表内空间会不够用。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。该计数器跟踪打开和关闭的数量,当该计数为0 时,系统关闭文件,删除该条目。
    • 文件磁盘位置:绝大多数文件操作都要求系统修改文件数据。该信息保存在内存中以免为每个操作都从磁盘中读取。
    • 访问权限:每个进程打开文件都需要有一个访问模式(创建、只读、读写、添加等)。该信息保存在进程的打开文件表中以便操作系统能允许或拒绝之后的I/O请求。

    4.3 文件的逻辑结构:无结构文件(流式文件)和有结构文件(记录式文件)

    文件的逻辑结构是从用户观点出发看到的文件的组织形式。文件的物理结构是从实现观点出发,又称为文件的存储结构,是指文件在外存上的存储组织形式。文件的逻辑结构与存储介质特性无关,但文件的物理结构与存储介质的特性有很大关系。

    按逻辑结构,文件有无结构文件和有结构文件两种类型:无结构文件和有结构文件。

    无结构文件(流式文件)

    无结构文件是最简单的文件组织形式。无结构文件将数据按顺序组织成记录并积累保存,它是有序相关信息项的集合,以字节(Byte)为单位。由于无结构文件没有结构,因而对记录的访问只能通过穷举搜索的方式,故这种文件形式对大多数应用不适用。但字符流的无结构文件管理简单,用户可以方便地对其进行操作。所以,那些对基本信息单位操作不多的文件较适于釆用字符流的无结构方式,如源程序文件、目标代码文件等。

    有结构文件(记录式文件)

    有结构文件按记录的组织形式可以分为:

    1) 顺序文件。

    文件中的记录一个接一个地顺序排列,记录可以是定长的或变长的,可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。顺序文件有以下两种结构:

    第一种是串结构,记录之间的顺序与关键字无关。通常的办法是由时间决定,即按存入时间的先后排列,最先存入的记录作为第1个记录,其次存入的为第2个记录,依此类推。

    第二种是顺序结构,指文件中的所有记录按关键字顺序排列。

    在对记录进行批量操作时,即每次要读或写一大批记录,对顺序文件的效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作,但顺序文件对查找、修改、增加或删除单个记录的操作比较困难。

    2) 索引文件。

    如图4-1所示。对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录的地址:

    然而,对于可变长记录的文件,要查找第i个记录时,必须顺序地查找前i-1个记录,从而获得相应记录的长度L,然后才能按下式计算出第i个记录的首址:

    注意:假定每个记录前用一个字节指明该记录的长度。


    图4-1  索引文件示意图

    变长记录文件只能顺序查找,系统开销较大。为此可以建立一张索引表以加快检索速度,索引表本身是定长记录的顺序文件。在记录很多或是访问要求高的文件中,需要引入索引以提供有效的访问。实际中,通过索引可以成百上千倍地提高访问速度

    3) 索引顺序文件。

    索引顺序文件是顺序和索引两种组织形式的结合。索引顺序文件将顺序文件中的所有记录分为若干个组,为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针。

    如图4-2所示,主文件名包含姓名和其他数据项。姓名为关键字,索引表中为每组的第一个记录(不是每个记录)的关键字值,用指计指向主文件中该记录的起始位置。索引表只包含关键字和指计两个数据项,所有姓名关键字递增排列。主文件中记录分组排列,同一个组中关键字可以无序,但组与组之间关键字必须有序。查找一个记录时,通过索引表找到其所在的组,然后在该组中使用顺序查找就能很快地找到记录。


    图4-2  索引顺序文件示意图

    对于含有N个记录的顺序文件,查找某关键字值的记录时平均需要查找N/2次。在索引顺序文件中,假设N个记录分为N1/2组,索引表中有N1/2个表项,每组有N1/2个记录,在查找某关键字值的记录时,先顺序查找索引表,需要查找N1/2/2次,然后再在主文件中对应的组中顺序查找,也需要查找N1/2/2次,这样总共查找N1/2/2+N1/2/2=N1/2次。显然,索引顺序文件提高了查找效率,如果记录数很多,可以釆用两级或多级索引。

    索引文件和索引顺序文件都提高了存取的速度,但因为配置索引表而增加了存储空间。

    4) 直接文件或散列文件(Hash File)

    给定记录的键值或通过Hash函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。

    散列文件有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同。

    4.4 文件目录结构:单级、两级、多级(树形)和无环图目录结构

    与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的信息,包括属性、 位置和所有权等,这些信息主要是由操作系统进行管理。首先我们来看目录管理的基本要求: 从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录管理要实现“按名存取”;目录存取的效率直接影响到系统的性能,所以要提高对目录的检索速度;在共享系统中,目录还需要提供用于控制访问文件的信息。此外,文件允许重名也是用户的合理和必然要求,目录管理通过树形结构来解决和实现

    文件控制块和索引结点

    同进程管理一样,为实现目录管理,操作系统中引入了文件控制块的数据结构。

    1) 文件控制块。

    文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项

    FCB主要包含以下信息:
    • 基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。
    • 存取控制信息,如文件存取权限等。
    • 使用信息,如文件建立时间、修改时间等。

    2) 索引结点。

    在检索目录文件的过程中,只用到了文件名,仅当找到一个目录项(查找文件名与目录项中文件名匹配)时,才需要从该目录项中读出该文件的物理地址。也就是说,在检索目录时,文件的其他描述信息不会用到,也不需调入内存。因此,有的系统(如UNIX,见表4-1)釆用了文件名和文件描述信息分开的方法,文件描述信息单独形成一个称为索引结点的数据结构,简称为 i 结点。在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点的指针构成。

    表4-1 UNIX的文件目录结构
    文件名 索引结点编号
    文件名1
    文件名2





    一个FCB的大小是64字节,盘块大小是1KB,则在每个盘块中可以存放16个FCB(注意,FCB必须连续存放)。而在UNIX系统中一个目录项仅占16字节,其中14字节是文件名,2字节是 i 结点指针。在1KB的盘块中可存放64个目录项。这样,可使查找文件时平均启动磁盘次数减少到原来的1/4,大大节省了系统开销。

    存放在磁盘上的索引结点称为磁盘索引结点,UNIX中的每个文件都有一个唯一的磁盘索引结点,主要包括以下几个方面:
    • 文件主标识符,拥有该文件的个人或小组的标识符。
    • 文件类型,包括普通文件、目录文件或特别文件。
    • 文件存取权限,各类用户对该文件的存取权限。
    • 文件物理地址,每个索引结点中含有13个地址项,即 iaddr(0) ~ iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号。
    • 文件长度,以字节为单位。
    • 文件链接计数,在本文件系统中所有指向该文件的文件名的指针计数。
    • 文件存取时间,本文件最近被进程存取的时间、最近被修改的时间以及索引结点最‘ 近被修改的时间。
    • 文件被打开时,磁盘索引结点复制到内存的索引结点中,以便于使用。在内存索引结点中又增加了以下内容:
    • 索引结点编号,用于标识内存索引结点。
    • 状态,指示i结点是否上锁或被修改。
    • 访问计数,每当有一进程要访问此i结点时,计数加1,访问结束减1。
    • 逻辑设备号,文件所属文件系统的逻辑设备号。
    • 链接指针,设置分别指向空闲链表和散列队列的指针。

    目录结构

    在理解一个文件系统的需求前,我们首先来考虑在目录这个层次上所需要执行的操作,这有助于后面文件系统的整体理解。
    • 搜索:当用户使用一个文件时,需要搜索目录,以找到该文件的对应目录项。
    • 创建文件:当创建一个新文件时,需要在目录中增加一个目录项。
    • 删除文件:当删除一个文件时,需要在目录中删除相应的目录项。
    • 显示目录:用户可以请求显示目录的内容,如显示该用户目录中的所有文件及属性。
    • 修改目录:某些文件属性保存在目录中,因而这些属性的变化需要改变相应的目录项。

    操作时,考虑以下几种目录结构:

    1) 单级目录结构。

    在整个文件系统中只建立一张目录表,每个文件占一个目录项,如图4-3所示。


    图4-3单级目录结构

    当访问一个文件时,先按文件名在该目录中查找到相应的FCB,经合法性检查后执行相应的操作。当建立一个新文件时,必须先检索所有目录项以确保没有“重名”的情况,然后在该目录中增设一项,把FCB的全部信息保存在该项中。当删除一个文件时,先从该目录中找到该文件的目录项,回收该文件所占用的存储空间,然后再清除该目录项。

    单级目录结构实现了 “按名存取”,但是存在查找速度慢、文件不允许重名、不便于文件共享等缺点,而且对于多用户的操作系统显然是不适用的。

    2) 两级目录结构。

    单级目录很容易造成文件名称的混淆,可以考虑釆用两级方案,将文件目录分成主文件目录(Master File Directory, MFD)和用户文件目录(User File Directory, UFD)两级,如图4-4所示。


    图4-4  两级目录结构

    主文件目录项记录用户名及相应用户文件目录所在的存储位置。用户文件目录项记录该用户文件的FCB信息。当某用户欲对其文件进行访问时,只需搜索该用户对应的UFD,这既解决了不同用户文件的“重名”问题,也在一定程度上保证了文件的安全。

    两级目录结构可以解决多用户之间的文件重名问题,文件系统可以在目录上实现访问限制。但是两级目录结构缺乏灵活性,不能对文件分类。

    3) 多级目录结构(树形目录结构)。

    将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构,如图4-5所示。

    用户要访问某个文件时用文件的路径名标识文件,文件路径名是个字符串,由从根目录出发到所找文件的通路上的所有目录名与数据文件名用分隔符链接起来而成。从根目录出发的路径称绝对路径。当层次较多时,每次从根目录查询浪费时间,于是加入了当前目录,进程对各文件的访问都是相对于当前目录进行的。当用户要访问某个文件时,使用相对路径标识文件,相对路径由从当前目录出发到所找文件通路上所有目录名与数据文件名用分隔符“/”链接而成。


    图4-5  树形目录结枸

    图4-5是Linux操作系统的目录结构,“/dev/hda”就是一个绝对路径。若当前目录为 “/bin”,则“./ls”就是一个相对路径,其中符号表示当前工作目录。

    通常,每个用户都有各自的“当前目录”,登录后自动进入该用户的“当前目录”。操作系统提供一条专门的系统调用,供用户随时改变“当前目录”。例如,UNIX系统中, “/etc/passwd”文件就包含有用户登录时默认的“当前目录”,可用cd命令改变“当前目录”。

    树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,在树形目录中查找一个文件,需要按路径名逐级访问中间结点,这就增加了磁盘访问次数,无疑将影响查询速度。

    4) 无环图目录结构。

    树形目录结构可便于实现文件分类,但不便于实现文件共享,为此在树形目录结构的基础上增加了一些指向同一结点的有向边,使整个目录成为一个有向无环图。引入无环图目录结构是为了实现文件共享,如图4-6所示。

    当某用户要求删除一个共享结点时,若系统只是简单地将它删除,当另一共享用户需要访问时,却无法找到这个文件而发生错误。为此可以为每个共享结点设置一个共享计数器,每当图中增加对该结点的共享链时,计数器加 1;每当某用户提出删除该结点时,计数器减1。仅当共享计数器为0时,才真正删除该结点,否则仅删除请求用户的共享链。


    图4-6  图形目录结构

    共享文件(或目录)不同于文件拷贝(副本)。如果有两个文件拷贝,每个程序员看到的是拷贝而不是原件;但如果一个文件被修改,那么另一个程序员的拷贝不会有改变。对于共享文件,只存在一个真正文件,任何改变都会为其他用户所见。

    无环图目录结构方便实现了文件的共享,但使得系统的管理变得更加复杂。

    4.5 共享文件:硬链接和软链接

    文件共享使多个用户(进程)共享同一份文件,系统中只需保留该文件的一份副本。如果系统不能提供共享功能,那么每个需要该文件的用户都要有各自的副本,会造成对存储空间的极大浪费。随着计算机技术的发展,文件共享的范围已由单机系统发展到多机系统,进而通过网络扩展到全球。这些文件的分享是通过分布式文件系统、远程文件系统、分布式信息系统实现的。这些系统允许多个客户通过C/S模型共享网络中的服务器文件。

    现代常用的两种文件共享方法有:

    基于索引结点的共享方式(硬链接)

    在树形结构的目录中,当有两个或多个用户要共享一个子目录或文件时,必须将共享文件或子目录链接到两个或多个用户的目录中,才能方便地找到该文件,如图4-7所示。


    图4-7  基于索引结点的共享方式

    在这种共享方式中引用索引结点,即诸如文件的物理地址及其他的文件属性等信息,不再是放在目录项中,而是放在索引结点中。在文件目录中只设置文件名及指向相应索引结点的指针。在索引结点中还应有一个链接计数count,用于表示链接到本索引结点(亦即文件) 上的用户目录项的数目。当count=2时,表示有两个用户目录项链接到本文件上,或者说是有两个用户共享此文件。

    当用户A创建一个新文件时,它便是该文件的所有者,此时将count置为1。当有用户 B要共享此文件时,在用户B的目录中增加一个目录项,并设置一指针指向该文件的索引结点。此时,文件主仍然是用户A,count=2。如果用户A不再需要此文件,不能将文件直接删除。因为,若删除了该文件,也必然删除了该文件的索引结点,这样便会便用户B的指针悬空,而用户B则可能正在此文件上执行写操作,此时用户B会无法访问到文件。因此用户A不能删除此文件,只是将该文件的count减1,然后删除自己目录中的相应目录项。用户B仍可以使用该文件。当COunt=0时,表示没有用户使用该文件,系统将负责删除该文件。如图4-8给出了用户B链接到文件上的前、后情况。

    利用符号链实现文件共享(软链接)

    为使用户B能共享用户A的一个文件F,可以由系统创建一个LINK类型的新文件,也取名为F,并将文件F写入用户B的目录中,以实现用户B的目录与文件F的链接。在新文件中只包含被链接文件F的路径名。这样的链接方法被称为符号链接。


    图4-8  文件共享中的链接计数

    新文件中的路径名则只被看做是符号链,当用户B要访问被链接的文件F且正要读 LINK类新文件时,操作系统根据新文件中的路径名去读该文件,从而实现了用户B对文件 F的共享。

    在利用符号链方式实现文件共享时,只有文件的拥有者才拥有指向其索引结点的指针。而共享该文件的其他用户则只有该文件的路径名,并不拥有指向其索引结点的指针。这样,也就不会发生在文件主删除一共享文件后留下一悬空指针的情况。当文件的拥有者把一个共享文件删除后,其他用户通过符号链去访问它时,会出现访问失败,于是将符号链删除,此时不会产生任何影响。当然,利用符号链实现文件共享仍然存在问题,例如:一个文件釆用符号链方式共享,当文件拥有者将其删除,而在共享的其他用户使用其符号链接访问该文件之前,又有人在同一路径下创建了另一个具有同样名称的文件,则该符号链将仍然有效,但访问的文件已经改变,从而导致错误。

    在符号链的共享方式中,当其他用户读共享文件时,需要根据文件路径名逐个地查找目录,直至找到该文件的索引结点。因此,每次访问时,都可能要多次地读盘,使得访问文件的开销变大并增加了启动磁盘的频率。此外,符号链的索引结点也要耗费一定的磁盘空间。符号链方式有一个很大的优点,即网络共享只需提供该文件所在机器的网络地址以及该机器中的文件路径即可。

    上述两种链接方式都存在一个共同的问题,即每个共享文件都有几个文件名。换言之,每增加一条链接,就增加一个文件名。这实质上就是每个用户都使用自己的路径名去访问共享文件。当我们试图去遍历整个文件系统时,将会多次遍历到该共享文件。

    硬链接和软链接都是文件系统中的静态共享方法,在文件系统中还存在着另外的共享需求,即两个进程同时对同一个文件进行操作,这样的共享可以称为动态共享。

    4.6 文件保护:文件访问类型和访问控制

    为了防止文件共享可能会导致文件被破坏或未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题。为此,必须在文件系统中建立相应的文件保护机制。

    文件保护通过口令保护、加密保护和访问控制等方式实现。其中,口令保护和加密保护是为了防止用户文件被他人存取或窃取,而访问控制则用于控制用户对文件的访问方式。

    访问类型

    对文件的保护可以从限制对文件的访问类型中出发。可加以控制的访问类型主要有以下几种:
    • 读:从文件中读。
    • 写:向文件中写。
    • 执行:将文件装入内存并执行。
    • 添加:将新信息添加到文件结尾部分。
    • 删除:删除文件,释放空间。
    • 列表清单:列出文件名和文件属性。

    此外还可以对文件的重命名、复制、编辑等加以控制。这些高层的功能可以通过系统程序调用低层系统调用来实现。保护可以只在低层提供。例如,复制文件可利用一系列的读请求来完成。这样,具有读访问用户同时也具有复制和打印的权限了。

    访问控制

    解决访问控制最常用的方法是根据用户身份进行控制。而实现基于身份访问的最为普通的方法是为每个文件和目录增加一个访问控制列表(Access-Control List, ACL),以规定每个用户名及其所允许的访问类型

    这种方法的优点是可以使用复杂的访问方法。其缺点是长度无法预期并且可能导致复杂的空间管理,使用精简的访问列表可以解决这个问题。

    精简的访问列表釆用拥有者、组和其他三种用户类型。
    • 拥有者:创建文件的用户。
    • 组:一组需要共享文件且具有类似访问的用户。
    • 其他:系统内的所有其他用户。

    这样只需用三个域列出访问表中这三类用户的访问权限即可。文件拥有者在创建文件时,说明创建者用户名及所在的组名,系统在创建文件时也将文件主的名字、所属组名列在该文件的FCB中。用户访问该文件时,按照拥有者所拥有的权限访问文件,如果用户和拥有者在同一个用户组则按照同组权限访问,否则只能按其他用户权限访问。UNIX操作系统即釆用此种方法。

    口令和密码是另外两种访问控制方法。

    口令指用户在建立一个文件时提供一个口令,系统为其建立FCB时附上相应口令,同时告诉允许共享该文件的其他用户。用户请求访问时必须提供相应口令。这种方法时间和空间的开销不多,缺点是口令直接存在系统内部,不够安全。

    密码指用户对文件进行加密,文件被访问时需要使用密钥。这种方法保密性强,节省了存储空间,不过编码和译码要花费一定时间。

    口令和密码都是防止用户文件被他人存取或窃取,并没有控制用户对文件的访问类型。

    注意两个问题:
    • 现代操作系统常用的文件保护方法,是将访问控制列表与用户、组和其他成员访问控制方案一起组合使用。
    • 对于多级目录结构而言,不仅需要保护单个文件,而且还需要保护子目录内的文件, 即需要提供目录保护机制。目录操作与文件操作并不相同,因此需要不同的保护机制。
    展开全文
  • 文件管理

    2020-07-31 19:51:46
    文件管理 1.文件结构 -linux的哲学思想就是一切皆文件,linux的文件系统就是一个倒状的树形结构,一切都以/(根目录)开始, 二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin 库...
  • 文件管理(一)

    2019-10-01 19:37:03
    文件管理     2.硬链接和软链接     3.扩展 文件管理 文件有两类数据: 元数据:metadata 数据描述信息 数据:data 数据信息本身 文件命名规则 文件名最长255个字节 包括路径在内文件名称...
  • DocSys - 基于Web的文件管理系统

    万次阅读 2020-03-02 18:02:06
    旨在为个人和企业用户提供一个简单、方便的文件存储方案,采用Windows桌面系统和Apple手机的用户操作习惯,支持使用SVN和GIT进行历史版本管理、支持文件内容全文搜索、支持文件预览、支持文件权限管理、支持用户分组...
  • 说是文件需要管理员权限才能删除的解决。 右键点击要删除文件,选择属性,选择安全。 点击编辑,添加Administrator   点击确定,分配Administrator的权限为完全控制   点击应用,然后确认,ok解决! ...
  • 在窗口边依次打开计算机配置——Windows设置——安全设置——本地策略——安全选项;...在右边窗口找到用户控制——以管理员批准模式运行所有管理员; 然后右击属性,勾选禁用选项,重启计算机即可 ...
  • java实现的简单文件管理系统

    万次阅读 热门讨论 2009-09-16 14:51:00
    设计一个文件管理方案,模拟一个简单的文件管理系统。要求目录结构为树型结构,目录下可以是目录,也可以是文件。通过该实验是学生可以深刻理解文件系统的概念、所涉及的基本操作及实现时的主要数据结构。 
  • 一款不错的PHP在线文件管理系统,PHP WEBFTP,挺好用,推荐使用 名字:kodexplorer 官方地址:http://www.kalcaddle.com/
  • 推荐一款最好用的windows文件管理

    万次阅读 2018-08-20 14:53:13
    在日常生活或工作中,除了一些文本编辑工具以及网页浏览器以外,我们接触的最多的可能就是资源管理器了。资源管理器软件有很多。如:   Clover 、QTTabBar、FreeCommander、WindowsTabs、Q-Dir、Total Commander...
  • 之前在装oracle数据库的时候,由于没装成功,想卸载掉,但是某些文件却删不掉,需要一些权限。例如下图: 解决方案: 右击该文件,选择属性,找到安全,选择高级: 选择更改: 选择高级: ...
  • 删除文件时候显示“文件已在资源管理器中打开”快速解决方法
  • 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的时间太多。还有一些朋友希望将空间变成一个文件存储站,这时就需要一个功能...
  • mac中修改文件需要管理员权限

    万次阅读 2018-07-06 14:12:58
    最近在做项目时,修改个别文件出现以下提示“权限不足,以管理员身份重试”,每次修改都需要输入电脑密码。如下图:后发现是文件设置了权限,通过右击文件查看简介发现权限中,并不包含管理员点击小锁输入密码,然后...
  • Win10文件资源管理器右键卡死

    万次阅读 2019-03-13 09:10:55
    Windows10文件资源管理器操作变慢 Windows10自动更新太烦人了,尝试了很多中方法也没禁用成功。昨天自动更新以后,今天使用Windows10,发现文件资源管理器打开的时候慢了很多,打开之后里面的文件夹、文件图标要好久...
  • 有时候因为手机内存不足,手机会...这时候很多朋友都会使用手机自带的文件管理器来删除掉多余的文件,手机管理器也会根据文件的属性为我们分好类别方便我们操作。但是系统预装的软件有一个缺点,就是没有内置一个回收
  • 解决win10文件资源管理器崩溃问题

    万次阅读 多人点赞 2018-12-19 12:58:40
    最近电脑的文件资源管理器一直出现随机崩溃的问题,通过查看日志 病毒扫描 系统修复都没有解决这个问题,偶然在网上看到一篇帖子竟然解决了这个问题。 竟然是因为这个详细信息窗格!虽然不了解深层的原因,不过希望...
1 2 3 4 5 ... 20
收藏数 3,035,236
精华内容 1,214,094
关键字:

文件管理