保护模式内容太多,一时半会消化不完,慢慢体会清楚了再继续写吧。今天先把读软盘搞清楚——当然是调用 BIOS 中断直接读了。就是 int 013h 中断,即“直接磁盘服务”(Direct Disk Service)。这个中断功能丰富,今天只学 02 号功能,就是“读软盘”。
首先讲清楚软盘的物理结构:软盘,顾名思义就是存储信息的软式磁盘片(Floppy Disk)——因为是塑料做的,当然软。一般一块软盘有一张磁片,磁片两面都涂有磁性材料,这层磁性材料就叫磁层。磁层就是存储信息的介质,因此软盘两面都能存储信息。
电脑通过软盘驱动器(Floppy Disk Drive,简称软驱, FDD)读写软盘。软驱的结构就不管了,这玩意过时了。只要知道软驱读写软盘的时候,软盘高速旋转,软驱通过一个针状的磁性部件接触软盘上的磁层来读写数据就行,这个接触软盘的磁层来读写数据的部件就叫磁头(Magnetic Head)。每一个盘面都要有一个磁头对应,磁头数量和盘面数量是相等的,所以对应软盘的两面,软驱也有两个磁头,分别是读写软盘正面的磁头0(H0)和读写软盘反面的磁头1(H1)。
所谓磁层存储信息,说白了,就是那些磁性材料以特殊方式磁化成不同的状态。软盘存储信息的过程就是磁头把电信号转化为磁信息,再把盘片上的那些磁性材料以特殊方式磁化成一个个磁化单元的过程。实际操作的时候,盘片高速转动,磁头保持在一个位置不动,在磁层上进行磁化操作,信息就被记录在磁层上。磁头会在盘片表面上画出一个与盘片同心的圆形轨迹,这个圆形轨迹就叫磁道(Track)。软盘上的信息就是沿着磁道存放的,如果这个磁道存满了,磁头就会移动到下一个位置,继续形成下一个磁道。相邻磁道之间并不是紧挨着的,因为磁化单元相隔太近时磁性会产生相互影响,同时也为磁头的读写带来困难。所以 3.5 英寸软盘每面盘片上只有80个磁道。
软盘正反两面都各有80个磁道,并且从外往里,从 0 开始编号,即最外边缘为第 0 磁道,最里一道为第 79 磁道。盘片正反两面盘面上处于同一半径圆的两个磁道组成的一个圆柱面叫柱面(Cylinder)。柱面是一个立体概念,磁道是一个平面概念,柱面的数量和任一个盘面的磁道的数量是相等的。盘片最外边缘是第 0 柱面(C0),最里面是第 79 柱面(C79)。
一圈磁道能记录很多信息,按照整个磁道为单位读写的话,数据量太多。因此每个磁道又被等分为 18 个弧段,实际上是一个弧段一个弧段的读写信息,这些弧段就叫扇区(Sector)。每个扇区能存放 512 字节的数据。
总结一下,一张3.5英寸软盘有2个磁头、80个柱面(也就是80个磁道),每个磁道有18个扇区,每个扇区存放512字节的数据。可以算出一张软盘的容量了: 2 * 80 * 18 * 512 = 1474560 字节(Byte) = 1440 千字节(KB) = 1.44 兆字节(MB)。
同时也发现了,只要知道了磁盘的CHS参数(即柱面Cylinder、磁头Head、扇区Sector),就可以确定其容量(容量=柱面数*磁头数*单磁道扇区数*每扇区字节数512)。