Background:
Back in the 1970's, one common disk drive had 20 recording surfaces,
200 cylinders, 24 sectors per track, and 512 bytes per sector. The
The disk packs were removable from the drive; each pack had 11 platters
14 inches in diameter (the topmost and bottommost surfaces were not used
for data). The disk drive rotated at 20 revolutions per second, and took
about 30 seconds to start spinning or spin up and over a minute to
spin down. It took about 0.1 second to seek from the outermost
cylinder to the innermost cylinder, and the seek operation was performed
at constant acceleration (so the relationship d = 1/2at2
applies, where d is the distance traveled, a is the acceleration, and t
is the time taken to travel that distance). The disk drive itself was
about the size of a washing machine.
Part a:
What is the maximum, minimum and expected rotational latency for this
disk.
Part b:
What is the maximum, minimum and expected head positioning latency for
this disk. Assume that the initial and final cylinders are selected
uniformly from among the available cylinders.
Part c:
What is the time taken to read or write one sector?
Part d:
What is the expected time per I/O operation, assuming uniform random
sequences of disk addresses.
Part d:
What is the storage capacity of this disk?
Background:
The UNIX write(d,b,s) service writes s bytes from the buffer at address b
to the file described by the descriptor d. The current file position is
incremented by s. When a file is opened, the position is initially zero.
lseek(d,p,0) sets the position to p. The read(d,b,s) service is identical
to write, except that the data movement is in the opposite direction, from
the file to the buffer.
Assume the disk drive from problem 1 (in fact, this disk drive was common
on early UNIX systems). Assume the user opens file X for input or output,
creates some buffer B, and then executes this code:
lseek(X,10000,0);
write(X,B,1);
The user may then do anything else, but you don't know what the user does!
The Problem:
Taking into account everything you know about the UNIX file system, describe
all disk I/O that would result from these two lines of code! Do not describe
disk I/O that was done when the file was opened, nor describe disk I/O that
will be done as a result of later computations.