wxworks DOS文件系统

本文详细介绍了VxWorks中的DOS文件系统,包括与MS-DOS的兼容性、磁盘组织结构(如引导扇区、FAT、根目录等)、文件和子目录的管理以及卷配置。此外,还提到了初始化DOSFs文件系统的方法和使用注意事项,如自动同步模式、长文件名支持等。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <dirent.h>


void main(void)
{
DIR * dir;
struct dirent * ptr;
int i;
dir=opendir("/ata0a/");
while((ptr=readdir(dir))!=NULL)
{
printf("d_name: %s\n",ptr->d_name);//需要更详细的信息你可以修改该句
}
closedir(dir);
return 0;

}
VxWorks为块设备(磁盘)的实时使用提供了两种本地文件系统:一种与MS-DOS文件系统相兼容,另一种与RT-11文件系统相兼容。这些文件系统的支持库分别为dosFsLib和rt11FsLib。VxWorks还提供了一种简单的raw文件系统,这个文件系统把整个磁盘作为一个单独的大文件。这个文件系统的支持库是rawFsLib。

VxWorks还为不使用标准文件或目录结构的磁带设备提供了一个文件系统。磁带卷被看作一个raw设备,整个卷就是一个大文件。这个文件系统的支持库是tapeFsLib。另外,VxWorks提供了一个文件系统支持库cdromFsLib,它允许应用程序从依照ISO9660标准文件系统格式化的CD-ROMs中读取数据。
在VxWorks中,文件系统不受块设备种类型或它的驱动程序的约束。VxWorks块设备都使用一个标准接口,以便文件系统可以与设备驱动程序自由的混合。做为选择,你可以写自己的能被驱动程序以相同方式使用的文件系统,只要在文件系统、驱动程序和I/O系统间遵循同样的标准接口。VxWorks的I/O体系结构使得在一个VxWorks系统中可以有多样的文件系统,甚至其类型也可以不同。块设备界面在3.9.4块设备中讨论。

1 与MS-DOS兼容的文件系统:dosFs
使用dosFs文件系统格式化的磁盘与MS-DOS(直至6.2版本)磁盘是相兼容的。由两个文件系统初始化的硬盘之间在格式上有细微区别。然而,数据自身是兼容的,而且dosFs可被配置成使用MS-DOS格式化的磁盘。
DosFs文件系统向不同要求的实时应用程序提供了良好的适应性。主要特点包括:
l 文件和目录分等级排序,允许有效地组织,在一卷上可以创建任意数量的文件。
l 每个文件可以是连续存储或非连续存储的。非连续存储的文件可使硬盘空间利用率更高,连续存储的文件可以增强系统性能。
l 具有与广泛可用的存储器和可恢复介质的兼容性。应用VxWorks(不使用dosFs文件扩展名)、MS-DOS PCs和其它系统创建的磁盘可以自由的交换。如果分区表被说明,那么硬盘也是兼容的。
l 具有从有dosFs文件系统的本地SCSI设备引导VxWorks的能力。
l 可以使用比通常MS-DOS允许的8个字符的文件名加3个字符的扩展名更长的文件名。
l NFS(网络文件系统)的支持。
1.1磁盘组织
MSDOS/ dosFs文件系统提供了一种以灵活方式组织磁盘数据的方法。它维护指定目录、每个包含文件或其它的目录的等级设置。文件可以被设置其搜索路径;文件扩展时,新的磁盘空间被自动分配。分配给一个文件的磁盘空间不必一定是连续的,这样可以使磁盘空间浪费最小。然而,为了提高它的实时性,dosFs文件系统允许连续空间被预先个别地分配给文件,从而使查找操作最块,行为更加确定。MS-DOS/dosFs文件系统的通常组织结构如图1,其中的多个单元在下面的部分论述。

图1 MS-DOS磁盘组织
-------------------------------
引导扇区 扇区0
-----------------------------
文件分配表(FAT)
-----------------------------
根目录
------------------------
文件和子目录
----------------------------



在MS-DOS/dosFs文件系统中,分配给文件的磁盘空间由一个或多个磁盘簇组成。一个簇为一组连续的磁盘扇区 。软盘通常由两个扇区组成一簇;固定硬盘由更多的扇区组成一簇。文件系统可以一次分配的最小的磁盘空间为一簇。虽然每簇有巨大数量的扇区允许在固定大小的文件分配表( FAT;见 文件分配表)中描述一个巨大的磁盘,但是这可能会导致磁盘空间的浪费。
引导扇区
MS-DOS/dosFs硬盘或磁盘的第一个扇区称为引导扇区。其中包含有多种配置数据。其中一些数据域描述硬盘的物理性质(例如总扇区数),另外一些域描述文件系统变量(例如根目录的大小)。
引导扇区信息在初始化时写入磁盘。dosFs文件系统可以使用在另一个系统上初始化过的磁盘(例如,在MS-DOS PC上使用FORMAT),或者VxWorks可以使用ioctl()调用中的FIODISKINIT函数初始化磁盘。
随着MS-DOS标准的发展,多样的域被加入到引导扇区的定义中。VxWorks 下的磁盘初始化使用MS-DOS 5.0版本定义的引导扇区域。
MS-DOS 初始化硬盘时,在引导扇区中加入一个分区表。而VxWorks不创建这样一个表。所以两个系统初始化的硬盘是不同的。如果设备的块补偿参数创建程序将超出分区表范围的数据指向数据区的第一个字节,那么VxWorks可以读取被 MS-DOS 格式化的磁盘文件。
文件分配表
每个MS-DOS/dosFs卷包含一个文件分配表(FAT)。对每一个分配给文件或目录的磁盘上的簇,FAT中都有一个条目。当簇没有使用过时(可分配),它的条目值为零。如果簇分配给一个文件,它的条目值是文件下一部分的簇号。如果簇位于文件的最后,它的条目值是-1。所以,文件或目录的表述由一个FAT条目链表组成。如2例所示,一个文件由簇2、300和500组成。簇3是没有使用过。

注意:dosFs不映射坏的磁盘扇区到FAT中
图2:FAT条目


此主题相关图片如下:




FAT的每个条目占12或16位。最多包含4085簇的磁盘卷用12位条目;多于4085簇的磁盘用16位条目。条目(特别是12位条目)最初利用英特尔8088体系配置的优点,编码为特殊形式。然而,因为所有的FAT操作都通过dosFs文件系统执行;所以编码和译码与 VxWorks应用程序无关。
一个卷通常包括多个FAT拷贝。这种冗余允许数据在第一份FAT中发生介质错误事件时得到恢复。
警告:如果是指定配置,dosFs 文件系统维护多个FAT拷贝;然而,在错误事件中,拷贝不是自动使用的。
FAT的大小和FAT拷贝的数量是由引导扇区中的域决定的。对于使用dosFs文件系统初始化的磁盘,这些参数是在dosFsDevInit( )调用(通过设置卷配置结构DOS_VOL_CONFIG中域)期间被指定的。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值