6.1文件的概念
1.是以计算机硬盘为载体的存储在计算机上的信息集合;
在系统运行时,计算机以进程为基本单位进行资源的调度和分配;
在用户进行的输入、输出中,则以文件为基本单位。
用户通过文件系统建立文件,提供应用程序的输入、输出,对资源进行管理。
文件的组成:有一块存储空间、分类和索引的信息、访问权限的信息。
文件的结构:自底向上描述:
数据项(文件系统中最低级的数据组织,分为基本数据项和组合数据项);
记录(一组相关的数据项的集合,描述属性);
文件(逻辑上可分为有结构文件和无结构文件;有结构文件由一组相似的记录组成,又叫做记录式文件;无结构文件则被视为字符流,又叫做流式文件)
2.文件属性:名称、标识符、类型、位置、大小、保护、时间日期和用户标识
3.文件基本操作(执行系统调用?):
创建文件(先找空间,再创建条目);
写文件(根据名称搜索文件位置并且维护一个写位置的指针);
读文件、文件重定位(删除内容,回收存储空间)、删除文件、截断文件(属性不变,删除内容,长度设为0,释放空间)
4.文件的打开和关闭
open:当用户首次打开文件时,使用open函数就可以根据文件名搜索将其从外存复制到内存打开文件表的一个表目中,并将该表木编号(索引)返回给用户。
例子1:fork()之后,子进程继承父进程打开的文件(继承、共享)
例子2:两个独立进程打开文件后的数据结构
打开文件表:操作系统维护一个包含所有打开文件信息的表即打开文件表,当用户需要一个文件操作时,可通过该表的一个索引指定文件,从而省略了搜索环节。当文件不再使用时,进程可关闭它,操作系统从打开文件表中删除这一条目。
文件打开计数器:记录多少进程打开了该文件(不是记录打开了多少个文件!),关闭操作使count递减,当count为0时,表示该文件不再被使用,系统将回收其资源,若文件被修改还将其写回外存并将打开文件表的相应条目删除,释放文件控制块(FCB)。
打开了的文件关联信息有:文件指针、文件打开计数、文件磁盘位置、访问权限。
6.2文件的逻辑结构
1.无结构文件(流式文件):有序相关信息项的集合,以字节为单位。对记录访问只能通过穷举搜索的方式,这种文件一般适用于源程序文件、目标代码文件等。
2.有结构文件(记录式文件):
顺序文件:记录通常定长,可以顺序存储或链表形式存储,访问时可以顺序搜索文件。并且又可分为两种结构,一种是串结构,记录之间顺序与关键字无关,按存入时间先后排序。另一种是顺序结构,即按关键字顺序排列。
优点:读或写一大批记录时,效率是所有逻辑文件中最高的。也只有顺序文件能存储在磁带上。
缺点:查找、修改、增删单条记录比较困难。
索引文件:
索引顺序文件:顺序和索引的结合。将顺序文件中的所有记录分为若干组,建立一张索引表,在索引表中为每组的第一条记录建立一个索引项。同一个组中的关键字可以无序,但是组与组的关键字必须有序。查找方式:查找一条记录时,首先通过索引表找到其所在的组,然后再该组中使用顺序查找。
直接文件或散列文件:给定记录的键值或通过散列函数转换的键值直接决定物理地址。
6.3 目录结构
1.所有文件的信息都保存在目录结构中,而目录保存在外存中。
目录管理的基本要求:从用户角度,文件名和文件之间提供映射;要提高对目录的检索速度;在共享系统中还要提供用于控制访问文件的信息;允许文件重名(树形)。
2.文件控制块(FCB):就是一个文件目录项。包含:基本信息(文件名、文件物理位置、逻辑结构等)、存取控制信息(权限)、使用信息(建立时间、修改时间等)。
3.索引和结点:在检索目录时,只需要用到文件名,找到对应的目录项。
存放在磁盘上的索引结点称为磁盘索引结点,UNIX每个文件都有唯一一个磁盘索引结点,主要包括:文件主标识符、文件类型、访问权限、物理位置、文件长度、链接计数、存取时间(飙泪权威昌吉市)。
文件打开后,索引结点被复制到内存。索引结点中会增加一些内容。
4.在目录结构上要执行的操作:搜索、创建文件(要增加一个目录项)、删除文件(要删除对应文件项)、显示目录(比如显示文件属性)、修改目录(比如属性变化时)。
在执行这些操作时候,又要考虑一些目录结构。
单级目录结构:查找速度慢、不允许重名、不便于文件共享(不用于多用户os)
两级目录结构:将文件目录分为主文件目录和用户文件目录。当用户访问某文件时,只需搜索用户对应的UFD。可重名,但缺乏灵活领,无法文件分类。
多级目录结构(树形):实现文件分类,结构清晰。但查找文件时需要逐级访问中间节点,增加磁盘访问次数,影响查找速度,不便文件共享。
无环图目录结构:加了一些指向同一节点的有向边,实现共享。这里注意!为每个共享节点设置共享计数器,有用户要删除计数值就减1,有用户来访问就加1。
不行了不行了,这下子是真没时间了,不做笔记了,QAQ,只记录一下框架,具体的在书上看了,卑微死我了awsl
6.4文件共享
基于索引节点的共享方式(硬链接)
利用符号链实现文件共享(软链接)
6.5文件保护
通过口令保护、加密保护、访问控制,前两者是为了防止用户文件被他人存取或者窃取,后者是控制用户对文件的访问方式。
访问类型:
访问控制:
6.6文件系统实现
1.文件系统层次结构:用户调用接口、文件目录系统、存取控制验证、逻辑文件系统与文件信息缓冲区、物理文件系统、辅助分配模块、设备管理程序模块。
思考:
你能画出文件系统层次结构图吗?
你能指出各个层次的功能吗?
你能举例说明这些层次的工作方式吗?
2.目录实现:
最简单的方法是存储文件名和数据块指针的线性表,实现简单,比较费时。
哈希表,查找迅速,插入和删除也比较简单,不过需要一些预备措施来避免冲突,最大的困难是哈希表长度固定并且哈希函数对表长的依赖性。
3.文件实现:
常用的磁盘空间分配方法有三种:连续分配、链接分配、索引分配。
分析分配方式的好坏从如下几点分析:会不会有碎片、随机存取速度、是否容易导致文件损坏、实现难度。
4.文件存储空间管理
文件存储器空间的划分与初始化
文件存储器空间管理:空闲表法、空闲链表法、位示图法、成组链接法
不写了 wsl