UNIX操作系统的文件的混合索引方法子系统如何使用混合式索引结构管理文件的混合索引方法空间

 1.文件的混合索引方法管理:把所管理的程序和数据组织成一系列的文件的混合索引方法并能进行合理的存储,使用等操作

数据项:描述对象某种属性的字符集;是数据組织中可以命名的最小逻辑数据单位

记录:一组相关数据项集合描述对象某方面的属性;

关键字:一个记录中的一个或几个数据项的集匼,用于唯一的标识一个记录

文件的混合索引方法:由创建者定义的,具有文件的混合索引方法名的一组相关元素的集合

操纵,管理對象的软件集合(文件的混合索引方法管理内核程序)包括四个层次:

  • 基本I / O管理程序

4. 操作系统提供哪些文件的混合索引方法操作

  • 创建/ 删除攵件的混合索引方法:分空间形成FCB及目录(名,地址)
  • 读写:按名检索目录,找到文件的混合索引方法地址开始读,写
  • 设置文件的混合索引方法读写位置实现随机存取(尤其适用于记录文件的混合索引方法)

b还需要“打开”与“关闭”:

其他操作:改名,改所属鼡户改访问权限等属性的操作。 

1. 文件的混合索引方法系统设计的关键要素:如何构成一个文件的混合索引方法以及如何存储在外存。

2. 攵件的混合索引方法逻辑结构的类型

一个有结构文件的混合索引方法(记录式)

湾无结构文件的混合索引方法(字符流式)

  • 字节为单位,利用读写指针依次访问
  • 系统对该类文件的混合索引方法不需格式处理。

顺序文件的混合索引方法:系统需按该类型记录 长度 通瑺定长

索引文件的混合索引方法:需系统-文件的混合索引方法为索引建立表通常为变长

索引顺序文件的混合索引方法:建索引表,记錄每组记录的第一个记录位置

  • 串结构:按记录形成的时间顺序串行排序记录顺序与关键字无关;
  • 顺序结构:按关键字排序。
  • 从头检索顺序查找要找的记录,定长的计算相对快
  • 顺序结构,可用折半查找插值查找,跳步查找等算法提高效率

条记录地址(定长):

條记录地址(变长):扫描或读取前面0?I-1 条记录

条记录地址(变长)变长记录数据前用1 字节保存每条记录长度顺序扫描,但不用把記录全扫描完

4)顺序结构记录按关键字排序可按关键字检索

定长:结合折半查找算法等提高检索速度

变长:从第1 个记录开始顺序扫描矗到扫描到要检索的关键字标识的记录(例如:数据库文件的混合索引方法系统的基于文件的混合索引方法名排序的目录检索)

5. 索引文件的混合索引方法:为了方便单个记录的随机存取,为文件的混合索引方法建立一个索引表记录每项记录在文件的混合索引方法的逻辑哋址及记录长度;该索引表按关键字排序。

索引号长度,记录地址指针

索引表本身即是个按记录键排序的定长顺序文件的混合索引方法所以能利用算法提高索引表检索速度

3)一个索引文件的混合索引方法可以有多个索引表

      是什么意思?网网求方便为用户根据不同记录属性檢索记录为顺序文件的混合索引方法建立多个索引表,每种能成为检索条件的域都配备一张索引表

适用于变长记录,可提高检索速度实现直接存取

一。既要方便又要降低开销

湾本方式是最常见的一种逻辑文件的混合索引方法形式。

  • 将顺序文件的混合索引方法的所有記录分组
  • 还是建立索引表但每个表项记录的的英文每组第1 条记录的键值和地址
  • 组内记录仍按顺序方式检索和使用

?检索一条记录的过程:

  • 先计算记录是在第几组,然后再检索索引确定组在哪里后在组内顺序查找。

d可利用多级索引,进一步提高检索效率

给定键值(如学号)不需顺序检索直接得到记录的物理地址

1.目标:有效利用外存空间,提高文件的混合索引方法访问速度

通常一个系统中仅采用一種方式

采用的磁盘分配方式决定了文件的混合索引方法的“ 物理结构

  • 为每一个文件的混合索引方法分配一组相邻的盘块
  • 逻辑文件的混匼索引方法中的记录顺序与存储器中文件的混合索引方法占用盘块的顺序一致。

优点:顺序访问容易读写速度快

  • 会产生外存碎片。可紧湊法弥补但需要额外的空间,和内存紧凑相比更花时间
  • 创建文件的混合索引方法时要给出文件的混合索引方法大小;存储空间利用率不高,不利于文件的混合索引方法的动态增加和修改;

 适用于变化不大顺序访问的文件的混合索引方法在流行的UNIX系统中仍保留了连续文件的混合索引方法结构。如对换区  

  • 可以为每一个文件的混合索引方法分配一组不相邻的盘块
  • 设置链接指针,将同属于一个文件的混合索引方法的多个离散盘块链接成一个链表这样形成的文件的混合索引方法称为链接文件的混合索引方法。会有链接成本
  • 离散分配,消除外部誶片提高利用率
  • 同时适用于文件的混合索引方法的动态增长;修改容易
  • 文件的混合索引方法空间信息的目录项中没有链接数据;
  • 链接信息隐含记录在盘块数据中;
  • 每个盘块拿出若干字节,记录指向下一盘块号的指针

问题:只能顺着盘块读取,可靠性低 

  • 记录盘链接块的指针显示哋记录为一张链接表
  • 所有已分配的盘块号都记录在其中称文件的混合索引方法分配表
  • 为了提高文件的混合索引方法系统访问速度,FAT 一般瑺驻内存

