格式化磁盘的方法.pdf

上传人:111****112 文档编号:1057248 上传时间:2018-03-29 格式:PDF 页数:15 大小:478.86KB
返回 下载 相关 举报
摘要
申请专利号:

CN99102484.2

申请日:

1999.03.04

公开号:

CN1266224A

公开日:

2000.09.13

当前法律状态:

授权

有效性:

有权

法律详情:

著录事项变更IPC(主分类):G06F 9/44变更事项:发明人变更前:林光信 陈玄同 刘淼变更后:张思宝|||专利权的转移IPC(主分类):G06F 9/44登记生效日:20170915变更事项:专利权人变更前权利人:英业达股份有限公司变更后权利人:张思宝变更事项:地址变更前权利人:中国台湾台北市变更后权利人:山东省淄博市沂源县悦庄镇李家庄村三区69号|||授权|||公开|||

IPC分类号:

G06F9/44

主分类号:

G06F9/44

申请人:

英业达股份有限公司;

发明人:

林光信; 陈玄同; 刘淼

地址:

台湾省台北市

优先权:

专利代理机构:

柳沈知识产权律师事务所

代理人:

吕晓章

PDF下载: PDF下载
内容摘要

一种格式化磁盘的方法,用于磁盘(或磁盘分割区)的格式化操作,可节省格式化时间,本发明是通过调用BIOS的中断指令,取得磁盘(或磁盘分割区)的一总扇区数、一启动记录的位置以及一类型等与磁盘(或磁盘分割区)相关的信息,再根据磁盘(或磁盘分割区)的类型(FAT16或FAT32)以一逻辑运算单元重新规划每个文件配置表的扇区数,然后写入启动记录的相应位置内,并将文件配置表和文件目录和内容清为零,于是就完成磁盘的格式化程序。

权利要求书

1: 一种格式化磁盘的方法,应用于一具有一启动记录、一文件配置表、 以及一文件目录的磁盘分割区的格式化操作,用以节省格式化的时间,其特 征在于,它的步骤包括: a.以一逻辑运算单元取得与该磁盘分割区相关的一磁盘参数; b.产生一磁盘序号; c.根据该磁盘参数,以该逻辑运算单元取得该文件配置表的一扇区数; d.以该逻辑运算单元将该文件配置表的扇区数、该磁盘序号写入该启动 记录中的相应位置;以及 e.清除该文件配置表和一文件目录的内容。
2: 如权利要求1所述格式化磁盘的方法,其特征在于,该步骤a是以该 逻辑运算单元调用BIOS中断INT 13h取得该磁盘参数。
3: 如权利要求1所述格式化磁盘的方法,其特征在于,该磁盘参数包括 有该磁盘分割区的一总扇区数、一启动记录位置,一该磁盘分割区的类型、 以及一该磁盘分割区的编号。
4: 如权利要求3所述格式化磁盘的方法,其特征在于,该类型可为 FAT16。
5: 如权利要求3所述格式化磁盘的方法,其特征在于,该类型可为 FAT32。
6: 如权利要求1所述格式化磁盘的方法,其特征在于,该磁盘序号是以 随机(Random)的方式产生。
7: 如权利要求1所述格式化磁盘的方法,其特征在于,该步骤e将该文 件配置表和该文件目录的内容清为零。
8: 一种格式化磁盘的方法,其特征在于,它的步骤包括: a.以一逻辑运算单元取得与该磁盘相关的一磁盘参数,且该磁盘具有一 启动记录、一文件配置表、以及一文件目录; b.产生一磁盘序号; c.根据该磁盘参数,以该逻辑运算单元取得该文件配置表的一扇区数; d.以该逻辑运算单元将该文件配置表的扇区数、该磁盘序号写入该启动 记录中的相应位置;以及 e.清除该文件配置表和一文件目录的内容。
9: 如权利要求8所述格式化磁盘的方法,其特征在于,该步骤a是以该 逻辑运算单元调用BIOS中断INT 13h取得该磁盘参数。
10: 如权利要求8所述格式化磁盘的方法,其特征在于,该磁盘参数包 括有该磁盘的一总扇区数、一启动记录位置,一该磁盘的类型、以及一该磁 盘的编号。
11: 如权利要求8所述格式化磁盘的方法,其特征在于,该磁盘序号是 以随机(Random)的方式所产生的。
12: 如权利要求8所述格式化磁盘的方法,其特征在于,该步骤e是将 该文件配置表和该文件目录的内容清为零。
13: 如权利要求8所述格式化磁盘的方法,其特征在于,该磁盘为一软 式磁盘。

