/**
* TODO 《操作系统原理》 记录(23)
* @一致性语义
* 评估文件系统对于支持共享文件的一个准则
* @UNXI 语义
* 共享模式1——一个用户对于已经打开的文件写入操作会对其他打开此文件的用户【可见】
* 共享模式2——允许用户共享文件的当前指针位置
* 如果当前用户向前移动指针则会影响其他人的文件信息
* 这里可以使用影像技术————允许其他访问者修改影像而不是修改【本源】
*
* @会话语义
* 一个用户的对于一个打开文件的写入不能同时被其他用户同时访问————互斥
* 一旦文件关闭——则只会对再次打开会话可见——已经打开文件的用户不可见
*
* @永久共享文件语义
* 一旦一个文件被声明为共享则不允许修改
* 共享文件两个特性
* 文件名称不能重复使用
* 文件内容不可以修改
*
* -------------关于保护-----------------
* @访问控制
* 根据用户身份进行控制
* 每个用户文件和目录增加一个访问控制列表
* 使用控制位控制访问限制
*
*
* --
* 文件是由操作系统定义和实现的抽象数据类型
* 由一系列逻辑记录组成
*
* -------------------------------------------------
* @文件系统实现
* @文件系统结构
* 磁盘提供大量的外存空间来【维护】文件系统
* ---可以原地重写
* 可以从磁盘上读一块+修改+写入到原来的位置
*
* ---可以直接访问磁盘上的任意一块空间
* 可以很方便的顺序的或者随机的访问内存中的块
* 简单的移动一下磁头指针既可以访问
* @磁盘结构
* @引导控制块
* 系统从该分区引导操作系统的所需的信息
* 如果磁盘没有操作系统则为空
* 引导块& 分区引导扇区
*
* @分区控制块
* 超级块——主控文件表
* 包括分区详细信息
* 分区块数、大小空闲块的数据和指针
* 空闲FCB的数量和指针
*
* 目录结构用来组织文件
* FCB包含很多文件信息
*
* 内存分区表包含所有安装分区信息
*
* 内存目录结构用来保存近来访问过的目录信息
*
* 系统范围的打开文件表包括每个打开文件的FCB拷贝和其他信息
*
* 单个进程的打开文件表
* 指向系统范围内已打开文件表中合适条目和其他信息的指针
*
* 一旦文件被创建就可以进行I/O-__此时的文件状态是系统定义的初始状态
*
* @分区和安装
* @根分区
* 包括操作系统内核和其他系统文件、在引导时装入内存
* --可以在引导时装入或者稍后手动装入
* 操作系统会验证设备上的文件系统确实有效
* 操作系统通过设备驱动程序读入文件目录确定目录格式是否正确
*
* @虚拟文件系统
* VFS层定义一个清晰的VFS文件接口
* 将操作系统通用操作和具体实现分开
* 多个接口可以同时存在一个机器上
* 允许访问多个访问器访问文件系统
*
* VFS通过称之【vnode】的文件表示结构
* 该结构包含一个数值制定者以表示位于整个网络中唯一文件描述
* 该网络范围内的唯一性用来支持网络文件系统
* --内核为每个活动的节点保存一个vnode结构
*
* @目录实现
* @线性列表
* 查找文件需要线性搜索——————算法复杂度
*
* @哈希表
* 哈希表根据文件名到的一个hash值
* 返回一个指向线性列表中的元素
* 减低搜搜能力
* 由于查找可能需要搜索冲突表中的关键链表——造成查找很慢
* 但是整体速度优于线性列表
* @分配方法
* @连续分配
* 要求每个文件在磁盘上占有一组连续的块
* 磁盘地址为磁盘定义了一个线性排序
* ————支持顺序访问和直接访问方式
* 困难在于为新文件寻找空间
*
* @链接分配
* 每个文件是磁盘块的链表,磁盘块分布在磁盘的任意空间
* 目录包含文件的第一块指针和最后一块指针
* ---只能有效的用于文件的顺序访问
* 必须找到文件的第一个块然后指引找到最后一个指针
* 不能有效的支持文件的直接访问
* 必须知道文件的下一个指针是哪里
*
* ---文件因为指针的所需要的空间变得更大
*
* @索引分配
* 把所有链接指针放到一起————索引块
* 索引分配会浪费空间
* 索引块指针的分配通常大于链接分配的指针
* 文件的最终大小会更高于链接分配的文件大小
*
* @分配索引块的方法
* 链接方案
* 将多个索引块链接起来
* 比如————一个索引块可以包含下一个索引的内容
* 假设下一个地址不为nil
* 多层索引
* 第一层索引块指向第二组索引块
* 第二层索引块指向具体文件
* 组合方案
* 索引块的前15个指针存储在inode中
* 其中的前12个指针指向直接块
* 包含了能够存储文件数据块的地址
* 其他三个指针指向间接块
* 一二三级间接块
*
* @性能
* 分配之前需要知道系统如何使用
* 考虑顺序访问还是随机访问
*
*
*/