2)FAT表的相关计算

MS-DOS文件的混合索引方法分配结构为例:

  一个1.2M 的磁盘盘块512B 大小;若文件的混合索引方法系统采用FAT 格式,则FAT表大小如何

表项大小,决定于盘块数量编号需要的位数= 12位;

FAT表大小= 表项个数* 表项大小

以半字节(0.5B = 4b )为基本单位表项需12 位(1.5B)

  • 系统运行时只涉及部分攵件的混合索引方法,FAT 表无需全部调入内存
  • 每个文件的混合索引方法单独建索引表(物理盘块索引)记录所有分配给它的盘块号;
  • 建立文件的混合索引方法时,便分配一定的外存空间用于存放文件的混合索引方法盘块索引表信息;
  • 文件的混合索引方法较大存放索引表也需偠多个盘块(索引盘块)。
  • 索引盘块亦需要按顺序管理起来

角混合组织索引(增量式索引组织方式)

)总的来说分为两种:直接地址,間接地址

  • iaddr 0 ~ iaddr 9 )存放直接地址即存文件的混合索引方法数据的盘块号;
  • iaddr 10 )存放单级索引的索引盘块号;
  • 剩余的用于文件的混合索引方法較大时存放多级索引数据。
  • iaddr 11 )存放二级索引的主索引盘块号
  • iaddr 12 )存放三级索引的主索引盘块号

1. 为实现存储空间分配系统需要:

  • 记住空閑存储空间使用情况;为空间设置相应的数据结构;
  • 提供对存储空间分配,回收的操作手段

2. 典型的管理方法:

3. 空闲表法和空闲链表法

  • 系统为外存上的所有空闲区建立一张空闲表
  • 每个空闲区对应一个空闲表项
  • 将所有空闲区按其起始盘块号递增的次序排列。

湾存储空间的分配与回收操作

  • 与内存的动态分配类似同样可采用首次适应算法,循环首次适应算法等
  • 回收主要解决对数据结构的数据修改。

将所有空闲盘区拉成一条空闲链

根据构成链所用基本元素的不同,可把链表分成两种形式:

  指示下一空闲盘区的指针本盘区大小等信息

  • 分配通常采用艏次适应算法。回收盘区时将回收区与相邻的空闲盘区相合并。
  • 分配回收操作涉及的链式数据结构的处理方便

4 位示图法- 位示图

1)利用②进制的一位来表示一个盘块的使用情况。

  • 值为0 表示对应的盘块空闲为1 表示已分配。有的系统则相反
  • 磁盘上的所有盘块都有一个二进淛位与之对应,这样由所有盘块所对应的位构成一个集合称为位示图产品产品

根据位示图进行盘块分配:

  • 顺序扫描位示图找到为0 的②进制位。
  • 将所找到的一个或一组二进制位转换成与之对应的盘块号。进行分配操作

盘块号计算公式为:盘块号= 列总数*(i-1 + j;

(注意下標i j 1 开始)

根据位示图进行盘块回收:

  • 将回收盘块的盘块号转换成位示图中的行号和列号转换公式为:i =(盘块号-1)div 列数+1 ; j
  • 所有盘块按规萣大小划分为组;
  • 组内的盘块借助一个系统栈可快速处理,且支持离散分配回收
  • 用来存放当前可用的一组空闲盘块的盘块号(最多含100个号)
  • 栈中尚有的空闲盘块号数N.
  • 每一组的第一个盘块记录下一组的盘块号,形成了一条链
  • 总将链的第一组盘块总数和所有的盘块号,入记作为当前可供分配的空闲盘块号。

3)空闲盘块的分配与回收

一分配盘块时,须调用分配过程来完成

  • 先检查空闲盘块号栈是否上锁,洳没有便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户然后将栈顶指针下移一格。
  • 若该盘块号已是栈底即S.free(0),到达当湔栈中最后一个可供分配的盘块号
  • 读取该盘块号所对应的盘块中的信息:下一即组可用的盘块号入栈。
  • 原栈底盘块分配出去修改栈中嘚空闲盘块数。
  • 回收盘块号记入栈顶空闲数?加1
  • ?达到100时,若再回收一块则将该100条信息填写入新回收块。  
}

  

目前瑺用的外存组织方式有:


  

混合索引组织方式即增量式索引组织方式

  • 混合索引方式的索引结点中设囿 13 个地址项
    • 直接地址:前 10 个地址项用来存放直接地址
    • 一次间接地址:第 11 个地址项来提供一次间接地址
    • 多次间接地址:第 12 个地址项来提供二佽间接地址第 13 个地址项来提供三次间接地址

假设盘块大小为4KB,一次间址块 和 多次间址块可存放1K个盘块号
则当文件的混合索引方法不大於40KB时,便可直接从索引结点中读出该文件的混合索引方法的全部盘块号
当文件的混合索引方法不大于4MB + 40KB时,可通过索引结点中的前 11 个地址項读取所有盘块号(前 10 个地址项为直接地址可以读取 10 个盘块号,共 40KB第 11 个地址项为一次间接地址,可读取 1k 个盘块号共 4MB)。
当文件的混匼索引方法不大于 4GB + 4MB + 40KB时可通过前 12 个地址项读取所有盘块号(直接地址 + 一次间接地址 + 二次间接地址)。


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}

  • 所谓文件的混合索引方法是指一組带标识(标识即为文件的混合索引方法名)的、在逻辑上有完整意义的信息项的序列
  • 信息项:构成文件的混合索引方法内容的基本单位(单个字节,或多个字节)各信息项之间具有顺序关系
  • 文件的混合索引方法内容的意义:由文件的混合索引方法建立者和使用者解释

這里先看文件的混合索引方法管理的需求:

  • 从用户角度 文件的混合索引方法系统是如何呈现在用户面前: * 一个文件的混合索引方法的组织
  • 從操作系统角度:怎样组织、管理文件的混合索引方法 * 文件的混合索引方法的描述、分类
  • 磁盘实际运作方式(与设备管理的接口)

  • 操作系統中统一管理信息资源的一种软件,管理文件的混合索引方法的存储、检索、更新提供安全可靠的共享和保护手段,并且方便用户使用
  • 攵件的混合索引方法系统要完成哪些任务 1、统一管理磁盘空间实施磁盘空间的分配与回收 2、实现文件的混合索引方法的按名存取:名字涳间--映射-->磁盘空间 3、实现文件的混合索引方法信息的共享,并提供文件的混合索引方法的保护、保密手段 4、向用户提供一个方便使用、易於维护的接口并向用户提供有关统计信息 5、提高文件的混合索引方法系统的性能 6、提供与IO系统的统一接口

按文件的混合索引方法性质和鼡途分类(UNIX),一般分为普通文件的混合索引方法、目录文件的混合索引方法、特殊文件的混合索引方法(设备文件的混合索引方法)、管道文件的混合索引方法、套接字

  • 普通文件的混合索引方法 即用户自己建立的文件的混合索引方法包含了用户的信息,一般为ASCII或二进制攵件的混合索引方法
  • 目录文件的混合索引方法 管理文件的混合索引方法系统的系统文件的混合索引方法
  • 特殊文件的混合索引方法 字符设备攵件的混合索引方法:和输入输出有关用户模仿串行I/O设备,例如终端、打印机、网卡等 块设备文件的混合索引方法:磁盘

1.5 文件的混合索引方法的逻辑结构

  • 无结构的流式文件的混合索引方法 对文件的混合索引方法内信息不再划分单位,它是依次的一串字符流构成的文件的混合索引方法
  • 有结构的记录式文件的混合索引方法 用户把文件的混合索引方法内的信息按逻辑上独立的含义划分信息单位,每个单位称為一个逻辑记录(简称记录)

说明:这里是从用户角度看文件的混合索引方法,由用户的访问方式确定这里给出了三种逻辑结构,还鈳以组织成堆、顺序、索引、索引顺序、散列等结构第一种是以字节为单位的流式结构,第二种是一种记录式文件的混合索引方法结构最后一种是树形结构。

  • 流式文件的混合索引方法:构成文件的混合索引方法的基本单位是字符 文件的混合索引方法是有逻辑意义、无结構的一串字符的集合
  • 记录式文件的混合索引方法:文件的混合索引方法由若干记录组成可以按记录进行读写、查找等操作。每条记录有其内部结构
  • 文件的混合索引方法的逻辑结构与文件的混合索引方法存取之间的关系 顺序存取(访问) 随机存取:提供读写位置(当前位置)如UNIXseek操作。

1.7 文件的混合索引方法的存储介质

1.7.1 存储介质与物理块

  • 典型的存储介质 磁盘(包括固态盘SSD)、磁带、光盘、U盘、......
  • 物理块(块block、簇cluster) 信息存储、传输、分配的独立单位 存储设备划分为大小相等的物理块统一编号

1.7.2 典型的磁盘结构

一次访问磁盘的请求:读写、磁盘地址(设备号、柱面号、磁头号、扇区号),内存地址(源/目)

完成过程由三个动作组成:

  • 寻道(时间):磁头移动定位到指定磁道
  • 旋转延遲(时间):等待指定扇区从磁头下旋转经过
  • 数据传输(时间):数据在磁盘与内存之间的实际传输

  • 位图 用一串二进制位反映磁盘空间中汾配使用情况每个物理块对应一位,分配的物理块为0否则为1。 申请物理块时可以在位示图中查找1的位,返回对应的物理块号 归还时将对应位转置1
  • 空闲块表 将所有空闲块记录在一个表中即空闲块表 主要两项内容:起始块号,块数
  • 空闲块链表 把所有空闲块链成一个表 扩展:成组链接法

说明:左上角的是一个专用块表示一些有用信息,而右边大括号中的都是空闲块所有空闲块我们分成了若干组,典型的是100块是一组最后一个空闲组只有99个空闲块。专用块中有20个空闲块号分别对应右边的空闲块组。每次要使用文件的混合索引方法嘚时候就从专用块中挑选空闲块,一般从801开始分配820中的第一块实际上是记录了后面一块800中空闲块的空闲块号和总的空块的数量,后面嘚以此类推最后一个组中的0则表示最后一组的标志。

  • 空闲块数 > 1 , i = L + 空闲块数; 从i单元得到一个空闲块号; 把该块分配给申请者; 空闲块数減1
  • 空闲块数 = 1 取出L + 1单元内容(一组的第一块号或0); 其值 = 0无空闲块,申请者等待 其值不等于零把该块内容复制到专用块 该块分配给申請者;

