1.什么是文件和文件系统? 文件系统的主要功能。UNIX系统如何对文件进行分类?它有什么好处?
文件:⽂件是存储在外部存储器上的具有符号名的相关信息的集合。
文件系统:OS中管理⽂件的软件机构,包括管理⽂件所需的数据结构、相应的管理软件和被管理的⽂件。

文件系统的主要功能:
-管理⽂件存储器。记录存储空间使⽤情况,实现分配和回收
-实现按名存取。利⽤⽬录结构快速定位⽂件
-应具有灵活多样的⽂件结构和存取⽅法,便于⽤户存储和加⼯处理信息
-提供⼀套使⽤⽅便、简单的操作命令
-保证⽂件信息的安全性
-便于⽂件的共享

UNIX系统对文件分类:
-普通⽂件:通常的⽂件
-⽬录⽂件:由⽂件⽬录构成的⼀类⽤来维护⽂件系统结构的⽂件。对其处理同普通⽂件
-特别⽂件:输⼊设备和输出设备(字符型特别⽂件),输⼊/输出型设备(字符块特别⽂件),管道⽂件

好处:
-提高灵活性和扩展性
文件分类让系统具有较高的灵活性,能够支持不同类型的文件和资源。操作系统和应用程序可以根据不同类型的文件采取不同的处理方式。例如,普通文件可以直接读取,设备文件则通过特殊的系统调用进行访问,符号链接文件则被解析为其他文件的路径。
这种分类机制使得UNIX系统能够轻松支持新类型的文件,甚至可以通过用户自定义的文件类型来扩展文件系统的功能。
-简化文件管理和操作
通过对文件进行分类,UNIX系统为用户提供了直观的文件管理方式。例如,目录文件提供了层次化的结构来组织文件,而设备文件则允许用户通过文件操作对硬件设备进行控制。
用户和程序可以根据文件类型决定如何操作和访问文件,从而避免了混淆和误操作。
-增强进程间通信
管道文件和套接字文件为进程间通信提供了简便的机制。通过这些文件,进程可以方便地传递数据或消息,不需要复杂的IPC(Inter-Process Communication)机制。
使用有名管道、套接字文件等,可以在不同进程之间实现高效的消息传递、数据共享和网络通信。
-设备管理
设备文件使得UNIX系统能够统一管理所有硬件设备。通过文件系统接口,用户和应用程序可以直接与硬件进行交互,而不需要关心底层硬件细节。
这种方式使得硬件设备管理变得简化,尤其是在设备驱动的加载、配置以及控制方面,增强了系统的可维护性和可扩展性。
-支持多种文件操作
不同类型的文件支持不同的操作。比如,普通文件支持读取和写入操作,设备文件支持设备控制操作,套接字文件支持网络通信等。
这种分类允许操作系统提供专门的文件访问方法,从而提高了效率和安全性。
-文件系统一致性
在UNIX系统中,所有的资源(包括硬件设备、进程间通信等)都可以通过文件来访问。这种一致性设计简化了操作系统的实现,并为用户和程序提供了统一的接口,使得用户能够用一致的方式处理所有类型的文件。

2.文件目录的作用是什么?文件目录项通常包含哪些内容? 文件控制块。
文件目录的作用:
-组织文件和管理文件系统:
文件目录为操作系统提供了一个层次化的方式来组织文件,使得文件能够根据路径(如目录结构)进行管理。通过文件目录,用户可以在文件系统中查找和定位文件。
文件目录使得文件可以被有序存储,避免了所有文件都在一个“平面”中堆叠,从而提供了良好的层次结构和文件管理机制。
-文件查找和访问:
目录包含了文件名和其他相关信息,操作系统可以通过目录信息快速定位文件的位置(如在磁盘上的位置)。
当用户访问文件时,文件系统通过查阅目录项来获取文件的存储位置和属性,从而实现对文件的读取、写入等操作。
-支持文件的创建、删除和修改:
文件目录记录了文件的元数据(如文件名、文件类型、文件大小等),操作系统通过文件目录来创建新文件、删除旧文件或更新文件属性。
当文件创建时,系统会在目录中加入相应的目录项,并为文件分配存储空间;文件删除时,系统会从目录中移除该项。
-文件访问控制和权限管理:
目录项通常包含文件的权限信息(如读、写、执行权限),操作系统根据目录中的权限设置来控制对文件的访问。
用户在访问文件时,系统会根据目录项中的权限信息,检查是否允许执行相应的操作,从而确保文件的安全性。
-提供路径信息:
目录为文件提供了路径信息,路径描述了从根目录到目标文件的访问路径。文件路径可以是相对路径或绝对路径,帮助用户和程序找到目标文件。
-多用户支持和命名空间:
文件目录提供了一个命名空间,确保不同用户可以在同一系统中使用相同的文件名而不冲突。每个用户通常有自己的文件目录,操作系统通过不同的目录结构来支持多用户环境。
文件目录中的文件名和路径不仅有助于定位文件,还能确保不同用户和进程能独立管理自己的文件。

