存储空间的划分和初始化
首先将物理磁盘划分为一个个文件卷(逻辑卷/逻辑盘)
对于一个文件卷,将其划分为目录区和文件区
目录区存放文件目录信息FCB、用于磁盘存储空间管理的信息
有的系统支持超大型文件,支持多个物理磁盘组成一个文件卷
存储空间管理
空闲表法:和动态分区分配方式很相似,存在一个空闲盘块表记录空闲分区信息,可以使用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间,回收时注意合并
空闲链表法
空闲盘块链:空闲盘块中存储着下一个空闲盘块的指针,操作系统需要保存链头、链尾指针。适合离散分配的物理结构
空闲盘区链:连续的空闲盘块组成一个空闲盘区,空闲盘区中的第一个盘块内记录了盘区的长度、下一个盘区的指针,操作系统需要保存链头、链尾指针。分配可以采用首次适应、最佳适应、最差适应等方法,如果没有满足要求的空闲盘区,可以将不同盘区的盘块分配给一个文件;回收时注意合并。适用于连续和离散分配
位示图法:每个二进制位对应一个盘块,0表示空闲,1表示已分配。连续离散都适用
成组链接法(UNIX采用)
文件卷的目录区中专门用一个磁盘块作为超级块,当系统启动时需要将超级块读入内存,并且要保证内存和外存中的超级块数据一致
若已经没有下一组空闲块,则设为特殊值
一个分组中的块号不需要连续
如何分配
如何回收
文件的基本操作
创建文件:create系统调用
主要参数:所需空间大小、文件存放路径、文件名
操作系统干了什么:在外存中找到文件所需的空间(空闲链表法、位示图、成组链接法);根据路径找到对应的目录表,创建插入文件对应的目录项
删除文件:delete系统调用
主要参数:文件存放路径、文件名
操作系统干了什么:根据路径找到相应目录表,根据文件名找到目录项;根据目录项记录中的外存位置、文件大小等信息,回收文件占用的磁盘块(空闲表法、空闲链表法、位示图法等);删除目录项
打开文件:open系统调用
主要参数:路径、文件名、对文件的操作类型
操作系统:根据路径找到目录表,根据文件名找到目录项,检查用户的访问权限;将目录项复制到内存中的“打开文件表”中,用户使用打开文件表的编号指明要操作的文件
打开文件表有两种:操作系统的打开文件表只有一张,其中有编号、文件名、外存地址、打开计数器等;每个进程自己也有打开文件表,包含编号、文件名、读写指针、访问权限、系统表索引号等信息
关闭文件:close系统调用
操作系统做了什么:将进程的打开文件表相应表项删除;回收分配给该文件的内存空间等资源;系统打开文件表计数器更新,若为0,删除表项
读文件:read系统调用
写文件:write系统调用
文件共享
硬链接:基于索引节点的共享方式,索引节点中设置一个链接计数变量count,用于表示链接到共享节点上的用户目录项数,不同用户起的名字可以不同
删除时,删除目录项,count--,当count为0删除文件
软链接:给予符号链的共享方式,相当于Windows的快捷方式,用一个link型的文件记录文件1的存放路径,就可以访问文件1了
如果文件1被删除了,软链接就找不到文件了,软链接失效
软链接通过查询多级目录多次IO操作访问到文件,所以访问速度比硬链接慢
文件保护
口令保护:口令一般存放在文件对应的FCB或索引节点中,用户访问文件前需要先输入口令,口令正确才允许访问
优点:开销小,验证口令时间短
缺点:正确口令在系统内部,不够安全
加密保护:使用密码对文件进行加密,访问时提供密码对文件进行解密
最简单的是异或加密
优点:保密性强,不需要在系统中存密码
缺点:编码、译码需要花费一定时间
访问控制:在每个文件的FCB或索引节点中增加一个访问控制列表ACL,记录各个用户可以对该文件进行哪些操作