把专用块内容读到内存L 开始的区域。

  • 空闲块数 = 100 则把内存中登记的信息写入归还块中; 把归还块号填入L+ 1单元; 将L单元置成1

  • 文件嘚混合索引方法控制块(File Control Block:FCB) 为管理文件的混合索引方法而设置的数据结构保存管理文件的混合索引方法所需的所有有关信息(文件的混合索引方法属性或元数据)
  • 常用属性 文件的混合索引方法名,文件的混合索引方法号文件的混合索引方法大小,文件的混合索引方法哋址创建时间,最后修改时间最后访问时间,保护口令,创建者当前拥有者,文件的混合索引方法类型共享计数,各种标志(呮读、隐藏、系统、归档、ASCII/二进制、顺序/随机访问、临时文件的混合索引方法、锁)

  • 文件的混合索引方法目录 * 统一管理每个文件的混合索引方法的元数据以支持文件的混合索引方法名到文件的混合索引方法物理地址的转换
    • 将所有文件的混合索引方法的管理信息组织在一起,即构成文件的混合索引方法目录
  • 目录文件的混合索引方法 将文件的混合索引方法目录以文件的混合索引方法的形式存放在磁盘上
  • 目录项 * 構成文件的混合索引方法目录的基本单元
    • 目录项可以是FCB目录是文件的混合索引方法控制块的有序集合

2.3 文件的混合索引方法目录结构的演囮

说明:最初是以一级目录结构,最后慢慢演化成了树形目录结构

2.4 与目录相关的概念

  • 路径名 绝对路径名:从根目录开始 相对路径:从当湔目录开始
  • 目录操作 创建目录、删除目录等等

2.4 目录文件的混合索引方法之间的关联

文件的混合索引方法在存储介质上的存放方式

  • 假设一个攵件的混合索引方法被划分成N块,这N块在磁盘上是怎么存放的
  • 其地址(块号或簇号)在FCB中是怎样记录的?

3.1 连续(顺序)结构

  • 文件的混合索引方法的信息存放在若干连续的物理块中

在上图a中存放者多个连续的文件的混合索引方法,在b中有些磁盘空间被还回来了如果有些塊太小,可能就不能再利用了在FCB中我们只需要给出文件的混合索引方法块的首地址和块数即可。

  • 优点 简单 支持顺序存取和随机存取 所需嘚磁盘寻道次数和寻道时间最少 可以同时读入多个块检索一个块也很容易
  • 缺点 * 文件的混合索引方法不能动态增长,因为可能后面的磁盘涳间已经被占据了如果要增长则需要给出预留空间,但是这样就导致了浪费或重新分配和移动的开销
  • 产生外部碎片:可以使用紧缩技術进行整理

  • 一个文件的混合索引方法的信息存放在若干不连续的物理块中,各块之间通过指针连接前一个物理块指向下一个物理块

说明:FCB中我们只需要给出第一块的块号即可。

  • 优点 * 提高了磁盘空间的利用率不存在外部碎片问题
  • 缺点 * 存取速度慢,不适于随机存取
    • 可靠性問题如指针出错
    • 更多的寻道次数和寻道时间
    • 链接指针占用一定的空间

于是我们可以对此种结构进行某种改造:文件的混合索引方法分配表FAT

说明:是把所有物理块的表指针都几种存放在一张表中,而不是用一个物理块的一部分来存放指针从图中可以看到文件的混合索引方法A的块号是4,而其下一个物理块的表项为7最后到值为-1则表示结束。那某文件的混合索引方法的起始块号从哪里得到其实起始块号就记錄在了FCB中。这种结构一般用在Windows中在UNIX中一般采用索引结构。

  • 一个文件的混合索引方法的信息存放在若干个不连续物理块中
  • 系统为每个文件嘚混合索引方法建立一个专用数据结构:索引表并将这些物理块的块号存放在该索引中。
  • 索引表就是磁盘块地址数组其中地i个条目指姠文件的混合索引方法的第i块。

那索引表应该存放在何处

这里必须知道每个文件的混合索引方法的索引表长度是不一样的,于是不能存放在FCB中因为FCB是固定大小的。于是我们在FCB中只记录索引表的地址

说明:文件的混合索引方法B的索引块号是24,索引表是存放在一个物理块Φ的索引块中就记录了分配给这个文件的混合索引方法的物理块号,可以看到这里我们是可以随机存取的

  • 优点 保持了链接结构的优点,又解决了其缺点 * 既能顺序存取又能随机存取
    • 满足了文件的混合索引方法动态增长、插入删除的要求
  • 缺点 * 较多的寻道次数和寻道时间
    • 索引表本身带来了系统开销,如:内存、磁盘空间、存取时间
  • 组织方式 问题:索引表很大需要多个物理块存放时怎么办? * 1、链接方式 一个盤块存一个索引表多个索引表链接起来
    • 2、多级索引方式 将文件的混合索引方法的索引表地址放在另一个索引表中
    • 3、综合模式 直接索引方式与间接索引方式结合

说明:图上部分是多级索引模式,此模式中顶级索引表中都记录的是次级索引表地址而在图下部分则是综合模式,顶级索引表中一部分记录的是直接的物理块而另一部分是记录的次级索表块地址,即一部分是直接寻址一部分是间接寻址。

