The configuration of disk platters, heads, and access arms makes it
possible to position the head over any part of any surface of any
platter in the mass storage device. However, this is not sufficient; to
use this storage capacity, we must have some method of giving addresses
to uniform-sized parts of the available storage.
There is one final aspect to this process that is required.
Consider all the tracks in the many cylinders present in a typical mass
storage device. Because the tracks have varying diameters, their
circumference also varies. Therefore, if storage was addressed only to
the track level, each track would have different amounts of data —
track #0 (being near the center of the platter) might hold 10,827 bytes,
while track #1,258 (near the outside edge of the platter) might hold
15,382 bytes.
The solution is to divide each track into multiple
sectors or blocks of
consistently-sized (often 512 bytes) segments of storage. The result is
that each track contains a set number of sectors.
A side effect of this is that every track contains unused space
— the space between the sectors. Despite the constant number of
sectors in each track, the amount of unused space varies —
relatively little unused space in the inner tracks, and a great deal
more unused space in the outer tracks. In either case, this unused
space is wasted, as data cannot be stored on it.
However, the advantage offsetting this wasted space is that
effectively addressing the storage on a mass storage device is now
possible. In fact, there are two methods of addressing —
geometry-based addressing and block-based addressing.
The term geometry-based addressing refers
to the fact that mass storage devices actually store data at a
specific physical spot on the storage medium. In the case of the
devices being described here, this refers to three specific items that
define a specific point on the device's disk platters:
The following sections describe how a hypothetical address can
describe a specific physical location on the storage medium.
As stated earlier, the cylinder denotes a specific position of
the access arm (and therefore, the read/write heads). By specifying
a particular cylinder, we are eliminating all other cylinders,
reducing our search to only one track for each surface in the mass
storage device.
Table 5-1. Storage Addressing
In Table 5-1, the first part of a
geometry-based address has been filled in. Two more components to
this address — the head and sector — remain
undefined.
Although in the strictest sense we are selecting a particular
disk platter, because each surface has a read/write head dedicated
to it, it is easier to think in terms of interacting with a specific
head. In fact, the device's underlying electronics actually select
one head and — deselecting the rest — only interact with
the selected head for the duration of the I/O operation. All other
tracks that make up the current cylinder have now been
eliminated.
Table 5-2. Storage Addressing
In Table 5-2, the first two parts of a
geometry-based address have been filled in. One final component to
this address — the sector — remains undefined.
By specifying a particular sector, we have completed the
addressing, and have uniquely identified the desired block of
data.
Cylinder | Head | Sector |
---|
1014 | 2 | 12 |
Table 5-3. Storage Addressing
In Table 5-3, the complete
geometry-based address has been filled in. This address identifies
the location of one specific block out of all the other blocks on
this device.
While geometry-based addressing is straightforward, there is an
area of ambiguity that can cause problems. The ambiguity is in
numbering the cylinders, heads, and sectors.
It is true that each geometry-based address uniquely identifies
one specific data block, but that only applies if the numbering
scheme for the cylinders, heads, and sectors is not changed. If the
numbering scheme changes (such as when the hardware/software
interacting with the storage device changes), then the mapping
between geometry-based addresses and their corresponding data blocks
can change, making it impossible to access the desired data.
Because of this potential for ambiguity, a different approach to
addressing was developed. The next section describes it in more
detail.
Block-based addressing is much more
straightforward than geometry-based addressing. With block-based
addressing, every data block is given a unique number. This number is
passed from the computer to the mass storage device, which then
internally performs the conversion to the geometry-based address
required by the device's control circuitry.
Because the conversion to a geometry-based address is always done
by the device itself, it is always consistent, eliminating the problem
inherent with giving the device geometry-based addressing.