Skip to content

Instantly share code, notes, and snippets.

@brogand93
Last active January 2, 2016 17:39
Show Gist options
  • Select an option

  • Save brogand93/c250573ca0464bd8400b to your computer and use it in GitHub Desktop.

Select an option

Save brogand93/c250573ca0464bd8400b to your computer and use it in GitHub Desktop.

Disks Questions

Name Data
Rotation Speed 10,000 RPM
surfaces 8
sector size 512 bytes
Sectors/tracks 750
Tracks/surface 10,000
Capacity 307.2 billion
Average Seek t 4ms
One track seek 0.2 ms
Maximum seek 10 ms
What is the storage capacity of this disk in bytes?

Formula = capacity = surfaces * tracks per surface * sectors per track * bytes per sector

8 * 750 * 512 * 100,000 = 307.2 billion
What is its maximum transfer rate (in bytes/s) for a single track?

Formula = track transfer rate = (tracks/second) * (bytes/track)

Formula = track transfer rate = (RPM/60) * sectors per track * (bytes/sector)

(10,000 / 60) * 750 * 512 = 64 million bytes / s
What is the maximum transfer rate (in bytes/s) for a single cylinder?

Thanks to head skewing it's the same as for single track.

Formula = track transfer rate = (tracks/second) * (bytes/track)

What is the disk's rotational latency?

Rotational latency is the average time needed to rotate

Formula = time for one revolution / 2 = (60/RPM) / 2

(60 / 10,000) / 2 = 0.003
What is the transfer time for 1 sector?

Formula = time for one sector to pass r/w heads = 60 / (sectors/track)

60 / (10,000 * 750) = 0.00008s
How long does it take to read/write 1 sector?

Formula = seek time * rotational latency * transfer time

0.0004 * 0.003 * 0.00008 = 0.007008s
What percentage of that time is spent doing the actual read/write?

Formula = 100* (transfer time / total time)

100 * (0.00008/0.007008) = 0.114%
How much cylinder skew (in sectors) is required?

How many cylinders go by in one track seek time?

Formula = one track seek time * RPM * sectors per track

(0.00002 * 10000 * 750) / 60 = 25
What is the maximum transfer rate (in bytes/s) across cylinders?

Formula = bytes per cylinder / (time to read one cylinder + time to move to next cylinder)

bytes per cylinder = bytes per track * tracks per cylinder

750 * 512 * 8 = 3,072,000 bts/s 

Time to read track = 60 / RPM

60 / 10,000 = 0.006

Time to read cylinder = time to read track * tracks per cylinder

0.006 * 8 = 0.048s

Time to move to next cylinder = 0.0002

So maximum transfer rate:

3,072,000 / (0.0002 * 0.048) = 63.7 million bytes/s
What would be the transfer rate (in bytes/s) without cylinder skew?

Waiting for extra revolution each track change.

Formula = bytes per cylinder / (time to read one cylinder + time for 1 revolution)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment