目录 上一页 下一页 下一章

第8章 文件句柄功能与磁盘 -229-

  我们说这一类磁盘不"正常",最常见的现象就是它们不能进行常规的DISKCOPY。原因在于标准的磁盘复制软件(DISKCOPY、PCTOOLS)无法正确拷贝这些特殊容量的扇区。这种磁盘完全是人为的用一些特殊的方法格式化而成,常用于装载一些商品软件。习惯上我们把这类磁盘称为"加密盘",加密是计算机技术中一个很重要也很有趣的专项内容,大家可以参阅其它书籍自行研究这门学问,在本书中不做深入讨论。
  不同的磁盘之所以有不同的容量原因在于它们具有不同的磁道数和扇区数。值得注意的是每个扇区的容量都是512个字节,连硬盘也不例外。举360K倍密磁盘为例,它的一个面上划分了40条磁道,每条磁道上分成9个扇区,所以两个面共有扇区数为2′40′9=720个,总共可以容纳512′720=368640个字节的数据,恰好是368640/1024=360K;而1.44M的3寸盘的一个面上有80条磁道,每条磁道划分了18个扇区,总容量为512′2′80′18=1474560个字节,恰为1440K。
  说到这里细心的读者可能马上会发现问题,当使用FORMAT程序格式化一片360K的磁盘后,程序报告磁盘的总容量为362496个字节,比实际容量少了6144个字节,合12个扇区;而格式化1.44M磁盘后程序报告的总容量为1457664个字节,比实际容量少33个扇区。这看起来好象有些怪异,实际上FORMAT程序"遗失"的这些扇区在DOS的文件管理环节中占有重要的地位,它们不能由用户保存数据用,而是由操作系统专用,保存有关文件的重要的特征信息。这些扇区集中于磁盘的"零"磁道上,我们常称其为"系统保留扇区"。
  磁盘上的任一个扇区均可以用"面"、"磁道"、"扇区"三个参数进行定位,我们现在使用的软盘都是双面存储的,早期的单面磁盘已经淘汰。驱动器都有两个磁头,对应磁盘的两个面儿,这两个磁头的编号为0和1,在编程时我们可以通过指定磁头的方式存取任意一个面儿上的某个扇区,具体说究竟哪个磁头是0哪个是1这倒无关紧要。
  磁道的编号是由0开始,360K磁盘磁道编号由0至39,720K、1.2M、1.44M磁盘的磁道编号为0-79,共80条。编号为0的磁道在磁盘的最外一圈,由外向内顺次排列。这里又有一个微妙的问题,不同的磁道周长不一样,而其容量却都一样,每条磁道包含的扇区数相同,这样看来越靠近内圈(磁道编号越大)的磁道其数据存储就越"紧凑"。
  我们知道"数据"落实到磁盘上都是一些磁性信号,这些磁信号相邻的越"紧",在存取时相互干扰就越严重。因此越靠近内圈的磁道数据的存取就越困难,所以磁道不能过于靠近磁盘内圈。
  一片磁盘的永久标签上都印有48TPI、96TPI这样的文字,其含义是每一英寸直径上所能容纳的磁道数(Track Per Inch)。360K磁盘每一英寸直径上可以容纳48条磁道,磁盘上开的磁头读写窗口长度也比英寸要大,所以原则上这片磁盘可以格式化为48条磁道,不过内圈的8条磁道并没有使用,原因就是笔者前面所说的那样,内圈的磁道读写不很可靠。
  每一条磁道的扇区编号是由1开始的,在编程时应指明所存取的扇区位于磁盘的哪个面儿(即磁头号0、1),哪条磁道(0-39)的哪个(或哪几个)扇区。
  为方便编程,PC系统为程序设计者提供了一组功能调用,即"INT 13H"中断。其中断服务程序位于BIOS内,并非由DOS提供。这个中断提供了许多有关磁盘的服务,最常用的是前6项,即磁盘复位、取驱动器状态、扇区读写、校验与格式化磁道。本书只把最常用的几项功能作一些简要介绍,使大家对软硬盘的逻辑结构和编程控制方法有初步了解,而更深入的内容需参考其它相关书籍。先来讨论驱动器复位和扇区读写这三项功能(见表8-4):

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章