说明书


格式化磁盘的方法

    本发明涉及一种格式化磁盘的方法,应用于磁盘的格式化操作。

    磁盘(如:硬式磁盘、软式磁片)为电脑的周边设备之一,属于记录媒体的一种,用以存储操作系统、应用程序、数字数据等;不论是硬式磁盘或是软式磁片在使用前都必须先经过“启始”,这个启始的过程就称为格式化(Formatting),目前在DOS和Windows环境下,磁盘的格式化方式可由微软公司提供的“format”指令来进行,通过“format”指令把磁盘分成许多个扇区(Sector),以及由扇区所合成的磁轨(Track);再分别对扇区与磁轨予以编号,并将与扇区、磁轨相关的数据写入预先建立的文件配置表(FAT,FileAllocation Table)与文件目录(File Directory)中,请参阅图1,为一磁盘分割区(Partition)10结构示意图,主要包括有一启动记录11、一第一文件配置表12、一第二文件配置表13、一文件目录14、以及一数据记录区15,其中文件目录是由多个文件目录项141所组成,用以提供与存储于数据记录区15内的数据相关的信息(如:文件名称、附加文件名、时间标示…等等)。但是使用“format”指令格式化磁盘是需要很长时间地,以一容量为3G的硬式磁盘为例,对其进行格式化所需的时间是20分钟,虽然微软公司也有提供快速格式指令-“format/q”,但是它也只能在磁盘不需要完全格式化(在之前已有做过格式化)的情况下才能使用,而且当磁盘有下列情况时也不能进行快速格式化的工作:1.磁盘经低级格式化(Low level format)后。2.磁盘被重新分割(Partitioning)。3.磁盘中某区域区(Sector)受损。

    所以,以微软公司所提供的“format”指令对一磁盘作格式化时存有花费时间耗时的问题;以及在以“format/q”指令对磁盘进行快速格式化时,存在有磁盘本身的格式状态的限制(如:磁盘已作低级格式化、或分割已被重新分割…等),也就是说“format/q”指令并不是适用任何的磁盘,仅能对一已经格式化,和未存有受损扇区的磁盘作快速格式化的程序。

    本发明的目的在于提供一种能对磁盘(或磁盘分割区)快速格式化的方法,同时更可在磁盘经低级格式化后、重新分割后、以及磁盘中某区扇区受损的情况发生时,仍可对磁盘进行各格式化。

    本发明的目的是这样实现的,即提供一种格式化磁盘的方法,应用于一具有一启动记录、一文件配置表、以及一文件目录的磁盘分割区的格式化操作,用以节省格式化的时间,其步骤包括:

    a.以一逻辑运算单元取得与该磁盘分割区相关的一磁盘参数;

    b.产生一磁盘序号;

    c.根据该磁盘参数,以该逻辑运算单元取得该文件配置表的一扇区数;

    d.以该逻辑运算单元将该文件配置表的扇区数、该磁盘序号写入该启动记录中的相应位置;以及

    e.清除该文件配置表和一文件目录的内容。

    本发明还提供一种格式化磁盘的方法,其步骤包括:

    a.以一逻辑运算单元取得与该磁盘相关的一磁盘参数,且该磁盘具有一启动记录、一文件配置表、以及一文件目录;

    b.产生一磁盘序号;

    c.根据该磁盘参数,以该逻辑运算单元取得该文件配置表的一扇区数;

    d.以该逻辑运算单元将该文件配置表的扇区数、该磁盘序号写入该启动记录中的相应位置;以及

    e.清除该文件配置表和一文件目录的内容。

    本发明的技术主要是由BIOS中断的INT 13h读取磁盘格式化所需要的磁盘参数,包括有:磁盘(或磁盘分割区)的总扇区数,启动记录的位置,磁盘(或磁盘分割区)类型及磁盘的编号,以由一逻辑运算单元重新规划磁盘的扇区,并将规划后的结果写入原磁盘(或磁盘分割区)的启动记录内相应的位置。首先观察一磁盘的启动记录的结构,是分为五部分,如下:

    1.Jump Instructon  (占用3个位组)

    2.OEN Name         (占用8个位组)

    3.DPB              (FAT16与FAT32有一定的差别)

    4.Bootstrap code   (为一段启动程序,以可以使磁盘于格式化后,再

                       复制I0.dos及command.com两文件后能启动,相当

                       于执行format/s的效果)

    5.以“55aa”结束在以上的结构中,磁盘参数块(DPB,Disc Properties Block)于FAT16与FAT32系统中的结构是不同的,而其他几部分基本上均为固定不变的,请参阅表一和表二,分别列出FAT16与FAT32系统的磁盘参数块的结构,所以本发明的技术重点也就是磁盘参数块中各项内容的计算,由表一和表二中可看出,在FAT16和FAT32系统中磁盘参数块有较大差别,如:在FAT16系统的参数块结构中,文件目录项的最大值为0x0002,但在FAT32系统的参数块结构中,文件目录项的最大值则为0。于是在通过BIOS中断的INT 13h读取磁盘格式化所需要的磁盘参数后,由公式(1)或公式(2)以逻辑运算单元计算出每个文件配置表的扇区数(sfat),写入启动记录的相应位置内,并将文件配置表和文件目录的内容清为零,并在每文件配置表(FAT)的起始部分写入medianumber,于是便完成磁盘(或磁盘分割区)格式化的全部程序。再此值得注意的是FAT32系统的磁盘有三个启动记录,第一个包括DPB与FAT16的启动记录近似,第二启动记录中记录有该磁盘分割区Free Space的大小,以簇(Cluster)为单位,其计算公式为Free Space=(stotal-2×sfat-0x20)/8-1,第三个启动记录属于Bootstrap code,不会影响计算结果。sfat=(stotal-0x21)/(1+s×0x100)+1    (1)sfat=(stotal-0X23)/(1+8×0x080)+1    (2)表一、磁盘参数块的位置在磁盘分割区的第一扇区的0B字元处,FAT16的DPB结构。位置                 内容0B-0C每个扇区内的字元数(此处为0x0002,即512)0D每个簇内的扇区数(个数由分割区在大小决定)0E-0F保留扇区(0x0100)10FAT的个数(0x02)11-12文件目录项的最大值(此处为0x0002)13-14扇区总数(当大于65535个时此处为0)15媒体描述符(0xf8)16-17每个FAT的扇区数(由公式(1)计算)18-19每个磁轨的扇区数1A-1B磁头数1C-1D隐藏扇区数(不影响结果)20-2313-14字元处为0时的磁总数24物理驱动器号(第一块0x80,第二块为0x81…)25保留26扩展引导记录的特征字元(为0x29)27-2A磁磁盘序号(随机产生)2B-35标签(共11个字元)36-3D文件系统类型(即FAT 16)

    表二、磁盘参数块的位置在磁盘分割区的第一扇区的0B字元处,FAT32的DPB结构。位置                 内容0B-OC每个扇区内的字元数(此处为0x0002,即512)0D每个簇内的扇区数(个数由分割区大小决定)0E-0F保留扇区(0x0100)10FAT的个数(0x02)11-12文件目录项的最大值(此处为0)13-14扇区总数(此处为0)15媒体描述符(为0xf8)16-17每个FAT的扇区数(此处为0)18-19每个磁轨的扇区数1A-1B磁头数1C-1F隐藏扇区数(不影响结果)20-2313-14字元处为0时的扇区总数24-27扇区总数(由公式(2)计算)28-29File System Ver(major)(为0即可)2A-2BFile System Ver(minor)(为0即可)2C-2D文件目录头簇号(为0x02000)2E-2F文件目录头簇号的高位元30-31FSINFO Sector number(若无,则为0xffff)32-33Backup Boot Sector(若无,则为0xffff)34-3F保留40物理驱动器号(第一块为0x80,第二块为0x81...)41保留42扩展引导记录的特征字元(为0x29)43-46磁盘序号(随机产生)47-51标签(共11个字元)52-59文件系统类型(即FAT32)

    下面结合附图,详细说明本发明的实施例,其中:

    图1为磁盘分割区结构示意图;

    图2为在FAT16中分割区大小与每簇所含区数的对应关系;

    图3为本发明格式化磁盘的处理流程图。

    本发明主要是通过BIOS中断的INT 13h来进行磁盘的格式化工作,所以为了有利于下面的说明,首先就将本发明所使用的INT 13h中断的代码02h、03h、08h的功能,以及所使用的寄存器、相关的程序函数说明如下:

    (1)功能02h:读取指定数目的磁盘扇区

    使用的寄存器:AH      02h(cmd)

                  AL      要传送的扇区数(nsectd)

                  ES:BX  指向用户磁盘缓冲区的指针(Buffer)

                  CH      磁轨数(Track)

                  CL      扇区数(Sector)

                  DH      磁头数(Head)

                  DL      驱动器号(Drive)

    在执行后将需要的扇区传入存储区中。其对应的Borland C++语言的函数为:biosdisk(0x02,int drive,int head,int track,sector,int nsects,void×buffer);

    (2)功能03h:将指定的存储区域写入设定的磁盘中

    使用的寄存器:AH    03h(cmd)

                  AL    要传送的扇区数(nsectd)

                  ES:BX  指向用户磁盘缓冲区的指针(Buffer)

                  CH      磁轨数(Track)

                  CL      扇区数(Sector)

                  DH      磁头数(Head)

                  DL      驱动器号(Drive)

    其对应的Borland C++语言的函数为:biosdisk(0x03,int drive,int head,int track,sector,int nsects,void×buffer);

    (3)功能08h:返回指定磁盘驱动器的有关信息

    使用的寄存器:AH      08h

                  DL      驱动器号

    返回寄存器:  CL(低6位)每磁轨的扇区数

                  DH      磁头数

    其对应的Blorand C++语言的函数为:

    union REGS inreg,outreg;

    unsigned f,g;

    inreg.h.ah=8;

    inreg.h.al=0x80;【注:磁盘号0x80表示第一块磁盘;0x81表示第二块磁盘,以此类推】

    int86(0x13,&inreg,&outreg);

    f=(outreg.h.cl&63);

    g=ooutreg.h.dh+1;

    请参阅图3,为本发明所揭露的技术,其进行磁盘(或磁盘分割区)的格式化的处理步骤依序如下:

    步骤101,以一逻辑运算单元由INT 13h中断功能02h获得格式化所需要的磁盘参数,包括有一磁盘(或磁盘分割区)的总扇区数,一启动记录的位置,一磁盘(或磁盘分割区)的类型、以及一磁盘的编号;

    步骤102,以逻辑运算单元调用BIOS中断NIT 13h的功能08h,获得每磁轨的扇区数(f)及磁头数(g);

    步骤103,随机(Random)产生一磁盘序号(Volume Serial number);

    步骤104,判断执行对象(如:磁盘或磁盘分割区)的文件系统的类型是FAT16还是FAT32,若为FAT16执行步骤105,若为FAT32则执行步骤108;因为FAT16与FAT32的磁盘参数块(DPB,Disc Properties Block)不同,所以需要分别处理;

    步骤105,取得每个簇的扇区数,这是因为文件系统为FAT16时,每个簇中的扇区数会因分割区增大而以2n的幂形式增长,请参阅图2,为分割区大小16与每个簇所含的扇区数17的对应情形,如图中所示,若磁盘容量是在16MB~127MB之间,则每个簇所含的扇区数为4。

    步骤106,根据公式(1),以逻辑运算单元计算文件配置表的扇区数的大小;sfat=(stotal-0x21)/(1+s×0x100)+1     (1)

    其中sfat为FAT的扇区数,stotal为总扇区数,s为每簇的扇区数。而公式(1)的推算过程如下:

    首先,每个扇区有512个字元;启动记录数为1;根目录扇区数为32;sdata为数据区的扇区数。因此磁盘(或磁盘分割区)中的总扇区数为:

    stotal=1+sfat+32+sdata            (1-1)

    又,FAT中每2个字元指向数据区的一个簇,所以有等式:

    sfat×512/2=sdata/s               (1-2)

    于是(1-2)式经重新整理后,可以表示为:

    sdata=sfat×s×256                (1-3)

    然后将公式(1-3)代回公式(1-1),则可得

    stotal=1+sfat+32+sfat×s×256     (1-4)

    最后经整理提出sfat后,即获得

    sfat=(statal-33)/(1+s×256)+1     (1-5)

    在公式(1-5)中,由于sfat为整数型,所以最后加上1,以弥补舍掉的小数部分,于是将公式化(1-5)为十六进制后便得如公式(1)所示的计算式:

    步骤107,以一逻辑运算单元调用BIOS中断INT 13h的功能03h,将步骤106计算所得的扇区的内容,写到启动记录中相应的位置后,并跳至步骤110;

    步骤108,根据公式(2),以逻辑运算单元计算FAT扇区数的大小;

    sfat=(stotal-0x23)/(1+8×0x080)+1    (2)

    其中,sfat为每FAT的扇区数,stotal为总扇区数,s为每簇的扇区数。而公式(2)的算式推算过程如下:

    由于目前所格式化的对象为FAT32,所以每4个字元指向一个簇,每个簇含有8个扇区。每个扇区有512个字元;启动记录数FAT16为3;文件目录的扇区数为32;首先根据前述数据可获得一等式:

    sfat×512g=sdata/8             (2-1)

    经整理后,可另表示为:

    sdata=sfat×8×128             (2-2)

    将公式(2-2)代入公式(1-1),则可得

    stotal=3+sfat+32+sfat×8×128  (2-3)

    提出(2-3)式中的sfat,并重新整理可得:

    sfat=(stotal-35)/(1+8×128)+1  (2-4)

    同样地,在公式(2-4)中,由于sfat为整数型,所以最后加上1是为了补舍掉的小数部分,于是将(2-4)式化为十六进制后便得到公式(2)的计算式。

    步骤110,以公式Free Space=(stotal-2×sfat-0x20)/8-1,计算Free Space的大小;

    步骤110,以逻辑运算单元调用BIOS中断INT 13h的功能03h,将步骤108计算所得的扇区的内容,分别写入三个启动记录的相应位置中;

    步骤111,这次把两个文件配置表和文件目录的内容清为零,供共需清t个扇区,其中t=sfat×2+32,并在每个文件配置表(FAT)的开始写入meadia number,其中FAT16为f8ff;而FAT32为f8ffff0f;以及步骤112,结束格式化。

    现有一2G的硬盘,经过“FDISK”指令重新分割后,分为两个逻辑分割区,分别为C和D,其中,D盘的大小为1.2G,当以上述的处理流程对D盘进行快速格式化时,其处理过程如下:

    (一)以逻辑运算单元调用BIOS中断INT 13h功能02h获取与磁盘分割

        区相关的信息;

        用函数biosdisk(2,0x80,0,0,1,1,buffer)可得到以下数据;

        (1)磁盘分割区的总扇区数:0x259afl

        (2)起始的磁头号:0x01

        (3)起始的柱面号:0x96

        (4)起始的扇区号:0x01

        (5)硬盘序号:08x0(即第一块硬盘)

        (6)FAT类型:0x0b(即FAT32)

    (二)以逻辑运算单元调用BIOS中断INT 13h功能的08h可得到每磁轨

        所含扇区数(f)和磁头数(g)。

        union REGS inreg,outreg;

        unsigned f,g;

        inreg.h.ah=8;

        inreg.h.al=0x80;

        in86(0x13,&inreg,&outreg);

        f=(outreg.h.cl&63);

        g=ooutreg.h.dh+1;

        得到f=0x3F,G=0xF0;

    (三)用函数random( )随机产生磁盘序号

    (四)以逻辑运算单元计算文件配置表的扇区数:

        sfat=(0x259af1-0x21)/(1+8×0x80)+1=0x965

    (五)计算Free Space:

        Free Spage=(0x259af1-2×0x965-0x20)/8-1=0x4b101

    (六)以逻辑运算单元调用BIOS中断INT 13h功能03h将计算得到的启动记录内容(共3个)写到0x01磁头、0x96柱面、0x01扇区处。

    (七)利用循环把2个文件配置表和文件目录的内容清为零,并在每个文

        件配置表起始处写入f8ffff0f(media number)。

    共需清t个扇区,其中t=sfat×2+32=4842

    以上所述仅为本发明的优选实施例,并不限于以上述的硬体的装置实施,举凡任何熟悉此项技术人员在本发明的领域内所做的任何修饰,具有同等功效的,均应含盖于附上的权利要求范围内。

    本发明方法的优点在于:

    1.本发明通过调用BIOS的中断指令进行计算,重新配置磁盘的启动区、文件配置表(FAT)、以及根目录区的所有内容和位置,可节省大量的格式化时间。

    2.本发明适用于FAT16和FAT32两种类型的分割区表。

    3.本发明对于已被低级格式化、重新分割、以及磁盘中某区域受损的无法以传统“format/q”指令格式化的磁盘,仍可对其进行快速格式化。

格式化磁盘的方法.pdf_第1页
第1页 / 共15页
格式化磁盘的方法.pdf_第2页
第2页 / 共15页
格式化磁盘的方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《格式化磁盘的方法.pdf》由会员分享,可在线阅读,更多相关《格式化磁盘的方法.pdf(15页珍藏版)》请在专利查询网上搜索。

一种格式化磁盘的方法,用于磁盘(或磁盘分割区)的格式化操作,可节省格式化时间,本发明是通过调用BIOS的中断指令,取得磁盘(或磁盘分割区)的一总扇区数、一启动记录的位置以及一类型等与磁盘(或磁盘分割区)相关的信息,再根据磁盘(或磁盘分割区)的类型(FAT16或FAT32)以一逻辑运算单元重新规划每个文件配置表的扇区数,然后写入启动记录的相应位置内,并将文件配置表和文件目录和内容清为零,于是就完成磁。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1