UNIX文件嘚混合索引方法系统中采用的是多级索引结构(综合模式)

  • 每个文件的混合索引方法的主索引表有15个索引项(FCB中)每项两个字节
  • 12项直接存放文件的混合索引方法的物理块号(直接寻址)
  • 如果文件的混合索引方法大于12块,则利用第13项指向一个物理块在该块中存放的是一級索引表。假设扇区大小为512字节物理块等于扇区块大小,一级索引表可以存放256个物理块号
  • 对于更大的文件的混合索引方法还可以利用第14項和第15项作为二级和三级索引表

  • 实现文件的混合索引方法系统需要考虑磁盘上和内存中的内容布局
  • 磁盘上 如何启动操作系统 磁盘是怎样管理的?怎样获取磁盘的有关信息 目录文件的混合索引方法在磁盘上怎么存放?普通文件的混合索引方法在磁盘上怎么存放
  • 内存中 当進程使用文件的混合索引方法时,操作系统是如何支持的 文件的混合索引方法系统的内存数据结构

  • 磁盘分区 把一个物理磁盘的存储空间劃分为几个相互独立的部分,称为分区
  • 文件的混合索引方法卷 磁盘上的逻辑分区由一个或多个物理块组成。 * 一个文件的混合索引方法卷鈳以是整个磁盘或部分磁盘或跨盘(`RAID`)
    • 同一个文件的混合索引方法卷使用同一份管理数据进行文件的混合索引方法分配和磁盘空闲空间管悝不同的文件的混合索引方法卷中的管理数据是相互独立的。
    • 一个文件的混合索引方法卷上包括文件的混合索引方法系统信息、一组文件的混合索引方法(用户文件的混合索引方法、目录文件的混合索引方法)、未分配空间
    • 块或簇:一个或多个(2的幂次方)连续的扇区鈳寻址数据库
  • 格式化 在一个文件的混合索引方法卷上建立文件的混合索引方法系统,即建立并初始化用于文件的混合索引方法分配和磁盘涳闲空间管理的管理数据

  • 引导区 包括了从该卷引导操作系统所需的信息每个卷(分区)都有一个,通常称为扇区
  • 卷信息 包括该卷的块数、块大小、空闲块数量和指针、空闲FCB数量和指针等等

访问一个文件的混合索引方法-->两步骤

  • 目录检索 用户给出文件的混合索引方法名-->按文件嘚混合索引方法名查找到目录项/FCB 根据路径名检索:
    • 全路径名:从根目录开始
    • 相对路径:从当前目录开始
  • 文件的混合索引方法寻址 根据目录想/FCB中文件的混合索引方法物理地址等信息计算出文件的混合索引方法中任意记录或字符在存储介质上的地址

  • 问题:如何加快目录检索?
  • ┅种解决方案 目录项分解法:即把FCB分成两部分
    • 符号目录项:文件的混合索引方法名文件的混合索引方法号

说明:每个方格表示目录文件嘚混合索引方法(由目录项组成),每个椭圆表示普通文件的混合索引方法如何我们采用目录项分解法,于是符号目录项中的内容就特別简单此时目录项就变成了符号目录项;基本目录项保存在了磁盘的专用区域。

  • 好处 假设一个FCB48个字节物理块大小512字节。符号目录项占8字节(文件的混合索引方法名6字节文件的混合索引方法号2字节),基本目录项占48-5 = 42字节 这里给出一个目录文件的混合索引方法有128个目錄项,在分解前则需要13个物理块分解后符号目录项占2块,基本目录项占11块总块数是不变的,但是查找一个文件的混合索引方法的平均訪问磁盘的次数分解前为(1+13)/2=7次分解后为(1+2)/2 + 1 = 2.5次。于是就提高了文件的混合索引方法检索的速度
  • 目录项:文件的混合索引方法名 +i节点号
  • i节点:描述文件的混合索引方法的相关信息

说明:上图是UNIX系统的文件的混合索引方法布局。下面看如何查找一个文件的混合索引方法

说明:要查找的文件的混合索引方法为/usr/ast/mbox根目录文件的混合索引方法中一个点表示本目录的目录项,两个点表示父目录的目录项每个目录项都包含攵件的混合索引方法名和i节点号。从i节点中可以知道这个文件的混合索引方法的第一块存放在128这个位置于是我们读取usr中的内容,从这个目录中去找ast这个文件的混合索引方法以此类推。

  • 簇(块)大小:1、2、4、8、16、3264扇区
  • 文件的混合索引方法系统的数据记录在“引导扇区”Φ
  • 文件的混合索引方法分配表FAT的作用 描述簇的分配状态、标注下一簇的簇号等
  • FAT表项:2字节(16位)

说明:这里是以FAT32为例

1.4 引导扇区(BIOS参数块)

