分享
 
 
 

磁盘快速格式化的理论和实践

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

磁盘的格式化可以分为低级格式化和高级格式化。低级格式化是针对硬盘而言的,它能将硬盘中的数据全部清除,包括硬盘的主引导记录、DOS引导记录和分区表信息,当然也能扫除将磁盘作为藏身之处的一切病毒。较老版本的CMOS设置中包括了硬盘低级格式化的程序,可以在CMOS中对硬盘低格,也可以使用一些低格软件如DM等完成低格操作。磁盘的高级格式化有几种形式,快速格式化就是其中的一种,与DOS一起发表的基本FORMAT程序允许用户对磁盘快速格式化(可选参数/Q)。在介绍快速格式化之前,先对磁盘的结构作一个简单的介绍,再将快速格式化和一般的高级格式化作一个比较。

一个被成功高级格式化的硬盘可以分成以下几个部分:主引导记录和分区表信息、DOS引导记录、文件分配表(FAT)信息、根目录(ROOT)信息和数据区。主引导记录和分区表信息存放在硬盘的第一个扇区中,主引导记录可以根据操作系统的不同而任意编写,基于这一特点,实现多操作系统并存就不是一件困难的事情。分区表是硬盘第一个扇区中最后64个字节,对应地分别以“80H”和“55AAH”为起始和结束标志。它记录着硬盘逻辑区的个数、起始和结束的扇区号等信息,其中的“80H”和“55AAH”被称为是硬盘的两个关键代码,丢失后硬盘将不会自举。DOS引导记录保存了对于引导系统的三个文件的描述,它也包括一个分区表信息。文件分配表和根目录信息记录着文件的名字、属性等以及存放的地址,在文件定位时,结合分配表信息和根目录信息,就可以很方便地找到文件。数据区是硬盘中占用扇区最多的一个部分,用于保存文件数据。

再来看看文件删除的过程:修改文件分配表对应信息、将文件名的第一个字符改掉以及释放磁盘空间。必须注意,存放在数据区的文件内容并没有被删除,因此删除的文件可以被恢复。对比地看,磁盘的高级格式化主要做了以下工作:对磁盘划分磁道和扇区、向主引导区和DOS引导区写入引导信息、清空文件分配表和根目录区并扫描磁道。然而快速格式化却不同,它没有进行磁道扫描,因此,快速格式化和完全删除磁盘文件在效果上是相同的。

与硬盘的结构相比,软盘中没有主引导区。高级格式化对软盘同样要做四件事情,不过就FORMAT 命令而言,在执行操作之前,会将文件分配表、根目录区的内容以映象形式保存到磁盘最后几个扇区中,这样一来,软盘数据又能被“反格式化”操作恢复回来(只要数据区内容没有被覆盖掉)。

鉴于1.44MB 3.5英寸软盘FAT区和根目录区所占扇区数是不变的(FAT1: Sector 1-9; FAT2: Sector 10-18; ROOT: Sector 19-32),我们可以上机实践一下,编写一个快速格式化程序,实现对1.44MB 3.5英寸软盘的快速格式化。由于程序较简单,没有保存UNFORMAT信息,所以格式化完成后数据无法恢复,因此实验时应特别小心。我们可以利用C语言库函数abswrite来实现快速格式化,因为它是被定义在dos.h头文件中的,因此程序开始时应写上:

#include <dos.h>

以下是此函数的原形,在此写出便于参考学习:

int abswrite (int drive, int nsects, int lsect, void *buffer);

与之对应的absread函数原形:

int absread (int drive, int nsects, int lsect, void *buffer);

程序设计思路:因为快速格式化是将FAT区和ROOT区清空,那么我们可以利用abswrite函数向这两个区域写零,达到数据清空的目的。程序代码如下:

#include <dos.h>

#include <stdio.h>

unsigned char buff[512];

main()

{

int i;char c;

printf (“\nQuick Format 1.44MB\n”);

printf (“Program by ChenQingyang.\n”);

printf (“ALL DATA IN THE FLOPPY DISK WILL BE LOST!!\n”);

printf (“\nInsert a diskette for drive A:\n”);

printf (“and press ENTER when ready. . .”);c=getchar();

printf (“\n\nCleaning FAT area. . .”);

buff[0]=0xf0;buff[1]=buff[2]=0xff;

for (i=3;i<512;i++) buff[i]=0;

abswrite(0,1,1,buff);

abswrite(0,1,10,buff);

for (i=0;i<512;i++) buff[i]=0;

for (i=2;i<10;i++) abswrite (0,1,i,buff);

for (i=11;i<19;i++) abswrite (0,1,i,buff);

printf (“\nCleaning ROOT area. . .”);

for (i=19;i<33;i++) abswrite (0,1,i,buff);

printf (“\n\nQuickFormat Completed!\n”);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有