文件目录项包含的内容:
-文件名
-文件标识符或文件句柄
-文件类型
-文件的存储位置
-文件大小
-文件的权限信息
-文件的创建时间、修改时间和访问时间
-文件的所有者和所属用户组
-链接计数
-其他文件元数据

文件目录的好处:
-高效管理文件:文件目录使得文件在文件系统中有序排列,能够高效地查找、访问和管理文件。
-支持文件的权限管理:通过文件目录项中的权限信息,操作系统可以有效地控制对文件的访问,保障文件的安全性。
-灵活的文件操作:文件目录为文件创建、删除、移动和重命名等操作提供了支持,同时为文件访问提供了路径信息。
-支持文件系统的多层次结构:通过目录结构,UNIX/Linux等系统支持层次化的文件系统,使得文件组织更加清晰和易于管理。

3.文件的逻辑结构有几种形式?文件的存取方法?
文件逻辑结构的形式:
⽆结构的字节流式⽂件:由⽆结构的先后到达的相关字节组成
有结构的记录式⽂件:分为定⻓记录式⽂件和变⻓记录式⽂件

文件的存取方法:
顺序存取:按照⽂件信息的逻辑顺序依次存取;适⽤于顺序访问设备(磁带)和随机访问设备(磁盘)
直接存取(随机存取):基于⽂件的磁盘模型,磁盘允许对任意⽂件块进⾏随机读和写

4.文件的物理结构有哪几种?对于不同的结构,文件系统是如何进行管理的?
文件的物理结构种类:连续⽂件(顺序⽂件)、链接⽂件、索引⽂件、索引顺序⽂件。
连续文件:⽂件内容连续存放;
链接文件:不要求⽂件内容连续存放。把⽂件所占⽤的物理块⽤链接指针链接起来;
索引文件:为每个⽂件建⽴⼀张索引表;⽤索引表记录⽂件内容的存放地址,即记录⽂件的逻辑块号和物理块号之间的对应关系
文件目录表:当索引表⻓度超过⼀个磁盘块时,还要对索引表进⾏索引,即建⽴⼆级索引。

5.DOS文件卷的结构,DOS系统的文件物理结构是什么?
DOS文件卷的结构:由多个块(扇区)组成、其⼤⼩由该逻辑盘数据区块数决定,取整数个扇区。
物理结构:采⽤链接结构。

6.了解记录的组块和分解。
记录的组块:把多个逻辑记录放在⼀个物理块中的⼯作
-必须使⽤主存缓冲区:信息交换是以块为单位进⾏的。⽤户将要写的记录先写⼊主存缓冲区,当缓冲区满时,再写磁盘。
记录的分解:从⼀个物理块中将⼀个逻辑记录分离出来的⼯作
-⽤户使⽤记录时,先将包含该记录的物理块读⼊内存缓冲区,然后进⾏记录分解。

7.文件存储空间的管理方法有几种?它们各是如何实现文件存储空间的分配和回收的?
连续分配、链式分配、索引分配、混合分配
连续分配:通过连续的存储块来提高读写速度,但可能引起磁盘碎片。
链式分配:通过链表的方式避免磁盘碎片,但会牺牲存取效率。
索引分配:通过索引块来高效管理文件的非连续存储,支持随机访问,但需要额外的存储空间。
混合分配:结合多种分配方式的优点,灵活适应不同的需求。

8.建立多级目录有哪些好处?文件的重名和共享问题是如何得到解决的?
建立多级目录的好处:
-层次结构清晰,便于管理和保护
-有利于文件分类
-解决重名问题
-提高文件检索速度
-能够控制存取权限