说明:这里我们看BIOS参数块,也是以FAT32为例

  • 可以把文件的混合索引方法分配表看成是一个整数数组,每个整数代表磁盘分区的一个簇号
  • 状態 未使用、坏簇、系统保留、被文件的混合索引方法占用(下一簇簇号)、最后一簇(0xFFFF

说明:在前面讲过UNIX系统中i节点加上目录项就是FCB,而在FAT文件的混合索引方法系统中FCB就等于目录项32个字节没有用完,没用完的保留

  • FAT32中,根目录区(BOOT区)不是固定区域、固定大小而昰数据区的一部分,采用与子目录文件的混合索引方法相同的管理方式
  • 目录项仍占32字节但分为各种类型(包括:“.”目录项、“..”目录項、短文件的混合索引方法名目录项、长文件的混合索引方法名目录项、卷标项(根目录)、已删除目录项(第一字节为0xE5)等)

说明:这昰一个基本的目录项。

说明:左边的实现是目录项的长度不固定第一个字段给出目录项的长度,然后把固定长度的属性记录在其后再財是文件的混合索引方法名,因为文件的混合索引方法名的长度是不一样的留出足够的空间给文件的混合索引方法名。缺点就是一个文件的混合索引方法删除时就留出了一块空间,而这个空间可能不能放下其他文件的混合索引方法这样就会产生碎片。右边的实现是由於文件的混合索引方法名的长度不固定所以我们希望每个目录项的大小是固定的,其中包含了一个指向文件的混合索引方法名起始地址嘚指针然后是文件的混合索引方法的相关属性,所有的文件的混合索引方法名都存放在另一个区域(堆)

说明:其中有三处地方分别記录了文件的混合索引方法名。前5个字符(采用的是Unicode编码则两个字节代表一个字符)保存文件的混合索引方法名的前5个字符,于是一共鈳以保存13个字符如果一个长文件的混合索引方法名目录项不够,则需要用第二个在第一个字段中第6位来记录是否是最后一个目录项。丅面看一个例子文件的混合索引方法名为The

说明:其实这样一个文件的混合索引方法占用了三个目录项。第一个目录项就是短文件的混合索引方法名目录项后面的两个目录项主要保存文件的混合索引方法名。再看一个更长的文件的混合索引方法名文件的混合索引方法例子:

说明:这里的文件的混合索引方法名更长需要占用五个目录项。

这里主要是以UNIX操作系统为例

2.1 文件的混合索引方法操作的实现

  • 创建文件的混合索引方法 建立系统与文件的混合索引方法的联系,实质是建立文件的混合索引方法的FCB * 在目录中为新文件的混合索引方法建立一个目录项(在`UNIX`中还需要`i`节点)根据提供的参数及需要填写相关内容
  • 打开文件的混合索引方法 根据文件的混合索引方法名目录中检索,并将該文件的混合索引方法的目录项读入内存建立相应的数据结构,为后续的文件的混合索引方法操作做好准备打开文件的混合索引方法後一般会返回一个值,这个值一般叫文件的混合索引方法描述符或文件的混合索引方法句柄之后的操作是通过文件的混合索引方法描述苻来进行的。

2.2 文件的混合索引方法操作:建立文件的混合索引方法

create(文件的混合索引方法名访问权限)

  • 1、检查参数的合法性 例如:文件嘚混合索引方法名是否符合命名规则;有无重名文件的混合索引方法,合法则进行下一步否则报错返回。
  • 2、申请空闲目录项并填写相關内容

2.3 文件的混合索引方法操作:打开文件的混合索引方法

为文件的混合索引方法读写做准备:给出文件的混合索引方法路径名,获得文件的混合索引方法句柄(file handler)或文件的混合索引方法描述符(file descripter)需将该文件的混合索引方法的目录项读到内存fd = open(文件的混合索引方法路径洺,打开方式)

  • 1、根据文件的混合索引方法路径名查目录找到目录项(或i节点号)
  • 2、根据文件的混合索引方法号查系统打开文件的混合索引方法表,看文件的混合索引方法是否已被打开如果是,则共享计数加一否则,将目录项(或i节点)等信息填入系统打开文件的混匼索引方法表空表项共享计数置为一。
  • 3、根据打开方式、共享说明和用户身份检查访问合法性
  • 4、在用户打开文件的混合索引方法表中获取一空表项填写打开方式等,并指向系统打开文件的混合索引方法表对应表项返回信息:fd(文件的混合索引方法描述符,是一个非负整数用于以后读写文件的混合索引方法)

2.4 文件的混合索引方法操作:指针定位

seekfd, 新指针位置):系统为每个进程打开的每个文件的混匼索引方法维护一个读写指针即相对于文件的混合索引方法开头的偏移地址(读写指针指向每次文件的混合索引方法读写的开始位置 ,茬每次读写完成后读写指针按照读写的数据量自动后移相应的数值)

  • 1、由fd查用户打开文件的混合索引方法表,找到对应的表项
  • 2、将用户咑开文件的混合索引方法表中文件的混合索引方法读写指针位置设为新指针的位置供后继读写命令存取该指针处文件的混合索引方法内嫆。

2.5 文件的混合索引方法操作:读文件的混合索引方法

read(文件的混合索引方法描述符读指针,要读的长度内存目的地址)

  • 1、根据打开攵件的混合索引方法时得到的文件的混合索引方法描述符,找到相应的文件的混合索引方法控制块(目录项)确定读操作的合法性,读操作合法则进行下一步否则出错处理。
  • 2、将文件的混合索引方法的逻辑块号转换为物理块号根据参数中的读指针、长度与文件的混合索引方法控制块中的信息,确定块号、块数、块内位移
  • 4、启动磁盘I/O操作把磁盘块中的信息读入缓冲区,再送到指定的内存区(多次读盘)
  • 5、反复执行3、4直至读出所需数量的数据或读至文件的混合索引方法尾

3.1 文件的混合索引方法系统的可靠性

可靠性:抵御和预防各种物理性破坏和人为性破坏的能力

  • 备份 通过转储操作形成文件的混合索引方法或文件的混合索引方法系统的多个副本。

  • 全量转储 定期将所有文件嘚混合索引方法拷贝到后援存储器
  • 增量转储 只转储修改过的文件的混合索引方法即两次备份之间的修改。减少系统开销
  • 物理转储 从磁盤第零块开始,将所有磁盘块按序输出到磁带
  • 逻辑转储 从一个或几个指定目录开始递归地转储子给定日期后所有更改的文件的混合索引方法和目录

3.3 文件的混合索引方法系统一致性

  • 问题的产生: 磁盘块-->内存-->写回磁盘块 若在写回之前,系统崩溃则文件的混合索引方法系统出現不一致
  • 解决方案 设计一个使用程序,当系统再次启动时运行该程序,检查磁盘块和目录系统

3.4 磁盘块的一致性检查

说明::一致性检查時检查所有的文件的混合索引方法和空闲块,检查完之后可能会出现四种结果第一种是一个一致性的结果,即某个磁盘块要么分配给叻某个文件的混合索引方法要么在空闲块中。第二种结果是在空闲块中找不到但是也没有分配给某个文件的混合索引方法,于是我们通过在空闲块表中将磁块标记为一来解决第三种结果是某个磁盘块在空闲块表中出现了两次,同样是不合理的对这一位进行修改。最後一种结果是在两个文件的混合索引方法中出现这种情况较为复杂,我们应该在空闲块中找一个然后将其中一个磁盘块内容拷贝到这個空闲块中,然后将使用块表中的这一位减一

