unix操作系统实验5

unix操作系统实验5

ID:25229711

大小:589.00 KB

页数:36页

时间:2018-11-19

unix操作系统实验5_第1页
unix操作系统实验5_第2页
unix操作系统实验5_第3页
unix操作系统实验5_第4页
unix操作系统实验5_第5页
资源描述:

《unix操作系统实验5》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、UNIX操作系统实验首都师范大学信息工程学院系统分析与管理实验室33UNIX操作系统实验首都师范大学信息工程学院系统分析与管理实验室33目录19223346491、UNIX安装及基本操作………………………………………2、UNIX编程基础……………………………………….3、UNIX进程实验……………………………………….4、UNIX进程间通信……………………………………..5、UNIX文件系统实验………………………………………..6、UNIX综合实验………………………………………..33实验五文件系统实验一、背景知识1、基础知

2、识虚拟文件系统VFS(VirtualFileSystem)提供了一组逻辑API供用户程序对文件进行操作使用。VFS的设计目的是为了让用户程序可以对各种不同类型的文件系统进行读写。具体地说,一个已经格式化为MS-DOS、MINIX、UNIX、Linux、ext2或ext3风格的文件系统或其他格式的文件系统可以装载到Linux目录中,通过为文件管理程序设计特定的函数可以实现。这些函数定义了API,它们与磁盘以及文件系统的具体细节无关。但是,这些与磁盘无关的组件可以和任何与磁盘有关的组件协调工作,从而把磁盘特有的信息转化为内部的V

3、FS格式。在装载文件系统(例如,MS-DOS文件系统)时,文件管理程序中与磁盘有关的部分要执行以下步骤:(1)读取磁盘的物理信息和FAT表内容。(2)转换记录中所需要的信息。(3)把这些信息写入VFS数据结构(文件结构表中的structfile和inode表中的structinode)。当底层的磁盘已经格式化为几种不同的格式时,VFS怎样知道如何读写磁盘呢?例如,读取MS-DOS文件系统中磁盘的物理信息和FAT表内容。每个可以装载的文件系统必须在VFS中注册,这样才能定义自己的类型,这些类型通常在计算机启动时通过fs/sup

4、er.c中定义的系统调用函数register_filesystem注册。该函数的目的是为文件系统类型定义一个函数read_super,该函数执行以下操作:(1)从给定类型的磁盘(实际上是一个文件系统)中读取信息。(2)转换文件管理程序中与磁盘无关部分所需要的信息。(3)将这些信息存储到一个structsuper_block数据结构中,该数据结构是与磁盘无关的超级块(参见include/linux/fs.h)。每次当装载相关类型的文件系统时,文件管理程序中与磁盘无关的部分则调用函数read_super来填充超级块。超级块的定义

5、格式如下:structsuper_block{...;unsignedlongs_blocksize;...;structfile_system_type*s_type;structsuper_operations*s_op;...;union{structminixsbinfominix_sb;...;structext2sbinfoext2_sb;...;structmsdossbinfomsdos_sb;33}u;};该超级块包含了有关文件系统类型的基本信息。例如,文件系统类型(s_type)、块大小(s_blocks

6、ize)和文件系统的特定信息(minix_sb、ext2_sb、msdos_sb和generic_sbp)。超级块中还保存了一组超级块操作(structsuper_operationss_op)。这些操作(在include/linux/fs.h中有定义)主要针对磁盘上的超级块信息,它们包括读写i节点(inode)、把超级块信息回写到磁盘上等。其定义格式如下:structsuper_operations{void(*read_inode)(structinode*);void(*write_inode)(structinode

7、*);void(*put_inode)(structinode*);void(*delete_inode)(structinode*);int(*notifychange)(structdentry*,structiattr*);void(*put_super)(structsuper_block*);int(*statfs)(structsuper_block*,structstatfS*,int);int(*remount_fs)(structsuperblock*,int*,char*);void(*umount_be

8、gin)(structsuper_block*);};这些函数是VFS装载特定文件系统的调用接口。函数read_inode建立Linux内存中的inode(参见include/linux/fs.h中的structinode结构),函数write_inode先把Linux中的inode信息转

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。