1、 操作系统操作系统 原理原理 Operating System Principle 10-5 空闲空间管理空闲空间管理 Free-Space Management 自由空间管理 磁盘空间有限 ,如何进行磁盘空间管理? 需要 记录和维护磁盘的空闲空间 创建文件时,搜索空闲空间得到所需空间以分配 删除文件时,释放磁盘空间并将其记为空闲空间 Free-Space Management 自由空间管理 位图法 用一串二进制位反映磁盘空间中分配使用情况 , 每个物理块对应一位 , 分配物理块为 0,否则为 1。 空闲块表 将所有空闲块记录在一个表中,即空闲块 表 空闲块链表 把所有空闲块链成一个 链 Fr
2、ee-Space Management 自由空间管理 Bit vector or bit map ( n blocks) (位向量或位图 ) 用一串二进制位反映磁盘空间分配使用情况 , 每个物理块对应一位 , 已分配物理块为 0,空闲为 1 0 1 2 n-1 biti = 1 blocki free 0 blocki occupied Block number calculation(块号计算) ( number of bits per word每个字的 bit数 ) *( number of 0-value words值为 0的字的个数 ) +( offset of first 1 bit
3、第一个 bit为 1的 偏量 ) Free-Space Management( Cont.) 自由空间管理(续) Bit map requires extra space. Example(位图需要额外空间) block size = 212 bytes disk size = 230 bytes ( 1 gigabyte) n = 230/212 = 218 bits ( or 32K bytes) Easy to get contiguous files (比较容易得到连续的文件) Free-Space Management 自由空间管理 将所有空闲块记录在一个表中,即空闲块表,有两项:该
4、空闲区的第一将所有空闲块记录在一个表中,即空闲块表,有两项:该空闲区的第一个盘块号、该区的空闲盘块总数个盘块号、该区的空闲盘块总数 空闲块表 空闲块表空闲块表把所有空闲块链成一个链把所有空闲块链成一个链 Linked list ( free list)(链接表)(链接表 自由空间表)自由空间表) 空闲块链表 空闲块链表空闲块链表Cannot get contiguous space easily( 得到连续空间困难) No waste of space( 没有浪费空间) 扩展:成组链接法 Linked Free Space List on Disk 磁盘上链接的空闲空间列表 free-spac
5、e list head 0 4 8 12 16 20 24 28 1 2 3 5 6 7 9 10 11 13 14 15 17 18 19 21 22 23 25 26 27 29 30 31 Group Link Method for UNIX UNIX的成组链接法 文件区的所有空闲盘块被分成若干组(如文件区的所有空闲盘块被分成若干组(如 100个空闲盘分成一组)个空闲盘分成一组) 每一组的第一个盘块中记录有下一组的盘块总数和盘块号每一组的第一个盘块中记录有下一组的盘块总数和盘块号 第一组盘块总数和盘块号记入空闲盘块号栈中第一组盘块总数和盘块号记入空闲盘块号栈中 空闲空闲 盘块号栈:盘块号
6、栈: 存放当前可用的空闲盘块号及空闲盘块号数存放当前可用的空闲盘块号及空闲盘块号数 N(最多(最多 100个)。个)。 能能 快速找到大量空闲块的地址快速找到大量空闲块的地址 Group Link Method for UNIX UNIX的成组链接法 100 300 299 . . . 202 201 S.free 0 1 98 99 空闲盘 块号栈 100 400 399 301 300 299 201 . . . 7999 7901 . . . 空闲盘块的成组链接法 . . . . . . . . . 7899 7801 7900 . . . 99 0 7999 7901 301 399 . . . 400 100