文件管理
文件管理
1.初始文件管理
1.相关问题
1.文件内部的数据应该怎样组织?
2.文件之间的数据应该怎样组织?
3.从下往上看,OS应该提供哪些功能,才能方便用户、应用程序使用文件?
4.从上往下看,文件数据应该怎么存放在外存(磁盘)上?
2.文件的属性
1.文件名:由创建文件的用户决定文件名,主要四为了方便用户找到文件,同一目录下允许有重名文件。
2.标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
3.类型:指明文件的类型
4.大小:指明文件大小
5.创建时间、上次修改时间
6.文件所有者信息
7.保护信息:对文件进行保护的访问控制信息
3.文件内部的数据组织形式
1.无结构文件:(文本文件)由一系列二进制或字符流组成
2.有结构文件:(数据库表)由一组相似的记录组成,又称“记录式”文件;
1)记录是一组相关数据项的集合;
2)数据项是文件系统中最基本的数据单位
4.文件之间组织形式
5.操作系统应该向上提供哪些功能
1.创建文件(cteate系统调用)
2.删除文件(delete系统调用)
3.读文件(read系统调用)
4.写文件(write系统调用)
5.打开文件(open系统调用)
6.关闭文件(close系统调用)
在读写文件之前,需要“打开文件”
读写文件之后,需要关闭文件
6.从上往下看,文件应该如何存放在外存
1、与内存一样,外存也是由一个个存储单元组成的,每个存储单元可以存储一定量的数据(如1B)。每个存储单元对应一个物理地址
2、类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块"。每个磁盘块的大小是相等的,每块一般包含2的整数幂个地址。同样类似的是,文件的逻辑地址也可以分为(逻辑块号,块内地址),操作系统同样需要将逻辑地址转换为外存的物理地址(物理块号,块内地址)的形式。块内地址的位数取决于磁盘块的大小。
3、操作系统以”块“为单位为文件分配存储空间,因此及时一个文件大小只有10B,但它依然需要占用1KB的磁盘块。外存中的数据读入内存时同样以块为单位。
7.操作系统需要实现的文件管理功能
1.文件共享
2.文件保护
2.文件的逻辑结构
”逻辑结构“,就是指在用户看来,文件内部的数据应该是如何组织起来的。
”物理结构“指的是在操作系统看来,文件的数据是如何存放在外存中的。
1.无结构文件
文件内部的数据就是一系列二进制流或字符流组成。又称”流式文件“
2.有结构文件逻辑结构
由一组相似的记录组成,又称”记录式文件"。每条记录又有如干戈数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。
1.顺序文件
2.索引文件
3.索引顺序文件
3.顺序文件
文件中的记录一个接一个地顺序排列(逻辑上),记录可以使定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
顺序存储:逻辑上相邻的记录物理上也相邻(类似于顺序表)
链式存储:逻辑上相邻的记录物理上不一定相邻(类似于链表)
串结构:记录之间的顺序与关键字无关;通常按照记录存入的时间决定记录的顺序
顺序结构:记录之间的顺序按关键字顺序排列
顺序文件的缺点是:增加/删除一个记录比较困难(如果是串结构则相对简单)
4.索引文件
5.索引顺序文件
3.文件目录
目录本身是一种有结构文件,由一条条记录组成。每条记录对应一个在该目录下的文件
1.文件控制块
1、目录文件中的一条记录就是一个”文件控制块“FCB
2、FCB的有序集合称为”文件目录“,一个FCB就是一个文件目录项。
3、FCB中包好了文件的基本信息(文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等)
4、FCB实现了文件名和文件之间的映射。使用户(用户程序)可以实现”按名存取”
5、需要对目录进行哪些操作?
1)搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项
2)创建文件:创建一个新文件时,需要在其所属的目录中增加一个目录项
3)删除文件:当删除一个文件时,需要在目录中删除对应的目录项
4)显示目录:用户可以请求显示目录的内容,如果显示该目录中的所有文件及相应属性
5)修改目录:某些文件属性保存在目录中,因此这些属性变化时需要修改相应的目录项(如:文件重命名)
2.目录结构
1.单机目录结构
早期的操作系统并不支持多级目录,整个系统只建立一张目录表,每个文件占一个目录项。
单级目录实现了“按名存取”,但是不允许文件重名
在创建一个文件时,需要先检查目录表中有没有重名文件,确定不重名后才能允许建立文件,并将新文件对应的目录项插入目录表中。
单级目录结构不适用于多用户操作系统
2.两级目录结构
早期的多用户操作系统,采用两级目录结构。分为主文件目录MFD和用户文件目录UFD
3.多级目录结构
又称树型目录结构
用户(或进程)要访问某个文件时要用文件路径名称标识文件,文件路径名是个字符串。各级目录之间用"/"隔开。从根目录出发的路径称为绝对路径。
系统根据绝对路径一层一层地找到下一级目录。
如果每次从根目录查找文件的话,效率会很低,也要进行多次I/O操作,所以提出了相对目录,当用户想要访问某个文件时,可以使用从当前目录出发的相对路径
优缺点:树型目录结构可以很方便的对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树型结构不便于实现文件的共享。为此,提出了“无环图目录结构”
4.无环图目录结构
注意:只有共享计数器为0才能删除文件
3.索引节点(FCB的改进)
4.文件的物理结构
操作系统需要对磁盘块进行管理:对非空闲磁盘块的管理(存放了文件数据的磁盘块);对空闲磁盘块的管理
本节讨论对非空闲磁盘块的管理方式
1.文件块、磁盘块
2.连续分配
要求:每个文件在磁盘上占有一组连续的块
优点:
1.支持直接访问和随机访问
2.连续分配的文件在顺序读/写时速度最快(移动磁头的时间越短)
缺点:
1.物理上采用连续分配的文件不方便拓展
2.物理上采用连续分配存储空间利用率低,会产生难以利用的磁盘碎片(可以用紧凑技术来处理碎片,但是要耗费很大的时间代价)
3.链接分配
链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显示链接两种。
1.隐式链接
因为是离散分配的,所以要拓展文件很方便。也不会产生磁盘碎片
2.显示链接
文件逻辑块号到物理地址的转换
注意:整个磁盘只有一张FAT表,每个文件目录的目录项中都存放起始块号,类似于头结点,以此找到存放文件数据的所有块
3.总结
4.索引分配
1.概念
索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块;索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
目录中需要记录文件的索引块是几号磁盘块
注意:索引分配是为每一个文件创建一张索引表,而在显示链接的链式分配方式中,文件分配表FAT是一个磁盘对应一张。
2.实现逻辑块号到物理块号的转变
1)先找到索引表
2)通过索引表,就可以找打所有存放数据的物理块
4.链接方案
5.多层索引
类似于多级页表
存在问题:对小文件不友好,小文件虽然只有一个物理块,但是访问小文件还是要进行多次I/O操作
6.混合索引
7.总结
5.总结
5.文件的物理结构
本节讨论对空闲磁盘块的管理
1.存储空间的划分与初始化
2.空闲表法
3.空闲链表法
1.空闲盘块链
2.空闲盘区链
4.位示图法
1.方法
2.如何分配分配与回收
5.成组链接法
1.思想
2.如何分配和回收
超级块相当于链头
3.如何回收
注意:在成组链接法中,空闲盘块是可以不连续的,所以盘块号只是起连接作用,在分配和回收过程中用不到
6.文件的基本操作
1.创建文件
进行create系统调用,需要提供一下介个主要参数:
1.所需的外存空间大小
2.文件存放路径
3.文件名
操作系统处理create系统调用时,主要做了两件事:
1.在外存中找到文件所需的空间
2.根据文件存放路径的信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项。目录项中包含了文件名、文件在外存中的存放位置等信息。
2.删除文件
进行delete系统调用,如要提供一下几个参数:
1.文件的存放路径
2.文件名
操作系统在处理delete系统调用时,主要作了一下几件事:
1.根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项。
2.根据该目录项记录的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盘块。
3.从目录表中删除文件对应的目录项。
3.打开文件
很多操作系统中,在对文件进行操作之前,要求用户先使用open系统调用“打开文件”,需要提供一下几个主要参数:
1.文件存放路径
2.文件名
3.要对文件的操作类型(r,rw)
操作系统在处理open系统调用时,主要做了几件事:
1.根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项,并检查该用户是否有指定的操作权限。
2.将目录项复制到内存中的“打开文件表“中。并将对应表目的编号返回给用户。之后用户使用打开文件的编号来指明要操作的文件。(之后用户进程A操作文件就不需要每次都重新查目录了,这样可以加快文件的访问速度)
4.关闭文件
5.读文件
6.写文件
7.文件共享
操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件
注意:多个用户共享同一个文件,意味着系统中只有”一份“文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。与复制不同
1.基于索引节点的共享方式(硬链接)
1、索引节点中设置一个连接技术变量count,用于表示链接到本索引节点上的用户目录项数。
2、实质上是不同用户的目录项指向同一个索引节点,不同用户的文件名可以不同,共同指向同一个索引节点。起别名
3.如果某个用户决定要删除该文件,则只是把用户目录中与该文件对应的目录项删除,且索引节点的count-1;如果count>0,说明还有别的用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空。count = 0,删除文件
2.基于符号链的共享方式(软连接)
1、用户A和用户B共享同一个文件,采用软连接的方式,实际上,操作系统会为某个用户新建一个”链接文件“,这类型的文件类似于Window中的快捷方式,该文件中存放的是共享文件的路径。
2、访问共享文件的过程:先访问连接文件,使用特殊的访问方式,找到链接文件中存放的路径,进而找该路径下的文件,即可最终找到共享文件。
3、对于软连接的方式,如果删除共享文件,则软连接会实效,找不到实际的共享文件。如果仅删除链接文件,则原来的文件时不会被影响。(类似于window中的快捷方式,快捷方式就是一种链接文件)
4、由于软连接方式访问共享文件时要查询多级目录,会有多级磁盘I/O,因此用软连接访问速度相较于硬链接慢一些。
8.文件保护
1.口令保护
1、为文件设置一个”口令“,用户请求访问该文件时,必须提供”口令“。
2、口令一般存放在文件对应的FCB或索引节点中。用户访问文件需要先输入”口令“,操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果正确,则允许该用户访问文件。
3、优点:保存口令的空间开销不多,验证口令的时间开销也很小。
4、缺点:正确的”口令“存放在系统内部,不够安全。
2.加密保护
1、使用某个“密码”对文件进行加密,在访问文件时需要提供正确的”密码“才能对文件进行正确的解密。(公钥加密、私钥解密)
2、优点:保密性强,不需要在系统中存储”密码“
3、缺点:编码/译码,或者说加密/解密要花费一定时间。
3.访问控制
1、在每个文件的FCB(或索引节点)中增加一个访问控制列表(ACL),该表中记录了各个用户可以对该文件执行哪些操作。
2、精简的访问列表:当用户很多时,每个用户一个访问控制列表不太现实;解决方案时:以”组“为单位,标记各”组“用户可以对文件执行哪些操作。
3、实现灵活,可以实现复杂的文件保护功能。
9.文件系统的层次结构
1.层次结构
2.例子
10.磁盘管理
1.磁盘的结构
1.磁盘:磁盘的表面由一些磁性物质组成,可以用这些磁性物质来记录二进制数据。
2.磁道:的盘面被划分成一个个磁道。这样的一个”圈“就是一个磁道
3.如何在磁盘中读写数据
4、盘面、柱面、物理地址
5、磁盘的分类
盘片是否可以更换又可以分为:可换盘磁盘、固定盘磁盘
2.磁盘调度算法
1.一次读磁盘、写磁盘的时间
总的平均存取时间 = 寻找时间 + 延迟时间 + 传输时间
注意:
1)延迟时间和传输时间都与磁盘转速相关,且为线性相关。而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间
2)操作系统唯一可以优化的时间是寻道时间,磁盘调度算法会直接影响寻道时间
2.减少磁盘延迟时间的方法:
原理:读完一个扇区后,需要一段时间处理才可以继续读入下一个扇区
1)交替编号:可以有效减少磁盘转动的圈数
2)错位命名:
3.磁盘地址结构的设计:
3.先来先服务算法FCFS
4.最短寻找时间优先算法SSTF
5.扫描算法SCAN-电梯算法
6.LOOK调度算法
解决SCAN算法的缺点的第一个问题
7.循环扫描算法C-SCAN
解决SCAN算法缺点的第二个问题,响应不平均
8.C-LOOK算法
解决C-SCAN算法的缺点
9.磁盘管理
1.磁盘初始化
2.引导块
3.坏块的管理