1. 实验目的
- 理解文件的逻辑结构与物理结构:文件的逻辑结构是用户视角下文件的组织方式,如顺序、链接和索引结构;物理结构是文件在存储介质上的实际存储方式,如连续、链接和索引方式。
- 掌握文件的物理结构与存取文件方法之间的关系:了解不同的物理结构如何影响文件的存取效率和方法。
2. 实验内容
- 设计文件分配表(FAT):创建一个数据结构来模拟文件分配表,记录文件在磁盘上的位置。
- 模拟程序实现:编写程序实现文件保存和记录增加的功能。
- 位示图管理:使用位示图来展示磁盘的使用情况。
- 显示文件目录、位示图、索引表:在程序执行的每一步,展示文件目录、位示图和索引表的状态。
3. 实验准备
- 理解磁盘文件的结构及管理方法:了解文件如何在磁盘上存储和管理。
- 理解文件目录及文件分配表(FAT):了解文件目录存储文件的元数据,FAT记录文件数据的物理位置。
- 理解文件存取的方法:了解顺序访问、随机访问等文件存取方法。
数据结构定义
以下是一些基本的数据结构定义:
文件目录项
class FileDirectoryEntry:
def __init__(self, filename, fid, size, faddr):
self.filename = filename # 文件名
self.fid = fid # 文件唯一标识符
self.size = size # 文件大小(记录个数)
self.faddr = faddr # 文件首地址(在FAT中的索引)
文件分配表(FAT)项
class FATEntry:
def __init__(self, next_block):
self.next_block = next_block # 下一个块的索引,-1表示文件结束
模拟程序设计
以下是模拟程序设计的概要:
初始化磁盘和FAT
def init_disk(disk_size):
disk = [0] * disk_size # 模拟磁盘块
fat = [FATEntry(-1)] * disk_size # 初始化FAT,-1表示空闲块
return disk, fat
分配磁盘空间
def allocate_space(fat