Sample Questions - Computing Science

CMPT 300
Introduction to Operating
IO Sample Questions
Dual-Bus Architecture
Q: Slide 20 shows one way of having memory-mapped I/O even in
the presence of separate buses for memory and 1/0 devices,
namely, to first try the memory bus and if that fails try the 1/0 bus. A
clever computer science student has thought of an improvement on
this idea: try both in parallel, to speed up the process of accessing
I/O devices. What do you think of this idea?
A: It is not a good idea. The memory bus is surely faster than the
I/O bus, otherwise why bother with it? Consider what happens with
a normal memory request. The memory bus finishes first, but the
I/O bus is still busy. If the CPU waits until the I/O bus finishes, it has
reduced memory performance to that of the I/O bus. If it just tries
the memory bus for the second reference, it will fail if this one is an
I/O device reference. If there were some way to instantaneously
abort the previous I/O bus reference to try the second one, the
improvement might work, but there is never such an option. All in
all, it is a bad idea.
Max Interrupt Rate
 Q: Suppose that a computer can read or write a
memory word in 10 nsec. Also suppose that when
an interrupt occurs, all 32 CPU registers, plus the
program counter and PSW are pushed onto the
stack. What is the maximum number of interrupts
per second this machine can process?
 A: An interrupt requires pushing 34 words onto the
stack. Returning from the interrupt requires
fetching 34 words from the stack. This overhead
alone is 680 nsec. Thus the maximum number of
interrupts per second is no more than about 1.47
million, assuming no actual work is done for each
 Q: A typical printed page of text contains 50 line of 80
characters each. Imagine that a certain printer can print 6
pages per minute and that the time to write a character to the
printer's output register is so short it can be ignored. Does it
make sense to run this printer using interrupt-driven I/O if
each character printed requires an interrupt that takes 50
μsec all-in to service?
 A: The printer prints 50 × 80 × 6 = 24,000 characters/min,
which is 400 characters/sec. Each character uses 50 μsec of
CPU time for the interrupt, so collectively in each second the
interrupt overhead is 20 msec. Using interrupt-driven I/O, the
remaining 980 msec of time is available for other work. In
other words, the interrupt overhead costs only 2% of the
CPU, which will hardly affect the running program at all.
Interleaving & Skew
 Q: If a disk has double interleaving, does it
also need cylinder skew in order to avoid
missing data when making a track-to-track
seek? Discuss your answer.
 A: Maybe yes and maybe no. If the head
can make a track-to-track seek in fewer
than two sector times, than no additional
cylinder skew is needed. If it cannot, then
additional cylinder skew is needed to
avoid missing a sector after a seek.
 Q: None of the disk-scheduling disciplines,
