MODERN OPERATING SYSTEMS
5TH EDITION
CHAPTER NO. 01. INTRODUCTION
SOLUTIONS TO PROBLEMS
1. An operating system must provide the users with an extended machine, and it must manage the I/O
devices and other system resources. To some extent, these are different functions.
2. Multiprogramming is the rapid switching of the CPU between multiple proc-esses in memory. It is
commonly used to keep the CPU busy while one or more processes are doing I/O.
3. Obviously, there are a lot of possible answers. Here are some.
Mainframe operating system: Claims processing in an insurance company. Server operating system:
Speech-to-text conversion service for Siri. Multiprocessor operating system: Video editing and rendering.
Personal computer operating system: Word processing application.
Handheld computer operating system: Context-aware recommendation system. Embedded operating
system: Programming a DVD recorder for recording TV. Sensor-node operating system: Monitoring
temperature in a wilderness area. Real-time operating system: Air traffic control system.
Smart-card operating system: Electronic payment.
4. Empirical evidence shows that memory access exhibits the principle of locality of reference, where if one
location is read then the probability of accessing nearby locations next is very high, particularly the
following memory loca-tions. So, by caching an entire cache line, the probability of a cache hit next is
increased. Also, modern hardware can do a block transfer of 32 or 64 bytes into a cache line much
faster than reading the same data as individual words.
5. Input spooling is the technique of reading in jobs, for example, from cards, onto the disk, so that when the
currently executing processes are finished, there will be work waiting for the CPU. Output spooling
consists of first copying printable files to disk before printing them, rather than printing directly as the
output is generated. Input spooling on a personal computer is not very likely
, but output spooling is.
6. The prime reason for multiprogramming is to give the CPU something to do while waiting for I/O to
complete. If there is no DMA, the CPU is fully occu-pied doing I/O, so there is nothing to be gained (at
least in terms of CPU utili-zation) by multiprogramming. No matter how much I/O a program does, the
CPU will be 100% busy. This of course assumes the major delay is the wait while data are copied. A
CPU could do other work if the I/O were slow for other reasons (arriving on a serial line, for instance).
7. Second-generation computers did not have the necessary hardware to protect the operating system from
malicious user programs.
, 8. Access to I/O devices (e.g., a printer) is typically restricted for different users. Some users may
be allowed to print as many pages as they like, some users may not be allowed to print at all,
while some users may be limited to printing only a certain number of pages. These restrictions
are set by system adminis-trators based on some policies. Such policies need to be enforced so
that user-level programs cannot interfere with them.
9. A 25 × 80 character monochrome text screen requires a 2000-byte buffer. The 1024 × 768 pixel
24-bit color bitmap requires 2,359,296 bytes. In 1980,these two options would have cost $10 and
$11,520, respectively. For current prices, check on how much RAM currently costs, probably
pennies per MB.
10. Consider fairness and real time. Fairness requires that each process be allo-cated its resources
in a fair way, with no process getting more than its fair share. On the other hand, real time
requires that resources be allocated based on the times when different processes must complete
their execution. A real-time process may get a disproportionate share of the resources.
11. Most modern CPUs provide two modes of execution: kernel mode and user mode. The CPU
can execute every instruction in its instruction set and use every feature of the hardware when
executing in kernel mode. However, it can execute only a subset of instructions and use only
subset of features when executing in the user mode. Having two modes allows designers to
run user programs in user mode and thus deny them access to critical instructions.
12. Number of heads = 255 GB / (65536*255*512) = 16
Number of platters = 16/2 = 8
The time for a read operation to complete is seek time + rotational latency + transfer time. The
seek time is 11 msec, the rotational latency is 7 msec, and the transfer time is 1 msec, so the
average transfer takes 19 msec.
13. It may take 20, 25 or 30 msec to complete the execution of these programs depending on how
the operating system schedules them. If P0 and P1 are scheduled on the same CPU and P2 is
scheduled on the other CPU, it will take 20 msec. If P0 and P2 are scheduled on the same CPU
and P1 is scheduled on the other CPU, it will take 25 msec. If P1 and P2 are scheduled on the
same CPU and P0 is scheduled on the other CPU, it will take 30 msec. If all three are on the
same CPU, it will take 35 msec.
14. Personal computer systems are always interactive,
often with only a singleuser. Mainframe
systems nearly always emphasize batch or timesharing withmany users. Protection is much more
of an issue on mainframe systems, as isefficient use of all resources.
,15. Every nanosecond one instruction emerges from the pipeline. This means the machine is
executing 1 billion instructions per second. It does not matter at all how many stages the
pipeline has. A 10-stage pipeline with 1 nsec per stagewould also execute 1 billion instructions
per second. All that matters is howoften a finished instruction pops out the end of the pipeline.
16. Average access time =
0.95 × 2 nsec (word is in the cache)
+ 0.05 × 0.99 × 10 nsec (word is in RAM, but not in the cache)
+ 0.05 × 0.01 × 10,000,000 nsec (word on disk only)
= 5002.395 nsec
= 5.002395 µ sec
17. Maybe. Ifthe caller gets control back and immediately overwrites the data,
when the write
finally occurs, the wrong data will be written. However, ifthe driver first copies the data to a
private buffer before returning, then the caller can be allowed to continue immediately
.
Another possibility is to allowthe caller to continue and give ita signal when the buffer may
be reused, but this is tricky and error prone.
18. A trap is caused by the program and is synchronous with it. If the program is run again and
again, the trap will always occur at exactly the same position in the instruction stream. An
interrupt is caused by an external event and its tim-ing is not reproducible.
19. Mounting a file system makes anyfiles already in the mount-point directoryinaccessible, so
mount points are normally empty. However, a system adminis-trator might want to copy some
of the most important files normally located in the mounted directory to the mount point so
they could be found in their nor-mal path in an emergencywhen the mounted device was being
repaired.
20. A system call allows a user process to access and execute operating system functions
inside the kernel. User programs use system calls to invoke operat-ing system services.
21. Prefixing path names with a drive name or number makes thefile system de-vice dependent.If
the directory on which a newfile system is mounted con-tained anyfiles or subdirectories,
those files or subdirectories would not be
accessible while the administrator tries to find the
backup tape.
22. Open can fail if thefile given does not exist or there is a protection error. Close can fail if the
file descriptor does not refer to a valid openfile. Lseek can fail if the file descriptor is invalid
or the new file position is negative.
23. Time multiplexing: CPU, network card, printer, keyboard.
Space multiplexing: memory, disk.
Both: display.
, 24. If the call fails, for example because fd is incorrect, it can return 1. It can also fail because
the disk is full and it is not possible to write the number of bytes requested. On a correct
termination, it always returns nbytes.
25. It contains the bytes: 8, 2, 8, 1.
26. Time to retrieve the file =
1 * 50 msec (time to move the arm over track 50)
+ 5 msec (time for the first sector to rotate under the head)
+ 10/100 * 1000 msec (read 10 MB)
= 155 msec
27. Block special files consist of numbered blocks, each of which can be read or written independently
of all the other ones. It is possible to seek to anyblock and start reading or writing. This is not
possible with character special files.
28. System calls do not really have names, other than in a documentation sense. When the library
procedure read traps to the kernel, it puts the number of the system call in a register or on the
stack. This number is used to index into a ta-ble. There is really no name used anywhere. On the
other hand, the name of the library procedure is very important, since that is what appears in the
pro-gram.
29. Yes it can, especially if the kernel is a message-passing system.
30. As far as program logic is concerned, it does not matter whether a call to a library procedure
results in a system call. But if performance is an issue, if a task can be accomplished without a
system call the program will run faster. Every system call involves overhead time in switching
from the user context to the kernel context. Furthermore, on a multiuser system, the operating
system may schedule another process to run when a system call completes, further slowing the
progress in real time of a calling process.
31. Several UNIX calls have no counterpart in the Win32 API:
Link: a Win32 program cannot refer to a file by an alternative name or see it in more than one
directory. Also, attempting to create a link is a convenient wayto test for and create a lock on a file.
Mount and umount: a Windows program cannot make assumptions about stan-dard path names
because on systems with multiple disk drives the drive-name part of the path may be different.
Chmod: Windows uses access control lists.
Kill: Windows programmers cannot kill a misbehaving program that is not cooperating.