15

I was always wondering how a hard drive finds the first bit of data.

When a hard drive spins up, whatever it reads must be a circular stream of data until the reading head moves to a different position.

But in such a circular stream, how does the drive know where the first bit and the last bit lie, so that it can pass on the data in the right order?

uzumaki
  • 300

5 Answers5

18

Data is not written as an arbitrary stream of ones and zeros. It is written in sectors. Each sector has the payload of user data, and a header. The header contains error correcting codes, as well as a special sync field that identifies the start of the sector, and the sector number so the drive can know when it has found the start of a sector, and which sector it is.

psusi
  • 8,122
7

Psusi is correct (the data on the disk is structured, and different parts of the computer use different parts of that structure) but doesn't really get at your question.

The drive doesn't really "know" anything. It has low level electronics that can read markers on the disk (generally written at the factory, or by the drive head itself), read data blocks from the disk, or write data blocks to the disk, or tell if a particular spot on the disk is bad or damaged, or that it should move to a particular location on the disk. That's about all it "knows". The reading head doesn't decide to move someplace else by itself, something higher up in the machine tells it to...

4

It reads it from the disk.

Data on the disk is not only structured (as @psusi says), but also encoded. The encoding ensures that the recorded data cannot be confused for the position markers in the sector headings, so the circular stream can be read until the target position marker is found.

As I understand it, modern hard drives don't quite do that; they read the entire circle into a buffer, keeping track of where each sector is, and use the buffers to send back requested data.

UPDATE:

The magnetic media is a material which has a magnetic field with two key properties: 1) it never changes on its own, and 2) the recording device can change the orientation of the field at any point on the surface. When reading the media, the sensor detects where the field is oriented toward the sensor and where the field is oriented away from the sensor. As the sensor moves across the surface it detects the timings of these polarity transitions; the first layer of decoding is translating these timings into bit values. Due to physically necessary uncertainties in this process, the encoding must not require long stretches of the same polarity; that is, it must be a Run-length limited coding (RLL).

The particulars of hard drive designs are generally trade secrets, but there are essentially two ways to ensure that sector markers never appear in sector content:

  1. Design an RLL that allows special values which will never result from encoding content data. These special values could be used not only for marking sector boundaries but also for error correction or any other secondary purpose.

  2. Use a second layer of encoding that ensures the marker values only appear at the markers. This is a bit like URL encoding to allow special characters to be "hidden" in URLs, but with an additional constraint equivalent to limiting how many characters can be added, so it ends up more like base64 encoding.

So, the read head moves across the surface detecting magnetic polarity changes, the timings of those changes are used to determine the corresponding sequence of bit values (possibly including some exceptional values that don't represent stored data), and that sequence is used to determine which sectors are being read and the content of those sectors. As the content of sectors is determined, the data may be stored in a solid-state buffer and/or stored in a RAM buffer and/or sent back to fulfill a request.

ShadSterling
  • 1,576
1

The answer you are looking for has two parts:

1) A hardware controller

2) A file system

Like you said, in a HDD (as opposed to other technologies like SSDs) the actual data is written to round metal plates as concentric circular rings holding a patterned magnetic field. Above the platters that hold this data is the write head which moves around to read and write data, a lot like a vinyl record player. The platters it moves over are attached to an electric motor which controls their rotation.

A hardware controller acts as an interface between the operating system and the hard drive. The controller can read the position of the write head as well as the rotation of the platters and uses this information to decide how to position the head and platters for reading and writing. It translates read and write requests from the operating system into control signals that move the write head and rotate the platters, as well as converts the parallel data coming in from the operating system into a single serial data line. It also splits up this serial line and decides what physical location, or sector, to put each piece in and records this information in a way specified by the file system.

The file system is a specification of how and where to store data. The computer's operating system knows how to interpret this file system and uses this knowledge to adequately communicate with the hardware controller, in this case breaking down the circular rings of data into usable segments called sectors and telling the file system where these sectors are physically located. The file system gives each sector an address, which is just a unique number, and this address gets translated by the hardware controller into a specific platter rotation and read head position to begin reading or writing.

For more information, the following sections in these Wikipedia articles are quite helpful:

See Intro and section 3.1 "Space management" here: https://en.wikipedia.org/wiki/File_system

See section 2.1 "Magnetic Recording" here: https://en.wikipedia.org/wiki/Hard_disk_drive#Magnetic_recording

Salvatore
  • 111
0

In addition to the other answers, hard disks certainly used to (and may still do) have one platter ("head" in cylinder/head/sector terms) which is reserved for calibration/positioning data, not used at all for user data storage.