CN101382877A - Fat文件数据读取/写入方法、系统和移动通信终端 - Google Patents
Fat文件数据读取/写入方法、系统和移动通信终端 Download PDFInfo
- Publication number
- CN101382877A CN101382877A CNA2008102244607A CN200810224460A CN101382877A CN 101382877 A CN101382877 A CN 101382877A CN A2008102244607 A CNA2008102244607 A CN A2008102244607A CN 200810224460 A CN200810224460 A CN 200810224460A CN 101382877 A CN101382877 A CN 101382877A
- Authority
- CN
- China
- Prior art keywords
- data
- logical block
- fat file
- read
- sector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机技术,特别涉及一种基于Linux操作系统的FAT文件数据读取/写入方法、系统和移动通信终端,用以提高存储设备中的FAT文件数据读取/写入操作速度。本发明实施例在Linux操作系统中,为提高FAT文件的读取/写入速度,将逻辑块的大小设定为连续2个或2个以上扇区,并根据文件数据在存储设备中占用的逻辑块号码确定每一次数据读取/写入操作的第一个扇区号码,根据第一个扇区号码和逻辑块包含的扇区个数,利用一次数据读取/写入操作命令就可以完成一个逻辑块大小数据的操作,从而成倍减少了数据读取/写入操作命令的发送次数,提高了存储设备中的FAT文件数据读取/写入操作速度。
Description
技术领域
本发明涉及计算机技术,特别涉及一种基于Linux操作系统的FAT文件数据读取/写入技术。
背景技术
Linux是一套免费使用和自由传播的操作系统,主要用于基于Intel x86系列中央处理器的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。Linux以高效性和灵活性著称,能够在PC计算机上实现全部的Unix特性,具有多任务、多用户的能力,被广泛应用在各种具有多媒体处理能力的便携式设备中,例如手机、照相机等便携式设备。
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,文件管理系统由三部分组成:与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构。从系统角度来看,文件管理系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。文件管理系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。
Linux操作系统支持多种的文件管理系统格式,支持文件管理系统使用不同设备。Linux操作系统中的文件管理系统比较复杂,软件结构如图1所示,包括:VFS(虚拟文件管理系统层)、Disk Caches(磁盘数据缓冲区层)、MappingLayer(文件管理系统映射层)、Generic Block Layer(通用存储设备层)、I/Oschedule layer(输入/输出调度层)和Block Device Driver(存储设备驱动层),其中:
VFS是最上层,不同的文件管理系统使用相同的软件接口,调用者不需要考虑实际的文件管理系统类型,只需要告诉VFS所要读取/写入的文件路径和文件名;
Disk Caches位于VFS下层,为了提高读取/写入速度,已经读取/写入的数据暂时保存到数据缓冲区中,如果下次再次读取/写入这些数据可以直接操作数据缓冲区而不需要读取/写入设备。如果数据缓冲区没有需要的数据,VFS软件使用Mapping Layer层接口,根据所使用的具体文件管理系统得到用户所需要的文件数据在具体存储设备中的物理位置;
VFS通过Generic Block Layer层和I/O schedule layer层,将读取/写入所需数据的起始物理位置、大小请求发送给Block Device Driver层;
存储设备驱动层根据使用的具体不同的数据存储设备,发送读取/写入操作命令,完成一次读取/写入操作,将读取的数据保存到数据缓冲区中或者将数据缓冲区数据写入数据存储设备。
其中:Generic Block Layer层、I/O schedule layer层和Block Device Driver层协调负责数据存储设备中的数据读取/写入管理。
现有Linux操作系统以逻辑块(Block)为单位管理存储设备,并为每一个逻辑块设定对应的号码作为逻辑块的物理地址,VFS从具体的文件管理系统中获得的物理位置实际上就是文件数据在存储设备中占用的逻辑块号码信息。一个逻辑块的大小可以设定为一个或一个以上连续的扇区,而存储设备读取/写入操作的最小单位是一个扇区,读取/写入操作命令中需要指定读取/写入操作的数据所在的扇区。
因此如图2所示,为方便管理,现有Linux操作系统中将一个逻辑块的大小设定为一个扇区,以保持扇区号码和逻辑块号码的一致,这样VFS从具体的文件管理系统中获得的逻辑块号码实质上就是扇区号码,可以直接将逻辑块号码作为扇区号码进行数据读取/写入控制。
由于对每一个扇区中的数据进行读取/写入操作时,VFS都需要将数据所在扇区号码发送给Block Device Driver层,Block Device Driver层根据每次收到的扇区号码,在对应扇区中进行数据的读取/写入操作。例如当扇区大小只有一个sector(512字节)时,用户需要读取/写入4K字节数据时,VFS层需要发送给8次请求,由于VFS每一次发送请求都需要检查磁盘数据缓冲区所需要的数据是否存在,调用文件管理系统映射层得到文件所在的逻辑块号码,通过调用通用块设备层、输入/输出调度层和块设备驱动层向数据存储设备发送读取/写入操作命令,数据存储设备接收命令后需要一定时间后才能开始数据读取/写入操作。因此发送请求越多,各种开销和延时越大,数据读取/写入操作整体性能越低,数据读取/写入速度较慢,则无法满足多媒体业务对文件高速读写的要求。
发明内容
本发明实施例提供一种基于Linux操作系统的FAT文件数据读取/写入方法、系统和移动通信终端,用以提高存储设备中的FAT文件数据读取/写入操作速度。
一种基于Linux操作系统的FAT文件数据读取/写入方法,包括:从FAT文件管理系统中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个存储FAT文件数据的逻辑块的号码进行数据读取/写入操作,每一个逻辑块包括至少两个连续扇区,其中:每一次根据一个逻辑块号码进行的数据读取/写入操作过程具体包括:
根据逻辑块号码确定本次需要进行数据读取/写入操作的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,m为一个逻辑块包含的扇区个数,m为大于等于2的整数,q为FAT文件信息区包含的扇区个数x除以m的余数;
向数据存储设备的管理单元发送携带所述N和m的数据读取/写入操作命令;
所述数据存储设备的管理单元根据数据读取/写入操作命令中的N和m,在以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
较佳的,从FAT文件管理系统中获得存储FAT文件数据的逻辑块的号码之前,还包括:根据所述x和m确定q并将所述q保存到数据缓冲区中;以及在每一次根据一个逻辑块号码进行的数据读取/写入操作之前,还包括:从数据缓冲区获取q。
较佳的,当进行FAT文件数据读取操作时,所述根据所述x和m确定q并将所述q保存到数据缓冲区中之前,还包括:
确定数据缓冲区中是否已经保存有需要读的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后,再执行根据所述x和m确定q并将所述q保存到数据缓冲区中。
一种基于Linux操作系统的FAT文件数据读取/写入系统,包括:
数据存储设备,用于存储FAT文件数据,所述数据存储设备包含多个逻辑块,每一个逻辑块包含m个扇区,m为大于等于2的整数;
FAT文件管理单元,用于管理存储的FAT文件数据,所述FAT文件的存储区包含FAT文件信息区和FAT文件数据区,所述FAT文件信息区包含x个扇区;
虚拟文件管理单元,用于从所述FAT文件管理单元中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个逻辑块的号码确定每一次进行数据读取/写入操作的对应的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,q为所述x除以m的余数,并分别根据确定出的N发送一次携带所述N和m的数据读取/写入操作命令;
数据存储管理单元,用于接收所述虚拟文件管理单元发送的读取/写入操作命令,并在接收到每一个数据读取/写入操作命令时,根据其中的N和m,对以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
较佳的所述的系统还包括:数据缓冲区,所述虚拟文件管理单元还用于在获得存储FAT文件数据的逻辑块的号码之前,根据所述x和m确定q并将所述q保存到数据缓冲区中;以及在每一次根据一个逻辑块号码确定对应的N之前,从所述数据缓冲区获取q。
进一步,所述虚拟文件管理单元还用于当进行FAT文件数据读操作时,在所述根据所述x和m确定q并将所述q保存到数据缓冲区中之前,确定数据缓冲区中是否已经保存有需要读取的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后,再执行根据所述x和m确定q并将所述q保存到数据缓冲区中。
一种基于Linux操作系统的移动通信终端,包括所述基于Linux操作系统的FAT文件数据读取/写入系统。
本发明实施例在Linux操作系统中,为提高FAT文件的读取/写入速度,将逻辑块的大小设定为连续2个或2个以上扇区,并根据文件数据在存储设备中占用的逻辑块号码确定每一次数据读取/写入操作的第一个扇区号码,根据第一个扇区号码和逻辑块包含的扇区个数,利用一次数据读取/写入操作命令就可以完成一个逻辑块大小数据的操作,从而成倍减少了数据读取/写入操作命令的发送次数,提高了存储设备中的FAT文件数据读取/写入操作速度。
附图说明
图1为现有Linux操作系统中的文件管理系统软件结构示意图;
图2为现有Linux操作系统中的逻辑块和扇区对应关系示意图;
图3为本发明实施例以一个逻辑块大小为2个扇区、FAT文件信息区大小为3的示例图;
图4a为本发明实施例以一个逻辑块大小为2个扇区、FAT文件信息区大小为零的示例图;
图4b为本发明实施例以一个逻辑块大小为5个扇区、FAT文件信息区大小为3的示例图;
图5为本发明实施例提供的一种基于Linux操作系统的FAT文件数据读取方法流程示意图;
图6为本发明实施例提供的一种基于Linux操作系统的FAT文件数据写入方法流程示意图;
图7为本发明实施例提供的一种基于Linux操作系统的FAT文件数据读取/写入系统主要结构示意图。
具体实施方式
现有很多存储设备,例如TF存储卡或硬盘等,都可以支持一次读取/写入连续多个扇区的数据读取/写入操作命令,在数据读取/写入操作命令中指示需要操作的第一个扇区号码以及连续扇区的个数,则可以以第一个扇区号码对应的扇区开始,逐个完成指定数量的连续多个扇区的数据读取/写入操作。
FAT(File Allocation Table)文件管理系统在基于WINDOWS操作系统的计算机中被广泛使用,文件数据结构一般采用FAT12、FAT16或FAT32等格式存储。FAT文件管理系统几乎被所有个人计算机的操作系统所支持,使它成为理想的软盘和记忆卡文件管理系统,也适合用作不同操作系统中的数据交流。如图3所示,FAT格式文件数据结构包括文件信息区和文件数据区,文件信息区通常位于开头部分,用于保存文件数据的大小、存储空间大小等信息,文件信息区的大小为一个或一个以上的扇区。文件数据区用于存储FAT格式文件数据,文件信息区一般位于存储设备的开头部分,用于保存文件数据的管理信息。存储设备剩余的空间为文件数据区,用于存放文件数据。
FAT文件系统分配文件空间是以簇单位。簇的大小在文件系统格式化时设置。一般为扇区的2幂次方倍,也就是可以是1,2,4,8,16,32倍。如果文件数据区的扇区总数不是簇大小的整数倍,最后不能组成一个簇的扇区将不能存储数据,被FAT文件系统丢弃不使用。举例说明:FAT文件数据实际存储的位置是从文件数据区开始,例如物理设备总的容量是100个扇区,文件系统信息区占用扇区号0到2的3个扇区,剩余的97个扇区给文件系统数据区使用。如果FAT文件系统的簇大小是2个扇区数,那么FAT文件系统分配给文件数据存放空间的单位是2个扇区。也就是说连续2个扇区为分配单位。那么扇区号3,4为一个分配单位,扇区号5,6为一个单位,以此类推扇区号97,98为一个单位。最后的扇区号99不足一个簇,不能分配给文件,所以不能使用。
本发明实施例在Linux操作系统中,为提高FAT文件的读取/写入速度,将逻辑块的大小设定为连续2个或2个以上扇区,如图4a所示,如果FAT文件系统扇区大小是512字节,簇大小小于等于扇区的8倍(也就是小于4k字节),设置逻辑块的大小与簇大小一致。如果超过8倍,设置逻辑块的大小为扇区的8倍,由于簇的是扇区的2幂次方倍,因此逻辑块大小与簇大小是整数倍关系。根据文件数据在存储设备中占用的逻辑块号码确定每一次数据读取/写入操作的第一个扇区号码,根据第一个扇区号码和逻辑块包含的扇区个数,利用一次数据读取/写入操作命令就可以完成一个逻辑块大小数据的操作,从而成倍减少了数据读取/写入操作命令的发送次数,提高了存储设备中的数据读取/写入操作速度。
如果假设FAT文件信息区的大小为0,以一个逻辑块大小为2个扇区为例,将逻辑块号码乘以相应的倍数,则可以将逻辑块号码转换为该逻辑块所占的第一个扇区号码。例如逻辑块号码1乘以倍数2得到2,是对应逻辑块号码1的第一个扇区号码2。一个逻辑块包含3个或3个以上扇区的转换原理完全相同。假设逻辑块号码为n,一个逻辑块大小为m个扇区,则逻辑块号码对应的第一个扇区号码N通过如下公式1确定:
N=n×m (1)
根据公式1,从N至N+m的连续多个扇区组成一个逻辑块,并对应存储设备中的实际逻辑块,仍参阅图3所示,第一次数据读取/写入操作的两个扇区,扇区0和扇区1组成逻辑块0,第二次数据读取/写入操作的两个扇区,扇区2和扇区3组成逻辑块1,依次类推。
如果假设FAT文件信息区的大小为x,根据公式1确定的第一个扇区号码和对应逻辑块的实际第一个扇区号码之间存在一定偏差,则该偏差的扇区个数为x除以m的余数q,如下公式2所示:
N=n×m+q (2)
每一次数据读取/写入操作的多个连续扇区并不是存储设备中的一个实际逻辑块,仍参阅图3所示,如果文件信息区大小是3个扇区。文件数据区大小从扇区号3到扇区号2n+1,如果簇大小是2个扇区,划分扇区号3、4为一个簇,5、6为一个簇,依此类推最后一个簇占用扇区号2n-1、2n。最后一个扇区号2n+1不能组成一个簇将不使用。设置逻辑块大小也是2个扇区,则FAT文件信息区占用逻辑块0的所有扇区和逻辑块1的第一个扇区,则FAT文件数据占用的扇区实际从逻辑块1的第二个扇区开始到逻辑块n的第一个扇区,则根据公式2:
q等于1;
根据逻辑块0,第一次数据读取/写入操作的第一个扇区号码N1为3,第一次数据读取/写入操作的连续两个扇区为扇区3和扇区4;
根据逻辑块2,第二次数据读取/写入操作的第一个扇区号码N2为5,第一次数据读取/写入操作的连续两个扇区为扇区5和扇区6;
......
依次类推:
根据逻辑块n-1,最后一次数据读取/写入操作的第一个扇区号码Nn为2n-1,最后一次数据读取/写入操作的连续两个扇区为扇区2n-1和扇区2n。
逻辑块大小设置有要求,应该是扇区数的2的幂次方倍,也就是2,4,8,16,32倍。主要原因是简化设计。逻辑块大小最大是4k字节,也就是说扇区大小是512时,逻辑块最大可以是扇区大小的8倍。再以一个逻辑块的大小为4个扇区为例,如图4b所示,FAT文件信息区大小为3个扇区时,文件信息区占用逻辑块0的所有扇区,文件数据占用的扇区实际从逻辑块0的第四个扇区开始,直至逻辑块n的所有扇区,则文件数据的逻辑块包括逻辑块0、逻辑块1.....直至逻辑块n,根据公式2:
q等于3;
根据逻辑块0,第一次数据读取/写入操作的第一个扇区号码N1为3,第一次数据读取/写入操作的连续四个扇区包括:扇区3、扇区4、扇区5和扇区6;
根据逻辑块1,第二次数据读取/写入操作的第一个扇区号码N2为7,第二次数据读取/写入操作的连续四个扇区包括:扇区7、扇区8、扇区9和扇区10;
.......
依次类推:
根据逻辑块n-1,最后一次数据读取/写入操作的第一个扇区号码Nn为4n-2,最后一次数据读取/写入操作的连续四个扇区包括:扇区4n-1、扇区4n、扇区4n+1和扇区4n+2。
根据以上示例可见,每一次数据读取/写入操作的多个连续扇区组成的逻辑块并不是存储设备的实际逻辑块,而是和实际逻辑块之间偏差了q个扇区。
需要说明的是,FAT文件数据区占用的扇区是连续的,占用大小从FAT信息区最后扇区开始到物理存储设备最后扇区。但是文件存储空间是以簇单位分配的,例如一个FAT文件可能分配的簇号是1,5,8,不连续,但是每个簇占用的扇区是连续的。
较佳的,本发明实施例中,由于linux操作系统的数据缓冲区数据结构体buffer_head中b_state是一个32位变量,主要作用是保存数据缓冲区状态,而现有linux操作系统中只了使用其中几位,剩余的处于空闲状态,本发明实施例可以利用其中空闲的3位表示偏差值q。具体实现方法为,当linux操作系统需要操作一个没有在数据缓冲区中保存的FAT文件数据时,读取FAT信息区大小x和设定的逻辑块大小m,根据x和m计算出偏差值q,将偏差值q保存到为该FAT文件数据申请的数据缓冲区中b_state的特定比特位上即可,这样,每一次进行逻辑块号码与扇区号码转换运算时,从b_state的特定比特位上获得该偏差值q即可。
由于逻辑块大小为m个扇区时,无论FAT信息区大小是多少,偏差值不会大于m,只能取值为0到m-1的整数。而一般FAT文件系统中逻辑块大小最大不超过4K字节,是扇区大小的8倍,则偏差值最大取值是7,需要在b_state中定义3个比特位就可以保存偏差值。
基于上述原理,本发明实施例首先提供一种基于Linux操作系统的FAT文件数据读取方法,如图5所示,包括如下步骤:
步骤S501,确定数据缓冲区中是否已经保存有需要读取的FAT文件数据;
步骤S502,如果是则从数据缓冲区中读取该FAT文件数据,否则再执行步骤S503;
步骤S503,根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区;
当然,本发明实施例中,步骤S501和S502也可以省略,每一次都从存储设备中重新读取数据。
步骤S504,根据x和m确定q,并将所述q保存到数据缓冲区的设定存储位置中;
其中:x为需要读取的FAT文件的信息区包含的扇区个数,m为一个逻辑块包含的扇区个数,q为x除以m的余数。
当然,本发明实施例中,步骤S504也可以省略,每一次确定N之前,都先计算一次q。
步骤S505,获得一个逻辑块号码n;
步骤S506,确定逻辑块号码n对应的第一个扇区号码N;
N为每一次进行数据读取操作的第一个扇区号码,N=n×m+q。
步骤S507,向数据存储设备的管理单元发送携带N和m的数据读取操作命令;
步骤S508,确定是否已经根据所有逻辑块号码完成了数据读取操作,如果是则结束,否则转入步骤S505获得下一个逻辑块号码,直至完成所有数据读取操作。
步骤S509,数据存储设备的管理单元根据数据读取操作命令中的N和m,在以第N个扇区开始的连续m个扇区上分别进行数据读取操作,并将读取的数据保存至申请的数据缓冲区中。
本发明实施例为提高FAT文件数据的读取速度,在Linux操作系统中,将逻辑块包含的扇区个数设定为大于等于2的整数m,并充分考虑到FAT文件数据的信息区结构,完成了逻辑块号码和扇区号码之间的转换,从通过发送一次数据读取命令,就可以完成m个连续扇区的数据读取操作,相对于读写每一个扇区的数据都需要发送一次数据读取命令,大大提高了数据读取的速度。
如图6所示,本发明实施例还对应提供一种基于Linux操作系统,将FAT文件数据写入存储设备的方法,包括如下步骤:
步骤S601,从FAT文件管理系统中获得存储FAT文件数据的逻辑块的号码;
步骤S602,根据x和m确定q并将q保存到数据缓冲区中;
当然,本发明实施例中,步骤S603也可以省略,每一次确定N之前,都先计算一次q。
步骤S603,获得一个逻辑块号码n;
步骤S604,确定逻辑块号码n对应的第一个扇区号码N;
N为每一次进行数据写入操作的第一个扇区号码,N=n×m+q。
步骤S605,向数据存储设备的管理单元发送携带N和m的数据写入操作命令;
步骤S606,确定是否已经根据所有逻辑块号码完成了数据写入操作,如果是则结束,否则转入步骤S603获得下一个逻辑块号码,直至完成所有数据写入操作。
步骤S607,数据存储设备的管理单元根据数据写入操作命令中的N和m,在以第N个扇区开始的连续m个扇区上分别进行数据写入操作。
需要写入的数据的存储位置可以在数据缓存区中,也可能在其它存储设备上,该技术细节为本领域技术人员所熟知,这里不再详细描述。
本发明实施例为提高FAT文件数据的写入速度,在Linux操作系统中,将逻辑块包含的扇区个数设定为大于等于2的整数m,并充分考虑到FAT文件数据的信息区结构,完成了逻辑块号码和扇区号码之间的转换,从通过发送一次数据写入命令,就可以完成m个连续扇区的数据写入操作,相对于写入每一个扇区的数据都需要发送一次数据写入命令,大大提高了数据写入的速度。
如图7所示,本发明实施例还提供一种基于Linux操作系统的FAT文件数据读取/写入系统,主要应用在基于Linux操作系统的智能移动通信终端上,包括:
数据存储设备701,用于存储FAT文件数据,数据存储设备包含多个逻辑块,每一个逻辑块包含m个扇区,m为大于等于2的整数;
FAT文件管理单元702,用于管理存储的FAT文件数据,FAT文件的存储区包含FAT文件信息区和FAT文件数据区,FAT文件信息区包含x个扇区;
虚拟文件管理单元703,用于从FAT文件管理单元702中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个逻辑块的号码确定每一次进行数据读取/写入操作的对应的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,q为x除以m的余数,并分别根据确定出的N发送一次携带N和m的数据读取/写入操作命令;
数据存储管理单元704,用于接收虚拟文件管理单元发送的读取/写入操作命令,并在接收到每一个数据读取/写入操作命令时,根据其中的N和m,对数据存储设备701中以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
进一步,本发明实施例提供的FAT文件数据读取/写入系统,还包括:
数据缓冲区705,虚拟文件管理单元还用于在获得存储FAT文件数据的逻辑块的号码之前,根据x和m确定q并将q保存到数据缓冲区中;以及在每一次根据一个逻辑块号码确定对应的N之前,从数据缓冲区获取q。
更进一步,虚拟文件管理单元还用于当进行FAT文件数据读取操作时,在根据x和m确定q并将q保存到数据缓冲区中之前,确定数据缓冲区中是否已经保存有需要读取的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后再执行根据x和m确定q并将q保存到数据缓冲区中。
本发明实施例中,VFS层设置在虚拟文件管理单元703中,Mapping Layer层设置在FAT文件管理单元702中,Generic Block Layer层、I/O schedule layer层和Block Device Driver层设置在数据存储管理单元704中,数据存储设备可以是TF等存储卡或硬盘等存储装置。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1、一种基于Linux操作系统的FAT文件数据读取/写入方法,包括:从FAT文件管理系统中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个存储FAT文件数据的逻辑块的号码进行数据读取/写入操作,每一个逻辑块包括至少两个连续扇区,其中:每一次根据一个逻辑块号码进行的数据读取/写入操作过程具体包括:
根据逻辑块号码确定本次需要进行数据读取/写入操作的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,m为一个逻辑块包含的扇区个数,m为大于等于2的整数,q为FAT文件信息区包含的扇区个数x除以m的余数;
向数据存储设备的管理单元发送携带所述N和m的数据读取/写入操作命令;
所述数据存储设备的管理单元根据数据读取/写入操作命令中的N和m,在以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
2、如权利要求1所述的方法,其特征在于:
从FAT文件管理系统中获得存储FAT文件数据的逻辑块的号码之前,还包括:根据所述x和m确定q并将所述q保存到数据缓冲区中;以及
在每一次根据一个逻辑块号码进行的数据读取/写入操作之前,还包括:从数据缓冲区获取q。
3、如权利要求2所述的方法,其特征在于,当进行FAT文件数据读取操作时,所述根据所述x和m确定q并将所述q保存到数据缓冲区中之前,还包括:
确定数据缓冲区中是否已经保存有需要读的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后,再执行根据所述x和m确定q并将所述q保存到数据缓冲区中。
4、一种基于Linux操作系统的FAT文件数据读取/写入系统,包括:
数据存储设备,用于存储FAT文件数据,所述数据存储设备包含多个逻辑块,每一个逻辑块包含m个扇区,m为大于等于2的整数;
FAT文件管理单元,用于管理存储的FAT文件数据,所述FAT文件的存储区包含FAT文件信息区和FAT文件数据区,所述FAT文件信息区包含x个扇区;
虚拟文件管理单元,用于从所述FAT文件管理单元中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个逻辑块的号码确定每一次进行数据读取/写入操作的对应的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,q为所述x除以m的余数,并分别根据确定出的N发送一次携带所述N和m的数据读取/写入操作命令;
数据存储管理单元,用于接收所述虚拟文件管理单元发送的读取/写入操作命令,并在接收到每一个数据读取/写入操作命令时,根据其中的N和m,对以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
5、如权利要求4所述的系统,其特征在于,还包括:
数据缓冲区,所述虚拟文件管理单元还用于在获得存储FAT文件数据的逻辑块的号码之前,根据所述x和m确定q并将所述q保存到数据缓冲区中;以及在每一次根据一个逻辑块号码确定对应的N之前,从所述数据缓冲区获取q。
6、如权利要求5所述的系统,其特征在于,所述虚拟文件管理单元还用于当进行FAT文件数据读操作时,在所述根据所述x和m确定q并将所述q保存到数据缓冲区中之前,确定数据缓冲区中是否已经保存有需要读取的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后,再执行根据所述x和m确定q并将所述q保存到数据缓冲区中。
7、一种基于Linux操作系统的移动通信终端,其特征在于,包括:
数据存储设备,用于存储FAT文件数据,所述数据存储设备包含多个逻辑块,每一个逻辑块包含m个扇区,m为大于等于2的整数;
FAT文件管理单元,用于管理存储的FAT文件数据,所述FAT文件的存储区包含FAT文件信息区和FAT文件数据区,所述FAT文件信息区包含x个扇区;
虚拟文件管理单元,用于从所述FAT文件管理单元中获得存储FAT文件数据的逻辑块的号码,并分别根据每一个逻辑块的号码确定每一次进行数据读取/写入操作的对应的第一个扇区号码N为:N=n×m+q,其中:n为逻辑块号码,q为所述x除以m的余数,并分别根据确定出的N发送一次携带所述N和m的数据读取/写入操作命令;
数据存储管理单元,用于接收所述虚拟文件管理单元发送的读取/写入操作命令,并在接收到每一个数据读取/写入操作命令时,根据其中的N和m,在以第N个扇区开始的连续m个扇区上分别进行数据读取/写入操作。
8、如权利要求7所述的移动通信终端,其特征在于,还包括:
数据缓冲区,所述虚拟文件管理单元还用于在获得存储FAT文件数据的逻辑块的号码之前,根据所述x和m确定q并将所述q保存到数据缓冲区中;以及在每一次根据一个逻辑块号码确定对应的N之前,从所述数据缓冲区获取q。
9、如权利要求8所述的移动通信终端,其特征在于,所述虚拟文件管理单元还用于当进行FAT文件数据读操作时,在所述根据所述x和m确定q并将所述q保存到数据缓冲区中之前,确定数据缓冲区中是否已经保存有需要读取的FAT文件数据,如果是则从数据缓冲区中读取该FAT文件数据,否则根据存储FAT文件数据的逻辑块个数,申请相应大小的数据缓冲区后,再执行根据所述x和m确定q并将所述q保存到数据缓冲区中。
10、如权利要求7、8或9所述的移动通信终端,其特征在于,所述数据存储设备为TF存储卡。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102244607A CN101382877A (zh) | 2008-10-15 | 2008-10-15 | Fat文件数据读取/写入方法、系统和移动通信终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102244607A CN101382877A (zh) | 2008-10-15 | 2008-10-15 | Fat文件数据读取/写入方法、系统和移动通信终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101382877A true CN101382877A (zh) | 2009-03-11 |
Family
ID=40462736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102244607A Pending CN101382877A (zh) | 2008-10-15 | 2008-10-15 | Fat文件数据读取/写入方法、系统和移动通信终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101382877A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186473A (zh) * | 2011-12-30 | 2013-07-03 | 英业达股份有限公司 | 存储资源的定位系统 |
WO2013149524A1 (zh) * | 2012-04-01 | 2013-10-10 | 华为技术有限公司 | 写入数据的方法及系统 |
CN107562841A (zh) * | 2017-08-25 | 2018-01-09 | 北京智行鸿远汽车有限公司 | 一种基于MPC5748芯片EMMC卡的Fatfs系统 |
CN109977092A (zh) * | 2019-03-26 | 2019-07-05 | 武汉深之度科技有限公司 | 一种复制文件的方法和计算设备 |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件系统的数据存储方法及装置 |
-
2008
- 2008-10-15 CN CNA2008102244607A patent/CN101382877A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186473A (zh) * | 2011-12-30 | 2013-07-03 | 英业达股份有限公司 | 存储资源的定位系统 |
WO2013149524A1 (zh) * | 2012-04-01 | 2013-10-10 | 华为技术有限公司 | 写入数据的方法及系统 |
CN107562841A (zh) * | 2017-08-25 | 2018-01-09 | 北京智行鸿远汽车有限公司 | 一种基于MPC5748芯片EMMC卡的Fatfs系统 |
CN109977092A (zh) * | 2019-03-26 | 2019-07-05 | 武汉深之度科技有限公司 | 一种复制文件的方法和计算设备 |
CN109977092B (zh) * | 2019-03-26 | 2021-06-08 | 武汉深之度科技有限公司 | 一种复制文件的方法和计算设备 |
CN110286859A (zh) * | 2019-06-28 | 2019-09-27 | 中国海洋大学 | 基于fat文件系统的数据存储方法及装置 |
CN110286859B (zh) * | 2019-06-28 | 2020-04-14 | 中国海洋大学 | 基于fat文件系统的数据存储方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102137761B1 (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
US9535625B2 (en) | Selectively utilizing a plurality of disparate solid state storage locations | |
CN103425602B (zh) | 一种闪存存储设备数据读写的方法、装置及主机系统 | |
US9734085B2 (en) | DMA transmission method and system thereof | |
US9053019B2 (en) | Non-volatile memory device, a data processing device using the same, and a swapping method used by the data processing and non-volatile memory devices | |
US20100070544A1 (en) | Virtual block-level storage over a file system | |
US20190026223A1 (en) | Memory system and non-transitory computer readable recording medium | |
EP2254036A2 (en) | Storage apparatus and data copy method | |
CN102831069B (zh) | 内存处理方法、内存管理设备 | |
US20150242310A1 (en) | Data Accessing Method And Data Accessing Apparatus | |
CN103838853A (zh) | 一种基于不同存储介质的混合文件系统 | |
CN110688256B (zh) | 一种元数据上电恢复方法、装置、电子设备及存储介质 | |
CN104798063A (zh) | 存储设备和主机设备 | |
GB2496261A (en) | Management of data movement in a thin provisioned storage system | |
CN101382877A (zh) | Fat文件数据读取/写入方法、系统和移动通信终端 | |
US11762580B2 (en) | Memory system and control method | |
CN108958950A (zh) | 电子存储设备的任务管理方法、主机和存储装置 | |
US11520520B2 (en) | Memory system and method of controlling nonvolatile memory | |
WO2024051041A1 (zh) | 一种数据存取方法、装置、设备和非易失性可读存储介质 | |
CN103631537A (zh) | 一种虚拟磁盘的管理方法及装置 | |
US20130173855A1 (en) | Method of operating storage device including volatile memory and nonvolatile memory | |
CN103488597A (zh) | 一种先进先出缓存器及其读写数据的方法 | |
CN117130955A (zh) | 用于管理相关联的存储器的方法和系统 | |
CN111061652A (zh) | 一种基于mpi-io中间件的非易失内存管理方法与系统 | |
US8918621B1 (en) | Block address isolation for file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20090311 |