操作系统笔记整理 第八章 磁盘存储器的管理

文件的物理结构:根据外存上的物理块的分配机制,记录文件外存的存储结构。用户感知不到的。

FAT表的作用:用来描述文件系统内存储单元的分配状态及文件内容的前后链接关系的表格(也可以笼统的说成是记录文件所在位置的表格)。它对于FAT文件系统来讲是至关重要的一个组成部分,并且它对于硬盘的使用也非常重要,假若丢失文件分配表,那么硬盘上的数据就无法定位,也就不能使用了。

FAT表大小的计算:

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


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

由于文件存储设备是分成若干个大小相等的物理块,并以块为单位来交换信息的,因此,文件存储空间的管理实质上是一个空闲块的组织和管理问题,它包括空闲块组织,空闲块的分配和空闲块的回收等几个问题。

二、文件存储空间管理的方式

1. 空闲表法(空闲文件目录)

操作系统为磁盘外存上所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表中包含序号、空闲区的第一块号、空闲块的块数等信息。

空闲表法适用于连续文件结构,其分配的方式是,在系统为某个文件分配空闲块时,首先扫描空闲表项,如找到合适的空闲区项,则分配给申请者,并把该项从空闲表中去掉。如果一个空闲区项不能满足申请者的要求,则把空闲表中的另一项满足要求的分区分配给申请者(连续文件结构除外)。如果一个空闲表项所含块数超过申请者要求,则为申请者分配了所要的物理块后,再修改该表项。 

2. 空闲链表法(自由链表法)

将所有空闲盘区拉成一条空闲链,根据空闲链所有的基本元素不同,可以把链表分成两种形式:空闲盘块链和空闲盘区链。

空闲盘块链是将磁盘上的所有空闲分区,以盘块为单位拉成一条链,当用户创建文件请求分配存储空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户;当用户删除文件时,系统将回收的盘块依次加入到空闲盘块链的末尾。

空闲盘区链是将磁盘上的所有空闲盘区(每个空闲盘区可包含若干个盘块)拉成一条链。在管理的线性表中,每一个表项对应一个空闲区,增加一项存放指向空闲块的指针,将磁盘上的所有空闲区(可包含若干个空闲块)拉成一条链。每个空闲区上除含有用于指示下一个空闲区的指针外,还有本盘区大小(盘块数)的信息。 

3. 位示图法

本方法利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上所有的盘块都有与之对应的一个二进制位。当其值为0时,表示对应的盘块空闲,当其值为1时,表示对应的盘块已经分配。 

4. 成组链接法

空闲表法和空闲链表由于空闲表太长而不适合大型文件系统的使用。成组链接法是两种方法相结合的一种管理方法,兼备了两种方法的优点而克服了两种方法的缺点。其大致的思想是:把空闲的n个空闲扇区的地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址,以此类推,直至所有空闲扇区都予以链接。

以下以UNIX操作系统为例,说明成组链接法的原理。

(1) UNIX操作系统采用索引结构存放文件物理块的地址

    在UNIX 操作系统中,一个块定义为512 bytes,每一个文件对应一个唯一的机内代码,称为i节点,在文件的i节点中,放有存放文件的物理块号,由对应文件的逻辑字节偏移量计算出逻辑块号后,就可搜索i节点的地址索引结构而得文件的物理块号。

(2) UNIX system 的i节点中,定义有一个40字节长的字符数组。

由于每个物理块占用3个字节,因此,此字符组最多可以放下13个物理块号。显然,对于大于13个物理块(6.5KB)的文件,i节点中的索引数组将无法存放所有的物理块号。

(3) UNIX系统把文件分为小型、中型、大型和巨型四种。

(4) UNIX 系统文件的物理结构如图1

(5)UNIX的空闲块管理也使用类似的方法

成组链接法

提升磁盘I/O:

一次尽可能多写入或多读取。也就是说,将程序的读写buffer设置得尽可能大一些。例如日志或者redo log的写入,不是每次调用都直接写磁盘,而是先缓存到内存中,等buffer满了再写入磁盘,也可以定时写入磁盘。 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值