学 生 实 验 报 告
课程名称____ 实验日期_____年___月____日
学生
所在班级
实验名称
基于Linux形式的文件模拟
系统的
设计和实现
实验地点
同组人员
实验仪器
(
软件、硬件
环境)
实验目的(要求)
实验内容和步骤
(硬件类为:
原理、主要步骤、电路原理图等)
(软件类为:
数据结构、算法、主要步骤、界面等)
Linux的文件系统的整体结构是上层是虚拟文件系统VFS (Virtual File System),下层是物理文件系统。
VFS 只存在于内存中,在系统启动时产生,并随着系统的关闭而注销。
作用:屏蔽各类物理文件系统的差异和细节,给用户、应用
程序和Linux 的其它管理模块提供一个统一的接口。
作为接口层向操作系统内核提供了一系列统一的、有关文件的系统调用,使得Linux系统内核和用户进程能够透明地对不同的物理文件系统进行操作。
管理VFS 数据结构的组成部分主要包括:超级块、I节点以及文件操作函数入口等。
VFS中有四个主要的对象类型,它们分别是:
(1)超级块对象,它代表一个已安装文件系统。
(2)索引节点对象,它代表一个文件。
(3)目录项对象,它代表一个目录项(注意不是目录,目录是一个文件),是路径的一部分。
(4)文件对象,它代表由进程打开的文件。
物理文件系统是Linux中外存空间上真正的文件系统,与VFS相对应的EXT2、NFS、MSDOS等15种文件系统,称为具体的文件系统。
Linux每安装(mount)一个文件系统时,都会将其加入到该层中。其中EXT2是Linux 自行设计的具有较高效率的一种文件系统类型。
Linux的文件操作面向外存空间,采用缓冲技术和hash 表来解决外存与内存在I/O 速度上差异。
这样,Linux不仅能支持多种文件系统,同时也能支持不同文件系统相互之间进行访问。
Linux目录结构:
Linux 支持多个物理硬盘,每个物理磁盘又可以划分为一个或多个磁盘分区,在每个磁盘分区上可以建立一个文件系统。
一个物理文件系统在数据组织上,一般划分成引导块、超级块、索引节点区以及数据区。
引导块位于文件系统开头,通常为一个扇区,存放引导程序、用于读入并启动操作系统。
超级块记录文件系统的管理信息,根据特定文件系统的需要,在超级块中存储的信息不同。
索引节点区用于登记每个文件的目录项,第一个索引节点是该文件系统的根节点。数据区则存放文件数据或一些管理数据。
文件系统把物理设备上的文件组织成一种树型目录结构,如下图所示,从根节点到叶子节点的路径,称为文件的路径名,文件可以由其路径名唯一确定。
根节点是根目录root区的文件系统,其它每一种装载的文件系统都被安装到一个指定的目录下,一般在/mnt目录下。指定目录做为新装载的文件系统根目录,称为安装点(mount point)。此时,该目录中的文件和子目录,就是新装载的文件系统的文件和子目录,而该目录装载新文件系统前的原有信息都被覆盖。
VFS的功能
(1)记录可用的文件系统的类型,对物理文件系统的数据结构加以抽象,以一种统一的数据结构进行管理。
(2)把设备与对应的文件系统联系起来。
(3)处理面向文件的通用操作,接受用户层的系统调用,如read(),write(),open()等。
(4)涉及到针对物理文件系统的操作时,把它们映射到与控制文件、目录以及inode 相关的物理文件系统。
(5)支持多种物理文件系统之间的相互访问。
(6)接受内核其他子系统的操作请求,比如内存管理子系统,进程管理子系统。
1.超级块(superblock)
VFS在描述和
管理系统文件时,使用超级块和索引节点的方式。
VFS超级块是各种物理文件系统在安装