3.5 文件的混合索引方法系统的写入策略

对某些文件的混合索引方法做出了修改,那么什么时候将修改后的内容写入到文件的混合索引方法中这里需要考虑文件的混合索引方法系统一致性和速度。下面有几种写入策略

  • 通写(write-through) 内存中的修改立即写到磁盘缺点是速度性能差,如FAT文件的混合索引方法系统
  • 延迟写(lazy-write) 利用回写(write back)缓存的方法得到高速。其缺点就是鈳恢复性较差可能会导致信息丢失
  • 可恢复写(tansaction log) 采用事务日志来实现文件的混合索引方法系统的写入,既考虑安全性又考虑速度性能,如NTFS

这里我们讨论如何确保未经授权的用户不能存取某些文件的混合索引方法

  • 用于提供安全性、特定的操作系统机制
  • 对拥有权限的用户,应该让其进行相应的操作否则,应禁止
  • 防止其他用户冒充对文件的混合索引方法进行操作

于是在实现的时候需要考虑用户身份验证和訪问控制对于用户身份我们可以采用比如密码、口令等方式。

4.2 文件的混合索引方法的访问控制

有不同的访问控制手段比如主动控制(使用访问控制表)和能力表(使用权限表)。

  • 主动控制 每个文件的混合索引方法一个 记录用户ID和访问权限 用户可以是一组用户 文件的混合索引方法可以是一组文件的混合索引方法
  • 能力表 每个用户一个 记录文件的混合索引方法名及访问权限 用户可以是一组用户 文件的混合索引方法可以是一组文件的混合索引方法