文件重名问题的解决通常依赖于路径、文件系统的命名规则(如区分大小写)、唯一标识符(如时间戳或ID)和版本控制系统等机制,以确保每个文件有唯一的标识。
文件共享问题的解决则主要通过文件锁定机制、多版本管理、分布式文件系统、网络文件系统、访问权限管理和进程同步机制等手段来确保多个用户或进程可以安全、有效地共享文件,避免数据冲突或丢失。

9.文件系统中,常用的文件操作命令有哪些?它们的具体功能是什么?打开和关闭文件命令的目的是什么?
创建⽂件
-主要功能:在指定设备上为指定路径名的⽂件建⽴⼀个⽬录项,并设置⽂件的有关属性。
删除⽂件
-主要功能:根据⽂件的路径名找到指定的⽬录项,回收其占⽤的各个物理块,再将该⽬录项置为空。
打开⽂件:建⽴进程和⽂件之间联系
-根据⽂件路径名找到⽂件⽬录项,进⽽找到FCB。FCB进内存,再创建⽂件对象。
-系统打开⽂件表是由⽂件对象组成的链表。
-⽂件对象记录了⽂件读/写位置指针、⽂件⽅法、共享该⽂件的进程数等信息。
-Linux,⽂件对象地址记录在进程打开⽂件表⾥;Windows⽂件对象地址记录在进程句柄表⾥。返回表的索引。
关闭⽂件
-释放⽂件在主存⾥的⽬录项,切断⽤户与⽂件的联系。
-若⽬录项被修改过,则写回辅存。
-若⽂件被修改过,则写回辅存。
读⽂件
-命令中必须指出要读的数据个数,以及存放数据的主存地址。
-根据⽂件所在设备、⽂件类型的不同,系统设置不同的读命令。
写⽂件
-命令中必须指出要写的数据个数,以及存放数据的主存地址,将主存中的数据写到指定的⽂件中。
追加⽂件
-限制了写⽂件的形式,将数据追加到⽂件尾。
随机存取⽂件
-重新定位⽂件的读/写位置指针。
得到⽂件属性(Get Attributes)
-进程在执⾏时常常需要了解⽂件的属性。在UNIX系统中,⼀个软件开发项⽬通常由多个源⽂件组成,make程序⽤来管理这些源⽂件。当make被调⽤时,它检查所有源⽂件和⽬标⽂件的修改时间,并且编排出需要重新编译的⽂件数。
设置⽂件属性(Set Attributes)
-修改⽂件的⼀些属性,以适应⽤户的要求。
重命名(Rename)⽂件
-重新命名⼀个已经存在的⽂件。

10.存取控制表ACL的概念。
为存取控制矩阵中的每⼀列建⽴⼀张存取控制表(ACL),⽤⼀有序对(域, 权集)表示。
⽂件的ACL记录在FCB中。

11.理解内存映射文件(memory mapped file)的过程。
映射文件到虚拟内存:
当程序使用内存映射文件时,它会请求操作系统将文件映射到进程的虚拟内存空间。映射的过程由操作系统的虚拟内存管理系统负责,它会在进程的虚拟内存空间中为文件内容分配一个连续的内存区域。
映射过程中,操作系统将文件的物理块与虚拟内存中的地址进行关联。通常,操作系统会为文件中的每一块数据分配虚拟地址,这些地址指向文件的内容,而不是实际的物理内存位置。
访问文件内容:
映射完成后,程序就可以像操作普通内存一样访问文件的内容。例如,可以直接通过指针或数组来访问文件内容,而无需调用文件操作系统的读取接口。
操作系统会负责管理文件内容的加载。当程序访问文件的某个部分时,如果该部分还没有被加载到内存中,操作系统会在后台从磁盘读取数据并将其加载到内存。这种机制叫做按需加载(demand paging)。
修改文件内容:
当程序通过映射区域修改内存中的数据时,操作系统会将修改的内容同步到文件中,确保文件内容与内存中的数据保持一致。
在某些情况下,操作系统可能会推迟文件内容的同步(即延迟写入),直到进程显式要求刷新(flush)或进程退出时自动刷新。
同步(Synchronization):
如果多个进程共享同一个映射文件,操作系统会负责确保对文件的更改在所有进程中是可见的。操作系统通过内存保护机制和同步原语(如锁)来协调进程对共享映射区域的访问,避免数据不一致