except FCFS, is truly fair (starvation may
 a. Explain why this assertion is true.
 b. Describe a way to modify algorithms such
as SSTF to ensure fairness.
 c. Explain why fairness is an important goal in
a time-sharing system.
 d. Give examples of circumstances in which it
is important that the operating system be
unfair in serving I/O requests.
Fairness Answer
 A: a. New requests for the track over which the head
currently resides can theoretically arrive as quickly as
these requests are being serviced.
 b. All requests older than some predetermined age
could be forced to the top of the queue, and an
associated bit for each could be set to indicate that no
new request could be moved ahead of these requests.
 c. To prevent unusually long response times.
 d. Paging and swapping should take priority over user
requests. It may be desirable for kernel-initiated I/O, to
take precedence over user-initiated I/O. If the kernel
supports real-time process priorities, the I/O requests
of those processes should be favored.
Disk Scheduling
 Q: Suppose that a disk drive has 5000
cylinders, numbered 0 to 4999. The drive is
currently serving a request at cylinder 143,
and the previous request was at cylinder
125. The queue of pending requests, in FIFO
order, is 86, 1470, 913, 1774, 948, 1509,
1022, 1750, 130 Starting from the current
head position, what is the total distance (in
cylinders) that the disk arm moves to satisfy
all the pending requests, for each of the
following disk-scheduling algorithms?
 a. FCFS b. SSTF c. SCAN d. C-SCAN
Disk Scheduling Answer
 Answer: a. The FCFS schedule is 143, 86,
1470, 913, 1774, 948, 1509, 1022, 1750,
130. The total seek distance is 7081.
 b. The SSTF schedule is 143, 130, 86, 913,
948, 1022, 1470, 1509, 1750, 1774. The total
seek distance is 1745.
 c. The SCAN schedule is 143, 913, 948,
1022, 1470, 1509, 1750, 1774, 4999, 130,
86. The total seek distance is 9769.
 d. The C-SCAN schedule is 143, 913, 948,
1022, 1470, 1509, 1750, 1774, 4999, 86,
130. The total seek distance is 9813.
Disk Size I
 Consider a disk with
Disk Arm
 Cylinders 1024
 Platters (heads)16
 Sectors per track 63
 Each sector is 512 bytes
 What is the maximum
size of the disk?
 A: 1024 * 16 * 63 * 512
= 582 Mb
Disk Size II
 Consider a disk with 16 platters (heads) and
400 cylinders. It is divided into four 100cylinder zones with the cylinders in different
zones containing 160, 200, 240, 280 sectors,
respectively. Each sector is 512 bytes,
average seek time between adjacent
cylinders is 1 ms, and the disk rotates at
7200 RPM. Calculate (a) disk size (b) max
data transfer rate.
 (Note that we consider physical geometry
here, not virtual geometry, hence each zone
may contain different number of sectors.)
Disk Size II Solution
 (a) The size of a zone is platters × cylinders × sectors/track ×
Capacity of zone 1: 16 × 100 × 160 × 512 = 131072000 bytes
Capacity of zone 2: 16 × 100 × 200 × 512 = 163840000 bytes
Capacity of zone 3: 16 × 100 × 240 × 512 = 196608000 bytes
Capacity of zone 4: 16 × 100 × 280 × 512 = 229376000 bytes
Sum = 131072000 + 163840000 + 196608000 + 229376000 =
 (b) The maximum data transfer rate will be when the cylinders
in the outermost zone (zone 4) are being read/written. In that
zone, in one second, 280 sectors are read 120 times (7200
RPM is 120 rotations/sec). Thus the max data rate is 280 ×
120 × 512 = 17,203,200 bytes/sec.
Disk Performance I
 Q: Consider a disk with the following parameters:
 12000 RPM, Data transfer rate of 40 MB/s
 Average seek time of 8 ms
 Disk block size of 4 KB
 What is the average time to read a random block from the
 A: (note that the disk needs to rotate for half a revolution on
average to get to a random block on disk, hence ½ in the 3rd
 Tread=Seek+Rotational+Transfer Time=8+2.5+0.1=10.6 ms
Disk Performance I
 Q: Given the same parameters as before, assume that the
operating system has exploited locality by grouping related
blocks together in the file system. As a result, the typical
access pattern is not as random as before. It typically
retrieves 10 blocks sequentially at a time. What is the
average time to read a single block now?
 A: Compute the time for reading 10 blocks (since there is only
1 seek and 1 rotational for those 10), then divide by 10 for a
single block read.
 Tread10=Seek+Rotational+Transfer Time=8+2.5+1.0=11.5 ms
 Tread=11.5 ms/10=1.15 ms
Disk Performance II
 Q: Consider a disk with the following parameters:
 7200 RPM
 Average seek time of 8 ms
 Sector size=disk block size=0.5 KB
 160 sectors per track
 Q: Estimate the max sustained transfer rate of this
 A: The disk rotates at120 times per second
(7200RPM/60), and each rotation transfers a track
of 80 KB (0.5KB*160). Thus, the max sustained
transfer rate can be approximated as 9.6 MB/s
(120*80 KB) or 9.6 KB/ms.
Disk Performance II
 Q: Estimate the number of I/Os per second and
the effective transfer rate for a random-access
workload that reads an individual sector that may
be anywhere on the disk.
 A: Average rotational delay is
(1/2)*(1000/120)=4.167 ms. Transfer time for 1
sector is 0.5KB/9.6KB/ms=0.052ms
 Tread=Seek+Rotational+Transfer=8+4.167+0.052=
12.219 ms
 Number of IOs (transfers) per second is
1/(0.012219)=81.8. Since each transfer is 0.5 KB
(1 sector), the effective transfer rate is 40.9 KB/s.
Disk Performance II
 Q: Calculate the number of random-access I/Os per
second and transfer rate for I/O sizes of 4 KB, 8 KB,
and 64 KB.
 A: For reads of size 4 KB, 8 KB, and 64 KB, the
corresponding I/Os per second are calculated as
before, e.g., for a read of 4 KB, transfer time is
4KB/9.6KB/ms=0.417 ms
 Tread=Seek+Rotational+Transfer=8+4.167+0.417=12.6
 Number of IOs (transfers) per second is (respectively
for 4, 8, 64 KB) 1/(0.0126), 1/(0.013), and 1/(0.019).
Thus we get 79.4, 76.9, and 52.6 transfers per
second, respectively. Transfer rates are obtained from
4, 8, and 64 times these I/O rates, giving 318 KB/s,
615 KB/s, and 3366 KB/s, respectively.
Disk Performance II
 Q: If multiple requests are in the queue, a
scheduling algorithm such as SCAN should be
able to reduce the average seek distance.
Suppose that a random-access workload has I/O
size of 8 KB, the average queue length is 10, and
the scheduling algorithm reduces the average
seek time to 3 milliseconds. Now calculate the
I/Os per second and the effective transfer rate.
 A:Tread=Seek+Rotational+Transfer=3+4.167+0.83
=8 ms, so we obtain 125 I/Os per second. From 8
KB per I/O we obtain 1000 KB/s.

similar documents