计算机操作系统 第八章

8.1 外存的组织方式

  • 文件的物理结构直接与外存的组织方式有关。对于不同的外存组织方式,将形成不同的文件物理结构
  • 目前常用的外存组织方式有: 
    • (1) 连续组织方式
    • (2) 链接组织方式
    • (3) 索引组织方式

连续组织方式

  • 连续组织方式又称连续分配方式,要求为每一个文件分配一组相邻接的盘块。
  • 在采用连续组织方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中,这样所形成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。
  • 优点:顺序访问容易,顺序访问速度快。

连续组织方式

连续组织方式缺点

  • (1)需要连续空间,当磁盘没有足够大的连续空间时需要进行紧凑
  • (2)必须事先知道文件的长度
  • (3)不能灵活地删除和插入记录(为保证连续性而移动文件)
  • (4)很难为动态增长的文件分配空间

链接组织方式

  • 在采用链接组织方式时,可为文件分配多个不连续的盘块,再通过每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表,由此所形成的物理文件称为链接文件。
  • 链接组织方式的主要优点是:(1) 消除了磁盘的外部碎片,提高了外存的利用率。(2) 对插入、删除和修改记录都非常容易。(3) 能适应文件的动态增长,无需事先知道文件的大小。

隐式链接

在采用隐式链接组织方式时,在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针

显式链接

把用于链接文件各物理块的指针显式地存放在内存的一张链接表中。该表在整个磁盘中仅设置一张(FAT)

FAT技术

  • 早期的FAT12文件系统:以盘块为基本分配单位,每个盘块的大小为512B。FAT表最多有4096(212)个表项,当磁盘支持4个逻辑分区时,可管理的磁盘大小为4×4096×512B。
  • 以簇为单位的FAT12文件系统:簇是一组相邻的扇区,在进行盘块的分配时以簇为单位进行分配的。
  • FAT16文件系统
  • FAT32文件系统:FAT系列文件系统的最后一个产品。

NTFS的文件组织方式

  • NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。
  • NTFS是以簇作为磁盘空间分配和回收的基本单位的。一个文件占用若干个簇,一个簇只属于一个文件。(簇的大小不同)
  • 在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中。

索引组织方式

  • 单级索引组织方式:为每个文件分配一个索引块(表),把分配给改文件的所有盘块号都记录在该索引块中。在建立一个文件时,只需要在为它建立的目录项中填上指向该索引块的指针。

  • 多级索引组织方式:当文件很大,导致索引块特别多时,为索引块再建立一级索引块,就形成了两级索引分配方式。如果文件非常大,还可以使用三级、四级索引分配方式。

  • 磁盘存储空间的基本分配单位是磁盘块而非字节。
  • 文件存储空间的分配方式:
    • 空闲表法和空闲链表法
    • 位示图法
    • 成组链接法

空闲表法

  • 属于连续分配方式,为每个文件分配一块连续的存储空间。
  • 系统为外存上的所有空闲区建立一张空闲盘块表。
  • 盘块的分配采用首次适应算法和最佳适应算法等。

空闲链表法

  • 将磁盘上的所有空闲盘区拉成一条空闲链,根据构成链所用基本元素的不同,可分为空闲盘块链和空闲盘区链两种形式。
  • 空闲盘块链:将磁盘上的所有空闲空间以盘块为单位拉成一条链,其中的每一个盘块都有指向后继盘块的指针。
  • 空闲盘区链:将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上有用于指示下一个空闲盘区的指针以及能指明本盘区大小(盘块数)的信息。

位示图法

  • 位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。map(i,j)

位示图法的盘块分配

  • 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。
  • 将所找到的一个或一组二进制位转换成与之相应的盘块号。(根据行号和列号计算盘块号)
  • 修改位示图,令map[i, j] = 1。

例题

有一个计算机系统利用位示图来管理空闲盘块。如果盘块从1开始编号,每个盘块的大小为1KB。

(1)现要为文件分配两个盘块,试具体说明分配过程。

(2)若要释放磁盘的第300块,应如何处理?

位示图法的盘块回收

  • 将回收盘块的盘块号转换成位示图中的行号和列号。
  • 修改位示图。令map[i, j] = 0。

成组链接法

  • 空闲盘块号栈,用来存放当前可用的一组空闲盘块的盘块号(最多含100个号),以及栈中尚有的空闲盘块(号)数N。
  • 文件区中的所有空闲盘块被分成若干个组。
  • 将每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块的S.free(0)~S.free(99)中。
  • 将第一组的盘块总数和所有的盘块号记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。
  • 最末一组只有99个盘块,其盘块号分别记入其前一组的S.free(1)~S.free(99)中,而在S.free(0)中则存放“0”,作为空闲盘块链的结束标志。

成组链接法空闲盘块的分配与回收

  • 当系统要为用户分配文件所需的盘块时,须调用盘块分配过程来完成。该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底,即S.free(0),这是当前栈中最后一个可分配的盘块号。
  • 调用磁盘读过程把栈底盘块号所对应的内容读入栈中,作为新的盘块号栈的内容,并将原栈底盘块分配出去。
  • 系统回收空闲盘块时,调用盘块回收过程,将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。
  • 当栈中空闲盘块号数目已达到100时,将现有栈的100个盘块号记入新回收的盘块中,再将其盘块号作为新的栈底。

8.3 提高磁盘I/O速度的途径

(1) 改进文件的目录结构以及检索目录的方法来减少对目录的查找时间;

(2) 选取好的文件存储结构,以提高对文件的访问速度;

(3) 提高磁盘的I/O速度,能将文件中的数据快速地从磁盘传送到内存中,或者相反。

磁盘高速缓存(Disk Cache)

  • 在内存中为磁盘盘块设置的一个缓冲区,在缓冲区中保存了某些盘块的副本。
  • 在设计磁盘高速缓存时需要考虑的问题有:
    • (1) 如何将磁盘高速缓存中的数据传送给请求进程;
    • (2) 采用什么样的置换策略;
    • (3) 已修改的盘块数据在何时被写回磁盘。

数据交付方式

  • 所谓数据交付就是指将磁盘高速缓存中的数据传送给请求者进程。
  • 系统可以采取两种方式将数据交付给请求进程:
    • (1)数据交付:直接将高速缓存中的数据传输到请求进程的内存工作区中。
    • (2)指针交付:将指向高速缓存中某区域的指针交付给请求者进程。

置换算法

  • 当高速缓冲中已经装满数据时,如果要从磁盘的盘块中将数据读入高速缓存就要将某些盘块的数据换出。
  • 常用的算法是最近最久未使用算法(LRU)、最近未使用算法(NRU)以及最少使用算法(LFU)。
  • 除了考虑到最近最久未使用这一原则外,还考虑访问频率、可预见性和数据的一致性。

周期性地写回磁盘

  • 根据LRU算法,那些经常要被访问的盘块数据可能会一直保留在高速缓存中,长期不会被写回磁盘。
  • 增设修改(update)程序,强制性地将所有在高速缓存中已经修改的盘块数据写回磁盘。

提高磁盘I/O的其他途径

  • 提前读:采用顺序访问方式对文件进行访问,可以预知下一次要读的盘块,此时可以采取预读的方式。
  • 延迟写:暂时不将缓冲区中的数据写入磁盘,而是挂在空闲缓冲区队尾。当需要作为空闲缓冲区分配时,再将数据写入磁盘。
  • 优化物理块的分布:同一文件的盘块尽可能靠近。
  • 虚拟盘:利用内存空间去仿真磁盘,形成虚拟盘。
  • 15
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值