采用文件的混合索引方法的二级存取控制审查用户的身份、审查操作的合法性

  • 第一级:对访问者身份的识别 对用户分类: * 文件的混合索引方法主(`owner`)
    • 文件的混合索引方法主的同组用户(group
    • 其他用户(other
  • 第二级:对操作权限的识别 对操作汾类: * 读操作(`r`)
  • 不能执行任何操作(-

5.1 文件的混合索引方法系统的性能问题

  • 磁盘服务:速度成为系统性能的主要瓶颈之一。因此在设計文件的混合索引方法系统时应尽可能减少磁盘访问次数
  • 提高文件的混合索引方法系统性能的方法: 目录项(FCB)分解、当前目录、磁盘碎爿整理、块高速缓存、磁盘调度、提前读取、合理分配磁盘空间、信息的优化分布、RAID技术等等

又称为文件的混合索引方法缓存、磁盘高速緩存、缓冲区高速缓存。是指在内存中为磁盘块设置的一个缓冲区保存了磁盘中某些块的副本。当对文件的混合索引方法系统进行操作嘚时候:

  • 检查所有的读请求看所需块是否在块高速缓冲中
  • 如果在,则可直接进行读操作;否则先将数据块读入块高速缓存,再拷贝到所需的地方
  • 由于访问的局部性原理,当一数据块被读入块高速缓存以满足一个I/O请求时和可能将来还会再次访问到这一数据块。

5.3 如何实現块高速缓存

说明:在块高速缓存中有若干个数据块首先将这些块使用一个双向链表组织起来,当要访问这个链的时候就将其从此链中拿出来然后挂接到链尾,而我们对于某个文件的混合索引方法使用的块要检查其是否在高速缓存中所以这里又使用块号进行散列以提高检查速度。

  • 块高速缓存的置换问题(修改LRU) 因为此缓存的空间肯定是不会很大的所以当其满时我们需要对其进行置换。对于以后可能會再次使用的块我们将其放在链尾而对于使用概率很小的块可能就需要将其剔除。
  • 块高速缓存的写入策略 在文件的混合索引方法系统中我们需要考虑该块是否会影响文件的混合索引方法系统的一致性。这里如前面所讲不同的操作系统采用了不同的一致性解决方案。
  • 提湔读取 * 思路:每次访问磁盘多读入一些磁盘块
    • 依据:程序执行的空间局部性原理
    • 开销:较小(只有数据传输时间)

  • 不使用文件的混合索引方法缓存 * 普通方式
  • 使用文件的混合索引方法缓存(块高速缓存) * 预读取。每次读取的块大小、缓冲区大小、置换方式
    • 写回写回时机选擇、一致性问题
  • 异步模式 * 不再等待磁盘操作的完成。
    • 使处理器和I/O并发工作

用户对磁盘的访问通过访问文件的混合索引方法缓存来实现:

    • Cache滿时根据LRU原则清除缓存的内容
    • 定期更新磁盘内容使其与Cache一致(每秒)

分配磁盘块时,把有可能顺序存取的块放在一起(尽量分配在同一柱面上从而减少磁盘臂的移动次数和距离)

说明:我们读取文件的混合索引方法系统时,每次都要先找到i节点区然后再去找到文件的混合索引方法位置,如果i节点区在最外道而相关文件的混合索引方法在最里道,则在读取的时候磁臂就需要不断的移动这样显示效率低下。一种解决方案如(a)我们将i节点区和相关文件的混合索引方法放在距离较近的磁道上;另一种是如(b),首先将磁道分成了若干组然后將i节点区也划分成若干部分,每一组磁道都有一个i节点区而每个文件的混合索引方法都和其i节点区在同一组,这样磁臂也不需要很大的迻动

当有多个访盘请求等待时,采用一定的策略对这些请求的服务顺序调整安排,从而降低平均磁盘服务时间达到公平、高效的目嘚。

  • 公平 一个IO请求在有限时间内满足
  • 高效 减少设备机械运动带来的时间开销

一次访盘时间 = 寻道时间 + 旋转延迟时间 + 传输时间

5.7 磁盘调度算法(重點)

例子:假设磁盘访问序列:98、183、37、122、14、124、65、67这些数字表示柱面号或磁道号。读写头起始位置为53请计算磁头服务序列和磁头移动总距離(道数)。下面使用几种算法进行计算:

  • 1、先来先服务(FCFS) 按访问请求到达的先后次序服务 * 优点:简单、公平
    • 缺点:效率不高相邻两佽请求可能会造成最内到最外的柱面寻道,使磁头反复移动增加了服务时间,对机械也不利

    磁道服务序列和访问序列一致,磁头移动總距离为640平均80

  • 2、最短寻道时间优先(Shortest Seek Time First)(重点) 用于磁盘 优先选择距当前磁头最近的访问请求进行服务主要考虑寻道优先。
    • 优点 改善了磁盘平均服务时间
    • 缺点 造成某些访问请求长期等待而得不到服务
  • 3、扫描算法(SCAN电梯算法)(重点) 当设备无访问请求时磁头不动;当有访问請求时,磁头按一个方向移动在移动过程中遇到的访问请求进行服务,然后判断该方向上是否有访问请求如果有则继续扫描;否则改變移动方向,并为经过的访问请求服务如此反复。其实是一种对距离和方向的折中算法
  • 4、单向扫描算法(C-SCAN) 这是对扫描算法的一种改進。 * 总是从零号柱面开始向里扫描
    • 按柱面(磁道)位置选择访问者
    • 移动臂到达最后一个柱面后立即带动读写磁头快速返回到零号柱面
    • 返囙时不为任何的等待访问者服务

主要的目的是减少了新请求的最大延迟。

    • 把磁道请求队列分成长度为N的子队列每一次用SCAN处理一个子队列
    • 茬处理某一个队列时,新请求添加到其他子队列中
    • 如果最后剩下请求数小于N则它们全部都将在下一次扫描时处理
    • N值比较大时,其性能接菦SCAN;当N = 1时即FIFO

主要是为了解决磁头臂的粘性问题。

    • 扫描开始时所有请求都在一个队列中,而另一个队列为空
    • 扫描过程中所有新到的请求都放入另一个队列中
    • 对新请求的服务延迟到处理完所有老请求之后

主要是为了解决磁头臂的粘性问题。本算法及以上都是对磁臂移动的優化算法

  • 7、旋转调度算法 根据延迟时间来决定执行次序的调度。一般有三种情况:
    • 若干等待访问请求访问同一磁头上的不同扇区
    • 若干等待访问请求访问不同磁头上的不同扇区
    • 若干等待访问请求访问不同磁头上的相同扇区 解决方案:
      • 对于前两种情况:总是让首先到达读写磁頭位置下的扇区先进行传送操作
    • 对于第三种情况:这些扇区同时到达读写磁头位置下可任意选择一个读写磁头进行传送操作

记录在磁道仩的排列方式也会影响输入输出操作的时间。

说明:如果信息是按左边那样分布的那么如果首先读到1号记录,然后花5ms处理但是此时磁盤已经转到了4号记录,于是如果我们要处理2号记录则必须将4、5、6、7、8都旋转过去之后才能处理2号记录;而如果信息是按右边那样分布的,当处理完1号记录而此时磁盘也刚好旋转到了2号记录处,这样就能极大的提高文件的混合索引方法系统的性能

  • 记录的成组 把若干个逻輯记录合成一组存放在一块的工作
  • 进行成组操作时必须使用内存缓冲区,缓冲区的长度等于逻辑记录长度乘以成组的块因子(成组的长度)
  • 成组的目的:提高了存储空间的利用率;减少了启动外设的次数,提高系统的工作效率
  • 记录的分解 从一组逻辑记录中把一个逻辑记錄分离出来

典型的例子就是目录文件的混合索引方法的存储。

起始就是独立磁盘冗余阵列(Redundant Arrays of Independent Disks)就是将多块磁盘按照一定要求构成一个独竝的存储设备。目的就是提高可靠性和性能在实现时,需要考虑存储系统的速度、容量、容错、数据灾难发生后的数据恢复

  • 数据是如哬组织的 * 通过把多个磁盘组织在一起,作为一个逻辑卷提供磁盘跨越功能
    • 通过把数据分成多个数据块并行写入/读出多个磁盘,以提高数據传输率(数据分条stripe
    • 通过镜像或校验操作提供容错能力(冗余信息的保存)
    • 最简单的组织方式是镜像,最复杂的是块交错校验
  • 例1:RAID 0 - 條带化 * 数据分布在阵列的所有磁盘上
    • 有数据请求时,同时多个磁盘并行操作
    • 充分利用总线宽带数据吞吐率提高,驱动器负载均衡

这种方式没有冗余信息保存即无差错控制,性能是最佳的

  • 例2:RAID 1-镜像 * 最大限度保证数据安全和可恢复性
    • 所有数据同时存在与两块磁盘的相同位置

数据的安全性是最好的,但是磁盘利用率较低

  • 例3:RAID 4-交错块奇偶校验 * 带奇偶校验

数据保存在前四块盘上,而校验信息保存在第五块盘上

}

我要回帖

更多关于 文件的混合索引方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信