For many of these problems there were different assumptions that could be made. Those who clearly stated their assumptions and showed their work did better than those who did neither.
disk capacity = surface capacity * 14 = 7.168x10^{9} = 6.84Gb
If a cylinder can be read at the same time, the throughput is 14 times higher which is 236.98 Mb/s.
The average case seek time = 0.8ms + (5999/600/3) * 1ms + 0.8ms = 4.37ms.
Worst case = 9.9ms (seek) + 5.77ms (rotational) + 0.23ms = 15.9ms
Best case = 0.23ms
Average = 4.37ms (seek) + 5.77ms/2 (rotational) + 0.23ms = 7.49ms
Worst case = 9.9ms + 5.77ms + 0.92ms = 16.59ms
Best case = 0.92ms
Average case = 4.37ms + 5.77ms/2 + 0.92ms = 8.18ms
Worst case = 15.9ms + 5.77ms = 21.7ms
Best case = 0.23ms + 5.77ms = 6.0ms
Average case = 7.49ms + 5.77ms = 13.3ms
Worst case = 21.7ms + 5.77ms = 27.47ms
Best case = 6.0ms + 5.77ms = 11.77ms
Average case = 13.3ms + 5.77ms = 19.07ms
Disk# |
Sector 0 Value |
5 |
0010100101 |
6 |
0001101011 |
7 |
1111000101 |
Next, we repair disk 7 using disks 1,3, and 4.
The proposed change would fix the problem of X_{R} silently decaying. Even if the overhead of 1 bit per sector to know which copy to read first is too much, we can just alternatively read left and right copies and figure that the likelihood of always reading the same copy of a given sector is quite low. The proposed change does not introduce any correctness problems although it might hurt performance. If the two copies of each sector are not stored near each other on disk (which is a good idea for fault tolerance) then reading a single block may require moving the disk arm back and forth rather than reading a bunch of contiguous sectors which is faster. Note that alternating the order of writing sectors would cause problems. If the system crashed inbetween writing the two copies of the sector so that both were valid but only one was the new copy, we'd have no idea which was the new copy.