Transcript of "Studentmanual"

2.
Preface
This volume is a student’s manual for the Seventh Edition of Operating System
Concepts, by Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne. It
consists of answers to the exercises in the parent text.
Although we have tried to produce a student’s manual that will aid all of
the users of our book as much as possible, there can always be improvements
(improved answers, additional questions, sample test questions, programming
projects, alternative orders of presentation of the material, additional refer-
ences, and so on). We invite you, both instructors and students, to help us
improve this manual. If you have better solutions to the exercises or other
items that would be of use with Operating System Concepts, we invite you to
send them to us for consideration in later editions of this manual. All contri-
butions will, of course, be properly credited to their contributor.
Internet electronic mail should be addressed to os-book@cs.yale.edu.
Physical mail may be sent to Avi Silberschatz, Yale University, Department of
Computer Science, 51 Prospect Street, P.O. box 208285, New Haven, CT 06520,
USA.
A. S.
P. B. G
G. G.
iii

4.
1
CHAPTER
Introduction
Exercises
1.1 What are the three main purposes of an operating system?
Answer:
• To provide an environment for a computer user to execute programs
on computer hardware in a convenient and efﬁcient manner.
• To allocate the separate resources of the computer as needed to
solve the problem given. The allocation process should be as fair
and efﬁcient as possible.
• As a control program it serves two major functions: (1) supervision
of the execution of user programs to prevent errors and improper
use of the computer, and (2) management of the operation and
control of I/O devices.
1.2 What are the main differences between operating systems for mainframe
computers and personal computers?
Answer: Generally, operating systems for batch systems have simpler
requirements than for personal computers. Batch systems do not have
to be concerned with interacting with a user as much as a personal
computer. As a result, an operating system for a PC must be concerned
with response time for an interactive user. Batch systems do not have
such requirements. A pure batch system also may have not to handle
time sharing, whereas an operating system must switch rapidly between
different jobs.
1.3 List the four steps that are necessary to run a program on a completely
dedicated machine.
Answer:
1

5.
2 Chapter 1 Introduction
a. Reserve machine time.
b. Manually load program into memory.
c. Load starting address and begin execution.
d. Monitor and control execution of program from console.
1.4 We have stressed the need for an operating system to make efﬁcient use
of the computing hardware. When is it appropriate for the operating
system to forsake this principle and to “waste” resources? Why is such
a system not really wasteful?
Answer: Single-user systems should maximize use of the system for
the user. A GUI might “waste” CPU cycles, but it optimizes the user’s
interaction with the system.
1.5 What is the main difﬁculty that a programmer must overcome in writing
an operating system for a real-time environment?
Answer: The main difﬁculty is keeping the operating system within
the ﬁxed time constraints of a real-time system. If the system does not
complete a task in a certain time frame, it may cause a breakdown
of the entire system it is running. Therefore when writing an operating
system for a real-time system, the writer must be sure that his scheduling
schemes don’t allow response time to exceed the time constraint.
1.6 Consider the various deﬁnitions of operating system. Consider whether
the operating system should include applications such as Web browsers
and mail programs. Argue both that it should and that it should not, and
support your answer.
Answer: Point. Applications such as web browsers and email tools are
performing an increasingly important role in modern desktop computer
systems. To fulﬁll this role, they should be incorporated as part of the
operating system. By doing so, they can provide better performance
and better integration with the rest of the system. In addition, these
important applications can have the same look-and-feel as the operating
system software.
Counterpoint. The fundamental role of the operating system is to man-
age system resources such as the CPU, memory, I/O devices, etc. In ad-
dition, it’s role is to run software applications such as web browsers and
email applications. By incorporating such applications into the operating
system, we burden the operating system with additional functionality.
Such a burden may result in the operating system performing a less-than-
satisfactory job at managing system resources. In addition, we increase
the size of the operating system thereby increasing the likelihood of
system crashes and security violations.
1.7 How does the distinction between kernel mode and user mode function
as a rudimentary form of protection (security) system?
Answer: The distinction between kernel mode and user mode pro-
vides a rudimentary form of protection in the following manner. Certain
instructions could be executed only when the CPU is in kernel mode.
Similarly, hardware devices could be accessed only when the program
is executing in kernel mode. Control over when interrupts could be en-

6.
Exercises 3
abled or disabled is also possible only when the CPU is in kernel mode.
Consequently, the CPU has very limited capability when executing in
user mode, thereby enforcing protection of critical resources.
1.8 Which of the following instructions should be privileged?
a. Set value of timer.
b. Read the clock.
c. Clear memory.
d. Issue a trap instruction.
e. Turn off interrupts.
f. Modify entries in device-status table.
g. Switch from user to kernel mode.
h. Access I/O device.
Answer: The following operations need to be privileged: Set value of
timer, clear memory, turn off interrupts, modify entries in device-status
table, access I/O device. The rest can be performed in user mode.
1.9 Some early computers protected the operating system by placing it in
a memory partition that could not be modiﬁed by either the user job
or the operating system itself. Describe two difﬁculties that you think
could arise with such a scheme.
Answer: The data required by the operating system (passwords, access
controls, accounting information, and so on) would have to be stored
in or passed through unprotected memory and thus be accessible to
unauthorized users.
1.10 Some CPUs provide for more than two modes of operation. What are
two possible uses of these multiple modes?
Answer: Although most systems only distinguish between user and
kernel modes, some CPUs have supported multiple modes. Multiple
modes could be used to provide a ﬁner-grained security policy. For
example, rather than distinguishing between just user and kernel mode,
you could distinguish between different types of user mode. Perhaps
users belonging to the same group could execute each other’s code. The
machine would go into a speciﬁed mode when one of these users was
running code. When the machine was in this mode, a member of the
group could run code belonging to anyone else in the group.
Another possibility would be to provide different distinctions within
kernel code. For example, a speciﬁc mode could allow USB device drivers
to run. This would mean that USB devices could be serviced without
having to switch to kernel mode, thereby essentially allowing USB device
drivers to run in a quasi-user/kernel mode.
1.11 Timers could be used to compute the current time. Provide a short de-
scription of how this could be accomplished.
Answer: A program could use the following approach to compute the
current time using timer interrupts. The program could set a timer for

7.
4 Chapter 1 Introduction
some time in the future and go to sleep. When it is awakened by the
interrupt, it could update its local state, which it is using to keep track
of the number of interrupts it has received thus far. It could then repeat
this process of continually setting timer interrupts and updating its local
state when the interrupts are actually raised.
1.12 Is the Internet a LAN or a WAN?
Answer: The Internet is a WAN as the various computers are located
at geographically different places and are connected by long-distance
network links.

8.
Operating-
System
2
CHAPTER
Structures
Exercises
2.1 What is the purpose of system calls?
Answer: System calls allow user-level processes to request services of
the operating system.
2.2 What are the ﬁve major activities of an operating system in regard to
process management?
Answer:
a. The creation and deletion of both user and system processes
b. The suspension and resumption of processes
c. The provision of mechanisms for process synchronization
d. The provision of mechanisms for process communication
e. The provision of mechanisms for deadlock handling
2.3 What are the three major activities of an operating system in regard to
memory management?
Answer:
a. Keep track of which parts of memory are currently being used
and by whom.
b. Decide which processes are to be loaded into memory when mem-
ory space becomes available.
c. Allocate and deallocate memory space as needed.
2.4 What are the three major activities of an operating system in regard to
secondary-storage management?
Answer:
5

9.
6 Chapter 2 Operating-System Structures
• Free-space management.
• Storage allocation.
• Disk scheduling.
2.5 What is the purpose of the command interpreter? Why is it usually
separate from the kernel?
Answer: It reads commands from the user or from a ﬁle of commands
and executes them, usually by turning them into one or more system
calls. It is usually not part of the kernel since the command interpreter
is subject to changes.
2.6 What system calls have to be executed by a command interpreter or shell
in order to start a new process?
Answer: In Unix systems, a fork system call followed by an exec system
call need to be performed to start a new process. The fork call clones the
currently executing process, while the exec call overlays a new process
based on a different executable over the calling process.
2.7 What is the purpose of system programs?
Answer: System programs can be thought of as bundles of useful
system calls. They provide basic functionality to users so that users do
not need to write their own programs to solve common problems.
2.8 What is the main advantage of the layered approach to system design?
What are the disadvantages of using the layered approach?
Answer: As in all cases of modular design, designing an operating
system in a modular way has several advantages. The system is easier
to debug and modify because changes affect only limited sections of
the system rather than touching all sections of the operating system.
Information is kept only where it is needed and is accessible only within
a deﬁned and restricted area, so any bugs affecting that data must be
limited to a speciﬁc module or layer.
2.9 List ﬁve services provided by an operating system. Explain how each
provides convenience to the users. Explain also in which cases it would
be impossible for user-level programs to provide these services.
Answer:
a. Program execution. The operating system loads the contents (or
sections) of a ﬁle into memory and begins its execution. A user-
level program could not be trusted to properly allocate CPU time.
b. I/O operations. Disks, tapes, serial lines, and other devices must
be communicated with at a very low level. The user need only
specify the device and the operation to perform on it, while the
system converts that request into device- or controller-speciﬁc
commands. User-level programs cannot be trusted to access only
devices they should have access to and to access them only when
they are otherwise unused.
c. File-system manipulation. There are many details in ﬁle creation,
deletion, allocation, and naming that users should not have to per-
form. Blocks of disk space are used by ﬁles and must be tracked.

10.
Exercises 7
Deleting a ﬁle requires removing the name ﬁle information and
freeing the allocated blocks. Protections must also be checked to
assure proper ﬁle access. User programs could neither ensure ad-
herence to protection methods nor be trusted to allocate only free
blocks and deallocate blocks on ﬁle deletion.
d. Communications. Message passing between systems requires
messages to be turned into packets of information, sent to the net-
work controller, transmitted across a communications medium,
and reassembled by the destination system. Packet ordering and
data correction must take place. Again, user programs might not
coordinate access to the network device, or they might receive
packets destined for other processes.
e. Error detection. Error detection occurs at both the hardware and
software levels. At the hardware level, all data transfers must be
inspected to ensure that data have not been corrupted in transit.
All data on media must be checked to be sure they have not
changed since they were written to the media. At the software
level, media must be checked for data consistency; for instance,
whether the number of allocated and unallocated blocks of storage
match the total number on the device. There, errors are frequently
process-independent (for instance, the corruption of data on a
disk), so there must be a global program (the operating system)
that handles all types of errors. Also, by having errors processed
by the operating system, processes need not contain code to catch
and correct all the errors possible on a system.
2.10 What is the purpose of system calls?
Answer: System calls allow user-level processes to request services of
the operating system.
2.11 What are the main advantages of the microkernel approach to system
design?
Answer: Beneﬁts typically include the following (a) adding a new
service does not require modifying the kernel, (b) it is more secure as
more operations are done in user mode than in kernel mode, and (c)
a simpler kernel design and functionality typically results in a more
reliable operating system.
2.12 Why do some systems store the operating system in ﬁrmware, and others
on disk?
Answer: For certain devices, such as handheld PDAs and cellular tele-
phones, a disk with a ﬁle system may be not be available for the device.
In this situation, the operating system must be stored in ﬁrmware.
2.13 How could a system be designed to allow a choice of operating systems
to boot from? What would the bootstrap program need to do?
Answer: Consider a system that would like to run both Windows
XP and three different distributions of Linux (e.g., RedHat, Debian, and
Mandrake). Each operating system will be stored on disk. During system
boot-up, a special program (which we will call the boot manager) will
determine which operating system to boot into. This means that rather

11.
8 Chapter 2 Operating-System Structures
initially booting to an operating system, the boot manager will ﬁrst run
during system startup. It is this boot manager that is responsible for
determining which system to boot into. Typically boot managers must
be stored at certain locations of the hard disk to be recognized during
system startup. Boot managers often provide the user with a selection of
systems to boot into; boot managers are also typically designed to boot
into a default operating system if no choice is selected by the user.

12.
3
CHAPTER
Processes
Exercises
3.1 Palm OS provides no means of concurrent processing. Discuss three
major complications that concurrent processing adds to an operating
system.
Answer:
a. A method of time sharing must be implemented to allow each
of several processes to have access to the system. This method
involves the preemption of processes that do not voluntarily give
up the CPU (by using a system call, for instance) and the kernel
being reentrant (so more than one process may be executing kernel
code concurrently).
b. Processes and system resources must have protections and must
be protected from each other. Any given process must be limited
in the amount of memory it can use and the operations it can
perform on devices like disks.
c. Care must be taken in the kernel to prevent deadlocks between
processes, so processes aren’t waiting for each other’s allocated
resources.
3.2 The Sun UltraSPARC processor has multiple register sets. Describe the
actions of a context switch if the new context is already loaded into
one of the register sets. What else must happen if the new context is in
memory rather than in a register set and all the register sets are in use?
Answer: The CPU current-register-set pointer is changed to point to the
set containing the new context, which takes very little time. If the context
is in memory, one of the contexts in a register set must be chosen and be
moved to memory, and the new context must be loaded from memory
9

13.
10 Chapter 3 Processes
into the set. This process takes a little more time than on systems with
one set of registers, depending on how a replacement victim is selected.
3.3 When a process creates a new process using the fork() operation, which
of the following state is shared between the parent process and the child
process?
a. Stack
b. Heap
c. Shared memory segments
Answer: Only the shared memory segments are shared between the
parent process and the newly forked child process. Copies of the stack
and the heap are made for the newly created process.
3.4 Again considering the RPC mechanism, consider the “exactly once” se-
mantic. Does the algorithm for implementing this semantic execute cor-
rectly even if the “ACK” message back to the client is lost due to a network
problem? Describe the sequence of messages and whether "exactly once"
is still preserved.
Answer: The “exactly once” semantics ensure that a remore procedure
will be executed exactly once and only once. The general algorithm for
ensuring this combines an acknowledgment (ACK) scheme combined
with timestamps (or some other incremental counter that allows the
server to distinguish between duplicate messages).
The general strategy is for the client to send the RPC to the server along
with a timestamp. The client will also start a timeout clock. The client
will then wait for one of two occurrences: (1) it will receive an ACK from
the server indicating that the remote procedure was performed, or (2) it
will time out. If the client times out, it assumes the server was unable
to perform the remote procedure so the client invokes the RPC a second
time, sending a later timestamp. The client may not receive the ACK for
one of two reasons: (1) the original RPC was never received by the server,
or (2) the RPC was correctly received —and performed —by the server
but the ACK was lost. In situation (1), the use of ACKs allows the server
ultimately to receive and perform the RPC. In situation (2), the server will
receive a duplicate RPC and it will use the timestamp to identify it as a
duplicate so as not to perform the RPC a second time. It is important to
note that the server must send a second ACK back to the client to inform
the client the RPC has been performed.
3.5 Assume that a distributed system is susceptible to server failure. What
mechanisms would be required to guarantee the “exactly once” seman-
tics for execution of RPCs?
Answer: The server should keep track in stable storage (such as a
disk log) information regarding what RPC operations were received,
whether they were successfully performed, and the results associated
with the operations. When a server crash takes place and a RPC message
is received, the server can check whether the RPC had been previously
performed and therefore guarantee “exactly once” semanctics for the
execution of RPCs.

14.
4
CHAPTER
Threads
Exercises
4.1 Provide two programming examples in which multithreading provides
better performance than a single-threaded solution.
Answer: (1) A Web server that services each request in a separate thread.
2) (A parallelized application such as matrix multiplication where (dif-
ferent parts of the matrix may be worked on in parallel. (3) An (interac-
tive GUI program such as a debugger where a thread is used (to monitor
user input, another thread represents the running (application, and a
third thread monitors performance.
4.2 What are two differences between user-level threads and kernel-level
threads? Under what circumstances is one type better than the other?
Answer: (1) User-level threads are unknown by the kernel, whereas the
kernel is aware of kernel threads. (2) On systems using either M:1 or M:N
mapping, user threads are scheduled by the thread library and the kernel
schedules kernel threads. (3) Kernel threads need not be associated with
a process whereas every user thread belongs to a process. Kernel threads
are generally more expensive to maintain than user threads as they must
be represented with a kernel data structure.
4.3 Describe the actions taken by a kernel to context switch between kernel-
level threads.
Answer: Context switching between kernel threads typically requires
saving the value of the CPU registers from the thread being switched out
and restoring the CPU registers of the new thread being scheduled.
4.4 What resources are used when a thread is created? How do they differ
from those used when a process is created?
Answer: Because a thread is smaller than a process, thread creation
typically uses fewer resources than process creation. Creating a process
11

15.
12 Chapter 4 Threads
requires allocating a process control block (PCB), a rather large data struc-
ture. The PCB includes a memory map, list of open ﬁles, and environ-
ment variables. Allocating and managing the memory map is typically
the most time-consuming activity. Creating either a user or kernel thread
involves allocating a small data structure to hold a register set, stack, and
priority.
4.5 Assume an operating system maps user-level threads to the kernel us-
ing the many-to-many model and the mapping is done through LWPs.
Furthermore, the system allows developers to create real-time threads.
Is it necessary to bind a real-time thread to an LWP? Explain.
Answer: Yes. Timing is crucial to real-time applications. If a thread is
marked as real-time but is not bound to an LWP, the thread may have
to wait to be attached to an LWP before running. Consider if a real-time
thread is running (is attached to an LWP) and then proceeds to block (i.e.
must perform I/O, has been preempted by a higher-priority real-time
thread, is waiting for a mutual exclusion lock, etc.) While the real-time
thread is blocked, the LWP it was attached to has been assigned to another
thread. When the real-time thread has been scheduled to run again, it
must ﬁrst wait to be attached to an LWP. By binding an LWP to a real-
time thread you are ensuring the thread will be able to run with minimal
delay once it is scheduled.
4.6 A Pthread program that performs the summation function was provided
in Section 4.3.1. Rewrite this program in Java.
Answer: Please refer to the supporting Web site for source code solution.

16.
5
CHAPTER
CPU Scheduling
Exercises
5.1 A CPU scheduling algorithm determines an order for the execution of its
scheduled processes. Given n processes to be scheduled on one proces-
sor, how many possible different schedules are there? Give a formula in
terms of n.
Answer: n! (n factorial = n × n – 1 × n – 2 × ... × 2 × 1).
5.2 Deﬁne the difference between preemptive and nonpreemptive schedul-
ing.
Answer: Preemptive scheduling allows a process to be interrupted
in the midst of its execution, taking the CPU away and allocating it
to another process. Nonpreemptive scheduling ensures that a process
relinquishes control of the CPU only when it ﬁnishes with its current
CPU burst.
5.3 Suppose that the following processes arrive for execution at the times
indicated. Each process will run the listed amount of time. In answering
the questions, use nonpreemptive scheduling and base all decisions on
the information you have at the time the decision must be made.
Process Arrival Time Burst Time
P1 0.0 8
P2 0.4 4
P3 1.0 1
a. What is the average turnaround time for these processes with the
FCFS scheduling algorithm?
13

17.
14 Chapter 5 CPU Scheduling
b. What is the average turnaround time for these processes with the
SJF scheduling algorithm?
c. The SJF algorithm is supposed to improve performance, but notice
that we chose to run process P1 at time 0 because we did not know
that two shorter processes would arrive soon. Compute what the
average turnaround time will be if the CPU is left idle for the ﬁrst 1
unit and then SJF scheduling is used. Remember that processes P1
and P2 are waiting during this idle time, so their waiting time may
increase. This algorithm could be known as future-knowledge
scheduling.
Answer:
a. 10.53
b. 9.53
c. 6.86
Remember that turnaround time is ﬁnishing time minus arrival time, so
you have to subtract the arrival times to compute the turnaround times.
FCFS is 11 if you forget to subtract arrival time.
5.4 What advantage is there in having different time-quantum sizes on dif-
ferent levels of a multilevel queueing system?
Answer: Processes that need more frequent servicing, for instance,
interactive processes such as editors, can be in a queue with a small time
quantum. Processes with no need for frequent servicing can be in a queue
with a larger quantum, requiring fewer context switches to complete the
processing, and thus making more efﬁcient use of the computer.
5.5 Many CPU-scheduling algorithms are parameterized. For example, the
RR algorithm requires a parameter to indicate the time slice. Multilevel
feedback queues require parameters to deﬁne the number of queues,
the scheduling algorithms for each queue, the criteria used to move
processes between queues, and so on.
These algorithms are thus really sets of algorithms (for example, the
set of RR algorithms for all time slices, and so on). One set of algorithms
may include another (for example, the FCFS algorithm is the RR algorithm
with an inﬁnite time quantum). What (if any) relation holds between the
following pairs of sets of algorithms?
a. Priority and SJF
b. Multilevel feedback queues and FCFS
c. Priority and FCFS
d. RR and SJF
Answer:
a. The shortest job has the highest priority.
b. The lowest level of MLFQ is FCFS.

18.
Exercises 15
c. FCFS gives the highest priority to the job having been in existence
the longest.
d. None.
5.6 Suppose that a scheduling algorithm (at the level of short-term CPU
scheduling) favors those processes that have used the least processor
time in the recent past. Why will this algorithm favor I/O-bound pro-
grams and yet not permanently starve CPU-bound programs?
Answer: It will favor the I/O-bound programs because of the relatively
short CPU burst request by them; however, the CPU-bound programs
will not starve because the I/O-bound programs will relinquish the CPU
relatively often to do their I/O.
5.7 Distinguish between PCS and SCS scheduling.
Answer: PCS scheduling is done local to the process. It is how the
thread library schedules threads onto available LWPs. SCS scheduling is
the situation where the operating system schedules kernel threads. On
systems using either many-to-one or many-to-many, the two scheduling
models are fundamentally different. On systems using one-to-one, PCS
and SCS are the same.
5.8 Assume an operating system maps user-level threads to the kernel using
the many-to-many model where the mapping is done through the use
of LWPs. Furthermore, the system allows program developers to create
real-time threads. Is it necessary to bind a real-time thread to an LWP?
Answer: Yes, otherwise a user thread may have to compete for an
available LWP prior to being actually scheduled. By binding the user
thread to an LWP, there is no latency while waiting for an available LWP;
the real-time user thread can be scheduled immediately.

19.
Process
6
CHAPTER
Synchronization
Exercises
6.1 In Section 6.4 we mentioned that disabling interrupts frequently could
affect the system’s clock. Explain why it could and how such effects
could be minimized.
Answer: The system clock is updated at every clock interrupt. If in-
terrupts were disabled —particularly for a long period of time —it is
possible the system clock could easily lose the correct time. The sys-
tem clock is also used for scheduling purposes. For example, the time
quantum for a process is expressed as a number of clock ticks. At every
clock interrupt, the scheduler determines if the time quantum for the
currently running process has expired. If clock interrupts were disabled,
the scheduler could not accurately assign time quantums. This effect can
be minimized by disabling clock interrupts for only very short periods.
6.2 The Cigarette-Smokers Problem. Consider a system with three smoker pro-
cesses and one agent process. Each smoker continuously rolls a cigarette
and then smokes it. But to roll and smoke a cigarette, the smoker needs
three ingredients: tobacco, paper, and matches. One of the smoker pro-
cesses has paper, another has tobacco, and the third has matches. The
agent has an inﬁnite supply of all three materials. The agent places
two of the ingredients on the table. The smoker who has the remaining
ingredient then makes and smokes a cigarette, signaling the agent on
completion. The agent then puts out another two of the three ingredi-
ents, and the cycle repeats. Write a program to synchronize the agent
and the smokers using Java synchronization.
Answer: Please refer to the supporting Web site for source code solution.
6.3 Give the reasons why Solaris, Windows XP, and Linux implement mul-
tiple locking mechanisms. Describe the circumstances under which they
17

20.
18 Chapter 6 Process Synchronization
use spinlocks, mutexes, semaphores, adaptive mutexes, and condition
variables. In each case, explain why the mechanism is needed.
Answer: These operating systems provide different locking mecha-
nisms depending on the application developers’ needs. Spinlocks are
useful for multiprocessor systems where a thread can run in a busy-loop
(for a short period of time) rather than incurring the overhead of being
put in a sleep queue. Mutexes are useful for locking resources. Solaris 2
uses adaptive mutexes, meaning that the mutex is implemented with a
spin lock on multiprocessor machines. Semaphores and condition vari-
ables are more appropriate tools for synchronization when a resource
must be held for a long period of time, since spinning is inefﬁcient for a
long duration.
6.4 Explain the differences, in terms of cost, among the three storage types
volatile, nonvolatile, and stable.
Answer: Volatile storage refers to main and cache memory and is very
fast. However, volatile storage cannot survive system crashes or power-
ing down the system. Nonvolatile storage survives system crashes and
powered-down systems. Disks and tapes are examples of nonvolatile
storage. Recently, USB devices using erasable program read-only mem-
ory (EPROM) have appeared providing nonvolatile storage. Stable stor-
age refers to storage that technically can never be lost as there are redun-
dant backup copies of the data (usually on disk).
6.5 Explain the purpose of the checkpoint mechanism. How often should
checkpoints be performed? Describe how the frequency of checkpoints
affects:
• System performance when no failure occurs
• The time it takes to recover from a system crash
• The time it takes to recover from a disk crash
Answer: A checkpoint log record indicates that a log record and its
modiﬁed data has been written to stable storage and that the transaction
need not to be redone in case of a system crash. Obviously, the more often
checkpoints are performed, the less likely it is that redundant updates
will have to be performed during the recovery process.
• System performance when no failure occurs—If no failures occur,
the system must incur the cost of performing checkpoints that are
essentially unnecessary. In this situation, performing checkpoints
less often will lead to better system performance.
• The time it takes to recover from a system crash—The existence of a
checkpoint record means that an operation will not have to be
redone during system recovery. In this situation, the more often
checkpoints were performed, the faster the recovery time is from a
system crash.
• The time it takes to recover from a disk crash—The existence of a
checkpoint record means that an operation will not have to be
redone during system recovery. In this situation, the more often

21.
Exercises 19
checkpoints were performed, the faster the recovery time is from a
disk crash.
6.6 Explain the concept of transaction atomicity.
Answer: A transaction is a series of read and write operations upon
some data followed by a commit operation. If the series of operations in
a transaction cannot be completed, the transaction must be aborted and
the operations that did take place must be rolled back. It is important
that the series of operations in a transaction appear as one indivisible
operation to ensure the integrity of the data being updated. Otherwise,
data could be compromised if operations from two (or more) different
transactions were intermixed.
6.7 Show that some schedules are possible under the two-phase locking
protocol but not possible under the timestamp protocol, and vice versa.
Answer: A schedule that is allowed in the two-phase locking protocol
but not in the timestamp protocol is:
step T0 T1 Precedence
1 lock-S(A)
2 read(A)
3 lock-X(B)
4 write(B)
5 unlock(B)
6 lock-S(B)
7 read(B) T1 → T0
8 unlock(A)
9 unlock(B)
This schedule is not allowed in the timestamp protocol because at step
7, the W-timestamp of B is 1.
A schedule that is allowed in the timestamp protocol but not in the
two-phase locking protocol is:
step T0 T1 T2
1 write(A)
2 write(A)
3 write(A)
4 write(B)
5 write(B)
This schedule cannot have lock instructions added to make it legal under
two-phase locking protocol because T1 must unlock (A) between steps 2
and 3, and must lock (B) between steps 4 and 5.
6.8 The wait() statement in all Java program examples was part of a while
loop. Explain why you would always need to use a while statement
when using wait() and why you would never use an if statement.
Answer: This is an important issue to emphasize! Java only provides
anonymous notiﬁcation—you cannot notify a certain thread that a cer-

22.
20 Chapter 6 Process Synchronization
tain condition is true. When a thread is notiﬁed, it is its responsibility
to re-check the condition that it is waiting for. If a thread did not re-
check the condition, it might have received the notiﬁcation without the
condition having been met.

23.
7
CHAPTER
Deadlocks
Exercises
7.1 List three examples of deadlocks that are not related to a computer-
system environment.
Answer:
• Two cars crossing a single-lane bridge from opposite directions.
• A person going down a ladder while another person is climbing up
the ladder.
• Two trains traveling toward each other on the same track.
• Two carpenters who must pound nails. There is a single hammer
and a single bucket of nails. Deadlock occurs if one carpenter has
the hammer and the other carpenter has the nails.
7.2 Suppose that a system is in an unsafe state. Show that it is possible for
the processes to complete their execution without entering a deadlock
state.
Answer: An unsafe state may not necessarily lead to deadlock, it just
means that we cannot guarantee that deadlock will not occur. Thus, it
is possible that a system in an unsafe state may still allow all processes
to complete without deadlock occurring. Consider the situation where
a system has 12 resources allocated among processes P0 , P1 , and P2 . The
resources are allocated according to the following policy:
Max Current Need
P0 10 5 5
P1 4 2 2
P2 9 3 6
21

24.
22 Chapter 7 Deadlocks
for (int i = 0; i < n; i++) {
// first find a thread that can finish
for (int j = 0; j < n; j++) {
if (!finish[j]) {
boolean temp = true;
for (int k = 0; k < m; k++) {
if (need[j][k] > work[k])
temp = false;
}
if (temp) { // if this thread can finish
finish[j] = true;
for (int x = 0; x < m; x++)
work[x] += work[j][x];
}
}
}
}
Figure 7.1 Banker’s algorithm safety algorithm.
Currently there are two resources available. This system is in an un-
safe state as process P1 could complete, thereby freeing a total of four
resources. But we cannot guarantee that processes P0 and P2 can com-
plete. However, it is possible that a process may release resources before
requesting any further. For example, process P2 could release a resource,
thereby increasing the total number of resources to ﬁve. This allows pro-
cess P0 to complete, which would free a total of nine resources, thereby
allowing process P2 to complete as well.
7.3 Prove that the safety algorithm presented in Section 7.5.3 requires an
order of m × n2 operations.
Answer:
Figure 7.1 provides Java code that implement the safety algorithm of
the banker’s algorithm (the complete implementation of the banker’s
algorithm is available with the source code download).
As can be seen, the nested outer loops—both of which loop through n
times—provide the n2 performance. Within these outer loops are two
sequential inner loops which loop m times. The big-oh of this algorithm
is therefore O(m × n2 ).
7.4 Consider a computer system that runs 5,000 jobs per month with no
deadlock-prevention or deadlock-avoidance scheme. Deadlocks occur
about twice per month, and the operator must terminate and rerun about
10 jobs per deadlock. Each job is worth about $2 (in CPU time), and the
jobs terminated tend to be about half-done when they are aborted.
A systems programmer has estimated that a deadlock-avoidance
algorithm (like the banker’s algorithm) could be installed in the system
with an increase in the average execution time per job of about 10 percent.
Since the machine currently has 30-percent idle time, all 5,000 jobs per
month could still be run, although turnaround time would increase by
about 20 percent on average.

25.
Exercises 23
a. What are the arguments for installing the deadlock-avoidance
algorithm?
b. What are the arguments against installing the deadlock-avoidance
algorithm?
Answer: An argument for installing deadlock avoidance in the system
is that we could ensure deadlock would never occur. In addition, despite
the increase in turnaround time, all 5,000 jobs could still run.
An argument against installing deadlock avoidance software is that
deadlocks occur infrequently and they cost little when they do occur.
7.5 Can a system detect that some of its processes are starving? If you answer
“yes,” explain how it can. If you answer “no,” explain how the system
can deal with the starvation problem.
Answer: Starvation is a difﬁcult topic to deﬁne as it may mean different
things for different systems. For the purposes of this question, we will
deﬁne starvation as the situation whereby a process must wait beyond
a reasonable period of time —perhaps indeﬁnitely—before receiving a
requested resource. One way of detecting starvation would be to ﬁrst
identify a period of time — T —that is considered unreasonable. When a
process requests a resource, a timer is started. If the elapsed time exceeds
T, then the process is considered to be starved.
One strategy for dealing with starvation would be to adopt a policy
where resources are assigned only to the process that has been waiting
the longest. For example, if process Pa has been waiting longer for re-
source X than process Pb , the request from process Pb would be deferred
until process Pa ’s request has been satisﬁed.
Another strategy would be less strict than what was just mentioned. In
this scenario, a resource might be granted to a process that has waited less
than another process, providing that the other process is not starving.
However, if another process is considered to be starving, its request
would be satisﬁed ﬁrst.
7.6 Consider the following resource-allocation policy. Requests and releases
for resources are allowed at any time. If a request for resources cannot
be satisﬁed because the resources are not available, then we check any
processes that are blocked, waiting for resources. If they have the desired
resources, then these resources are taken away from them and are given
to the requesting process. The vector of resources for which the process
is waiting is increased to include the resources that were taken away.
For example, consider a system with three resource types and the
vector Available initialized to (4,2,2). If process P0 asks for (2,2,1), it gets
them. If P1 asks for (1,0,1), it gets them. Then, if P0 asks for (0,0,1), it
is blocked (resource not available). If P2 now asks for (2,0,0), it gets the
available one (1,0,0) and one that was allocated to P0 (since P0 is blocked).
P0 ’s Allocation vector goes down to (1,2,1) and its Need vector goes up to
(1,0,1).
a. Can deadlock occur? If you answer “yes”, give an example. If you
answer “no,” specify which necessary condition cannot occur.
b. Can indeﬁnite blocking occur? Explain your answer.

26.
24 Chapter 7 Deadlocks
Answer:
a. Deadlock cannot occur because preemption exists.
b. Yes. A process may never acquire all the resources it needs if they
are continuously preempted by a series of requests such as those
of process C.
7.7 Suppose that you have coded the deadlock-avoidance safety algorithm
and now have been asked to implement the deadlock-detection algo-
rithm. Can you do so by simply using the safety algorithm code and
redeﬁning Ma xi = Wa itingi + Alloca tioni , where Wa itingi is a vector
specifying the resources process i is waiting for, and Alloca tioni is as
deﬁned in Section 7.5? Explain your answer.
Answer:
Yes. The Max vector represents the maximum request a process may
make. When calculating the safety algorithm we use the Need matrix,
which represents Max — Allocation. Another way to think of this is Max
= Need + Allocation. According to the question, the Waiting matrix fulﬁlls
a role similar to the Need matrix, therefore Max = Waiting + Allocation.
7.8 Is it possible to have a deadlock involving only one single process?
Explain your answer.
Answer: No. This follows directly from the hold-and-wait condition.

27.
Memory
8
CHAPTER
Management
Exercises
8.1 Name two differences between logical and physical addresses.
Answer: A logical address does not refer to an actual existing address;
rather, it refers to an abstract address in an abstract address space. Con-
trast this with a physical address that refers to an actual physical address
in memory. A logical address is generated by the CPU and is translated
into a physical address by the memory management unit(MMU). There-
fore, physical addresses are generated by the MMU.
8.2 Consider a system in which a program can be separated into two parts:
code and data. The CPU knows whether it wants an instruction (in-
struction fetch) or data (data fetch or store). Therefore, two base–limit
register pairs are provided: one for instructions and one for data. The
instruction base–limit register pair is automatically read-only, so pro-
grams can be shared among different users. Discuss the advantages and
disadvantages of this scheme.
Answer: The major advantage of this scheme is that it is an effective
mechanism for code and data sharing. For example, only one copy of an
editor or a compiler needs to be kept in memory, and this code can be
shared by all processes needing access to the editor or compiler code.
Another advantage is protection of code against erroneous modiﬁcation.
The only disadvantage is that the code and data must be separated,
which is usually adhered to in a compiler-generated code.
8.3 Why are page sizes always powers of 2?
Answer: Recall that paging is implemented by breaking up an address
into a page and offset number. It is most efﬁcient to break the address
into X page bits and Y offset bits, rather than perform arithmetic on
the address to calculate the page number and offset. Because each bit
25

28.
26 Chapter 8 Memory Management
position represents a power of 2, splitting an address between bits results
in a page size that is a power of 2.
8.4 Consider a logical address space of eight pages of 1024 words each,
mapped onto a physical memory of 32 frames.
a. How many bits are there in the logical address?
b. How many bits are there in the physical address?
Answer:
a. Logical address: 13 bits
b. Physical address: 15 bits
8.5 What is the effect of allowing two entries in a page table to point to the
same page frame in memory? Explain how this effect could be used to
decrease the amount of time needed to copy a large amount of memory
from one place to another. What effect would updating some byte on the
one page have on the other page?
Answer: By allowing two entries in a page table to point to the same
page frame in memory, users can share code and data. If the code is reen-
trant, much memory space can be saved through the shared use of large
programs such as text editors, compilers, and database systems. “Copy-
ing” large amounts of memory could be effected by having different
page tables point to the same memory location.
However, sharing of nonreentrant code or data means that any user
having access to the code can modify it and these modiﬁcations would
be reﬂected in the other user’s “copy.”
8.6 Describe a mechanism by which one segment could belong to the address
space of two different processes.
Answer: Since segment tables are a collection of base–limit registers,
segments can be shared when entries in the segment table of two different
jobs point to the same physical location. The two segment tables must
have identical base pointers, and the shared segment number must be
the same in the two processes.
8.7 Sharing segments among processes without requiring the same segment
number is possible in a dynamically linked segmentation system.
a. Deﬁne a system that allows static linking and sharing of segments
without requiring that the segment numbers be the same.
b. Describe a paging scheme that allows pages to be shared without
requiring that the page numbers be the same.
Answer: Both of these problems reduce to a program being able to
reference both its own code and its data without knowing the segment or
page number associated with the address. MULTICS solved this problem
by associating four registers with each process. One register had the
address of the current program segment, another had a base address for
the stack, another had a base address for the global data, and so on. The
idea is that all references have to be indirect through a register that maps
to the current segment or page number. By changing these registers, the

29.
Exercises 27
same code can execute for different processes without the same page or
segment numbers.
8.8 In the IBM/370, memory protection is provided through the use of keys.
A key is a 4-bit quantity. Each 2K block of memory has a key (the storage
key) associated with it. The CPU also has a key (the protection key)
associated with it. A store operation is allowed only if both keys are
equal, or if either is zero. Which of the following memory-management
schemes could be used successfully with this hardware?
a. Bare machine
b. Single-user system
c. Multiprogramming with a ﬁxed number of processes
d. Multiprogramming with a variable number of processes
e. Paging
f. Segmentation
Answer:
a. Protection not necessary, set system key to 0.
b. Set system key to 0 when in supervisor mode.
c. Region sizes must be ﬁxed in increments of 2k bytes, allocate key
with memory blocks.
d. Same as above.
e. Frame sizes must be in increments of 2k bytes, allocate key with
pages.
f. Segment sizes must be in increments of 2k bytes, allocate key with
segments.

30.
Virtual
9
CHAPTER
Memory
Exercises
9.1 Under what circumstances do page faults occur? Describe the actions
taken by the operating system when a page fault occurs.
Answer: A page fault occurs when an access to a page that has not been
brought into main memory takes place. The operating system veriﬁes
the memory access, aborting the program if it is invalid. If it is valid, a
free frame is located and I/O is requested to read the needed page into
the free frame. Upon completion of I/O, the process table and page table
are updated and the instruction is restarted.
9.2 Assume that you have a page-reference string for a process with m
frames (initially all empty). The page-reference string has length p; n
distinct page numbers occur in it. Answer these questions for any page-
replacement algorithms:
a. What is a lower bound on the number of page faults?
b. What is an upper bound on the number of page faults?
Answer:
a. n
b. p
9.3 Which of the following programming techniques and structures are
“good” for a demand-paged environment ? Which are “not good”? Ex-
plain your answers.
a. Stack
b. Hashed symbol table
29

31.
30 Chapter 9 Virtual Memory
c. Sequential search
d. Binary search
e. Pure code
f. Vector operations
g. Indirection
Answer:
a. Stack—good.
b. Hashed symbol table —not good.
c. Sequential search—good.
d. Binary search—not good.
e. Pure code —good.
f. Vector operations—good.
g. Indirection—not good.
9.4 Consider the following page-replacement algorithms. Rank these al-
gorithms on a ﬁve-point scale from “bad” to “perfect” according to
their page-fault rate. Separate those algorithms that suffer from Belady’s
anomaly from those that do not.
a. LRU replacement
b. FIFO replacement
c. Optimal replacement
d. Second-chance replacement
Answer:
Rank Algorithm Suffer from Belady’s anomaly
1 Optimal no
2 LRU no
3 Second-chance yes
4 FIFO yes
9.5 When virtual memory is implemented in a computing system, there are
certain costs associated with the technique and certain beneﬁts. List the
costs and the beneﬁts. Is it possible for the costs to exceed the beneﬁts?
If it is, what measures can be taken to ensure that this does not happen?
Answer: The costs are additional hardware and slower access time. The
beneﬁts are good utilization of memory and larger logical address space
than physical address space.
9.6 An operating system supports a paged virtual memory, using a central
processor with a cycle time of 1 microsecond. It costs an additional 1
microsecond to access a page other than the current one. Pages have 1000

32.
Exercises 31
words, and the paging device is a drum that rotates at 3000 revolutions
per minute and transfers 1 million words per second. The following
statistical measurements were obtained from the system:
• 1 percent of all instructions executed accessed a page other than the
current page.
• Of the instructions that accessed another page, 80 percent accessed a
page already in memory.
• When a new page was required, the replaced page was modiﬁed 50
percent of the time.
Calculate the effective instruction time on this system, assuming that the
system is running one process only and that the processor is idle during
drum transfers.
Answer:
effective access time = 0.99 × (1 sec + 0.008 × (2 sec)
+ 0.002 × (10,000 sec + 1,000 sec)
+ 0.001 × (10,000 sec + 1,000 sec)
= (0.99 + 0.016 + 22.0 + 11.0) sec
= 34.0 sec
9.7 Consider the two-dimensional array A:
int A[][] = new int[100][100];
where A[0][0] is at location 200, in a paged memory system with pages
of size 200. A small process is in page 0 (locations 0 to 199) for ma-
nipulating the matrix; thus, every instruction fetch will be from page
0.
For three page frames, how many page faults are generated by the fol-
lowing array-initialization loops, using LRU replacement, and assuming
page frame 1 has the process in it, and the other two are initially empty?
a. for (int j = 0; j < 100; j++)
for (int i = 0; i < 100; i++)
A[i][j] = 0;
b. for (int i = 0; i < 100; i++)
for (int j = 0; j < 100; j++)
A[i][j] = 0;
Answer:
a. 50
b. 5,000
9.8 Consider the following page reference string:
1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6.

33.
32 Chapter 9 Virtual Memory
How many page faults would occur for the following replacement al-
gorithms, assuming one, two, three, four, ﬁve, six, or seven frames?
Remember all frames are initially empty, so your ﬁrst unique pages will
all cost one fault each.
• LRU replacement
• FIFO replacement
• Optimal replacement
Answer:
Number of frames LRU FIFO Optimal
1 20 20 20
2 18 18 15
3 15 16 11
4 10 14 8
5 8 10 7
6 7 10 7
7 7 7 7
9.9 Suppose that you want to use a paging algorithm that requires a refer-
ence bit (such as second-chance replacement or working-set model), but
the hardware does not provide one. Sketch how you could simulate a
reference bit even if one were not provided by the hardware, or explain
why it is not possible to do so. If it is possible, calculate what the cost
would be.
Answer: You can use the valid/invalid bit supported in hardware to
simulate the reference bit. Initially set the bit to invalid. On ﬁrst reference
a trap to the operating system is generated. The operating system will
set a software bit to 1 and reset the valid/invalid bit to valid.
9.10 You have devised a new page-replacement algorithm that you think may
be optimal. In some contorted test cases, Belady’s anomaly occurs. Is the
new algorithm optimal? Explain your answer.
Answer: No. An optimal algorithm will not suffer from Belady’s
anomaly because —by deﬁnition—an optimal algorithm replaces the
page that will not be used for the longest time. Belady’s anomaly occurs
when a page-replacement algorithm evicts a page that will be needed
in the immediate future. An optimal algorithm would not have selected
such a page.
9.11 Segmentation is similar to paging but uses variable-sized “pages.” De-
ﬁne two segment-replacement algorithms based on FIFO and LRU page-
replacement schemes. Remember that since segments are not the same
size, the segment that is chosen to be replaced may not be big enough
to leave enough consecutive locations for the needed segment. Consider
strategies for systems where segments cannot be relocated, and those
for systems where they can.
Answer:

34.
Exercises 33
a. FIFO. Find the ﬁrst segment large enough to accommodate the in-
coming segment. If relocation is not possible and no one segment
is large enough, select a combination of segments whose mem-
ories are contiguous, which are “closest to the ﬁrst of the list”
and which can accommodate the new segment. If relocation is
possible, rearrange the memory so that the ﬁrst N segments large
enough for the incoming segment are contiguous in memory. Add
any leftover space to the free-space list in both cases.
b. LRU. Select the segment that has not been used for the longest
period of time and that is large enough, adding any leftover space
to the free space list. If no one segment is large enough, select
a combination of the “oldest” segments that are contiguous in
memory (if relocation is not available) and that are large enough.
If relocation is available, rearrange the oldest N segments to be
contiguous in memory and replace those with the new segment.
9.12 Consider a demand-paged computer system where the degree of mul-
tiprogramming is currently ﬁxed at four. The system was recently mea-
sured to determine utilization of CPU and the paging disk. The results
are one of the following alternatives. For each case, what is happening?
Can the degree of multiprogramming be increased to increase the CPU
utilization? Is the paging helping?
a. CPU utilization 13 percent; disk utilization 97 percent
b. CPU utilization 87 percent; disk utilization 3 percent
c. CPU utilization 13 percent; disk utilization 3 percent
Answer:
a. Thrashing is occurring.
b. CPU utilization is sufﬁciently high to leave things alone, and in-
crease degree of multiprogramming.
c. Increase the degree of multiprogramming.
9.13 We have an operating system for a machine that uses base and limit
registers, but we have modiﬁed the machine to provide a page table.
Can the page tables be set up to simulate base and limit registers? How
can they be, or why can they not be?
Answer: The page table can be set up to simulate base and limit registers
provided that the memory is allocated in ﬁxed-size segments. In this
way, the base of a segment can be entered into the page table and the
valid/invalid bit used to indicate that portion of the segment as resident
in the memory. There will be some problem with internal fragmentation.

35.
File-System
10
CHAPTER
Interface
Exercises
10.1 Some systems automatically delete all user ﬁles when a user logs off or
a job terminates, unless the user explicitly requests that they be kept;
other systems keep all ﬁles unless the user explicitly deletes them.
Discuss the relative merits of each approach.
Answer: Deleting all ﬁles not speciﬁcally saved by the user has the
advantage of minimizing the ﬁle space needed for each user by not
saving unwanted or unnecessary ﬁles. Saving all ﬁles unless speciﬁcally
deleted is more secure for the user in that it is not possible to lose ﬁles
inadvertently by forgetting to save them.
10.2 Why do some systems keep track of the type of a ﬁle, while others leave
it to the user or simply do not implement multiple ﬁle types? Which
system is “better?”
Answer: Some systems allow different ﬁle operations based on the
type of the ﬁle (for instance, an ascii ﬁle can be read as a stream while a
database ﬁle can be read via an index to a block). Other systems leave
such interpretation of a ﬁle’s data to the process and provide no help in
accessing the data. The method that is “better” depends on the needs
of the processes on the system, and the demands the users place on the
operating system. If a system runs mostly database applications, it may
be more efﬁcient for the operating system to implement a database-
type ﬁle and provide operations, rather than making each program
implement the same thing (possibly in different ways). For general-
purpose systems it may be better to only implement basic ﬁle types to
keep the operating system size smaller and allow maximum freedom
to the processes on the system.
35

36.
36 Chapter 10 File-System Interface
10.3 Similarly, some systems support many types of structures for a ﬁle’s
data, while others simply support a stream of bytes. What are the
advantages and disadvantages?
Answer: An advantage of having the system support different ﬁle
structures is that the support comes from the system; individual ap-
plications are not required to provide the support. In addition, if the
system provides the support for different ﬁle structures, it can imple-
ment the support presumably more efﬁciently than an application.
The disadvantage of having the system provide support for deﬁned ﬁle
types is that it increases the size of the system. In addition, applications
that may require different ﬁle types other than what is provided by the
system may not be able to run on such systems.
An alternative strategy is for the operating system to deﬁne no support
for ﬁle structures and instead treat all ﬁles as a series of bytes. This is
the approach taken by UNIX systems. The advantage of this approach
is that it simpliﬁes the operating system support for ﬁle systems, as the
system no longer has to provide the structure for different ﬁle types.
Furthermore, it allows applications to deﬁne ﬁle structures, thereby al-
leviating the situation where a system may not provide a ﬁle deﬁnition
required for a speciﬁc application.
10.4 Could you simulate a multilevel directory structure with a single-level
directory structure in which arbitrarily long names can be used? If your
answer is yes, explain how you can do so, and contrast this scheme with
the multilevel directory scheme. If your answer is no, explain what
prevents your simulation’s success. How would your answer change
if ﬁle names were limited to seven characters?
Answer: If arbitrarily long names can be used then it is possible to
simulate a multilevel directory structure. This can be done, for example,
by using the character “.” to indicate the end of a subdirectory. Thus, for
example, the name jim.java.F1 speciﬁes that F1 is a ﬁle in subdirectory
java which in turn is in the root directory jim.
If ﬁle names were limited to seven characters, then the above scheme
could not be utilized and thus, in general, the answer is no. The next best
approach in this situation would be to use a speciﬁc ﬁle as a symbol
table (directory) to map arbitrarily long names (such as jim.java.F1)
into shorter arbitrary names (such as XX00743), which are then used
for actual ﬁle access.
10.5 Explain the purpose of the open() and close() operations.
Answer:
• The open() operation informs the system that the named ﬁle is
about to become active.
• The close() operation informs the system that the named ﬁle is
no longer in active use by the user who issued the close operation.
10.6 Give an example of an application in which data in a ﬁle should be
accessed in the following order:
a. Sequentially

37.
Exercises 37
b. Randomly
Answer:
a. Print the content of the ﬁle.
b. Print the content of record i. This record can be found using
hashing or index techniques.
10.7 In some systems, a subdirectory can be read and written by an autho-
rized user, just as ordinary ﬁles can be.
a. Describe the protection problems that could arise.
b. Suggest a scheme for dealing with each of the protection prob-
lems you named in part a.
Answer:
a. One piece of information kept in a directory entry is ﬁle location.
If a user could modify this location, then he could access other
ﬁles defeating the access-protection scheme.
b. Do not allow the user to directly write onto the subdirectory.
Rather, provide system operations to do so.
10.8 Consider a system that supports 5000 users. Suppose that you want to
allow 4990 of these users to be able to access one ﬁle.
a. How would you specify this protection scheme in UNIX?
b. Could you suggest another protection scheme that can be used
more effectively for this purpose than the scheme provided by
UNIX?
Answer:
a. There are two methods for achieving this:
1. Create an access control list with the names of all 4990
users.
2. Put these 4990 users in one group and set the group access
accordingly. This scheme cannot always be implemented
since user groups are restricted by the system.
b. The universal access to ﬁles applies to all users unless their name
appears in the access-control list with different access permis-
sion. With this scheme you simply put the names of the re-
maining ten users in the access control list but with no access
privileges allowed.
10.9 Researchers have suggested that, instead of having an access list associ-
ated with each ﬁle (specifying which users can access the ﬁle, and how),
we should have a user control list associated with each user (specifying
which ﬁles a user can access, and how). Discuss the relative merits of
these two schemes.
Answer:

38.
38 Chapter 10 File-System Interface
• File control list. Since the access control information is concentrated
in one single place, it is easier to change access control information
and this requires less space.
• User control list. This requires less overhead when opening a ﬁle.

39.
File-System
11
CHAPTER
Implementation
Exercises
11.1 Consider a ﬁle currently consisting of 100 blocks. Assume that the
ﬁle control block (and the index block, in the case of indexed alloca-
tion) is already in memory. Calculate how many disk I/O operations
are required for contiguous, linked, and indexed (single-level) alloca-
tion strategies, if, for one block, the following conditions hold. In the
contiguous-allocation case, assume that there is no room to grow in the
beginning, but there is room to grow in the end. Assume that the block
information to be added is stored in memory.
a. The block is added at the beginning.
b. The block is added in the middle.
c. The block is added at the end.
d. The block is removed from the beginning.
e. The block is removed from the middle.
f. The block is removed from the end.
Answer:
Contiguous Linked Indexed
a. 201 1 1
b. 101 52 1
c. 1 3 1
d. 198 1 0
e. 98 52 0
f. 0 100 0
39

40.
40 Chapter 11 File-System Implementation
11.2 What problems could occur if a system allowed a ﬁle system to be
mounted simultaneously at more than one location?
Answer: There would be multiple paths to the same ﬁle, which could
confuse users or encourage mistakes (deleting a ﬁle with one path
deletes the ﬁle in all the other paths).
11.3 Why must the bit map for ﬁle allocation be kept on mass storage, rather
than in main memory?
Answer: In case of system crash (memory failure) the free-space list
would not be lost as it would be if the bit map had been stored in main
memory.
11.4 Consider a system that supports the strategies of contiguous, linked,
and indexed allocation. What criteria should be used in deciding which
strategy is best utilized for a particular ﬁle?
Answer:
• Contiguous—if ﬁle is usually accessed sequentially, if ﬁle is
relatively small.
• Linked —if ﬁle is large and usually accessed sequentially.
• Indexed —if ﬁle is large and usually accessed randomly.
11.5 One problem with contiguous allocation is that the user must preallo-
cate enough space for each ﬁle. If the ﬁle grows to be larger than the
space allocated for it, special actions must be taken. One solution to
this problem is to deﬁne a ﬁle structure consisting of an initial con-
tiguous area (of a speciﬁed size). If this area is ﬁlled, the operating
system automatically deﬁnes an overﬂow area that is linked to the ini-
tial contiguous area. If the overﬂow area is ﬁlled, another overﬂow area
is allocated. Compare this implementation of a ﬁle with the standard
contiguous and linked implementations.
Answer: This method requires more overhead then the standard con-
tiguous allocation. It requires less overhead than the standard linked
allocation.
11.6 How do caches help improve performance? Why do systems not use
more or larger caches if they are so useful?
Answer: Caches allow components of differing speeds to communicate
more efﬁciently by storing data from the slower device, temporarily,
in a faster device (the cache). Caches are, almost by deﬁnition, more
expensive than the device they are caching for, so increasing the number
or size of caches would increase system cost.
11.7 Why is it advantageous for the user for an operating system to dynami-
cally allocate its internal tables? What are the penalties to the operating
system for doing so?
Answer: Dynamic tables allow more ﬂexibility in system use growth —
tables are never exceeded, avoiding artiﬁcial use limits. Unfortunately,
kernel structures and code are more complicated, so there is more
potential for bugs. The use of one resource can take away more system
resources (by growing to accommodate the requests) than with static
tables.

41.
Exercises 41
11.8 Explain how the VFS layer allows an operating system easily to support
multiple types of ﬁle systems.
Answer: VFS introduces a layer of indirection in the ﬁle system imple-
mentation. In many ways, it is similar to object-oriented programming
techniques. System calls can be made generically (independent of ﬁle
system type). Each ﬁle system type provides its function calls and data
structures to the VFS layer. A system call is translated into the proper
speciﬁc functions for the target ﬁle system at the VFS layer. The calling
program has no ﬁle-system-speciﬁc code, and the upper levels of the
system call structures likewise are ﬁle system-independent. The trans-
lation at the VFS layer turns these generic calls into ﬁle-system-speciﬁc
operations.

42.
Mass
Storage 12
CHAPTER
Structure
Exercises
12.1 The accelerating seek described in Exercise 12.3 is typical of hard-disk
drives. By contrast, ﬂoppy disks (and many hard disks manufactured
before the mid-1980s) typically seek at a ﬁxed rate. Suppose that the
disk in Exercise 12.3 has a constant-rate seek rather than a constant-
acceleration seek, so the seek time is of the form t = x + yL, where t
is the time in milliseconds and L is the seek distance. Suppose that the
time to seek to an adjacent cylinder is 1 millisecond, as before, and is
0.5 milliseconds for each additional cylinder.
a. Write an equation for this seek time as a function of the seek
distance.
b. Using the seek-time function from part a, calculate the total seek
time for each of the schedules in Exercise 12.2. Is your answer
the same as it was for Exercise 12.3(c)?
c. What is the percentage speedup of the fastest schedule over FCFS
in this case?
Answer:
a. t = 0.95 + 0.05L
b. FCFS 362.60; SSTF 95.80; SCAN 497.95; LOOK 174.50; C-SCAN 500.15;
(and C-LOOK 176.70). SSTF is still the winner, and LOOK is the
runner-up.
c. (362.60 − 95.80)/362.60 = 0.74 The percentage speedup of SSTF
over FCFS is 74%, with respect to the seek time. If we include the
overhead of rotational latency and data transfer, the percentage
speedup will be less.
43

43.
44 Chapter 12 Mass-Storage Structure
12.2 Is disk scheduling, other than FCFS scheduling, useful in a single-user
environment? Explain your answer.
Answer: In a single-user environment, the I/O queue usually is empty.
Requests generally arrive from a single process for one block or for a
sequence of consecutive blocks. In these cases, FCFS is an economical
method of disk scheduling. But LOOK is nearly as easy to program
and will give much better performance when multiple processes are
performing concurrent I/O, such as when a Web browser retrieves data
in the background while the operating system is paging and another
application is active in the foreground.
12.3 Explain why SSTF scheduling tends to favor middle cylinders over the
innermost and outermost cylinders.
Answer: The center of the disk is the location having the smallest
average distance to all other tracks. Thus the disk head tends to move
away from the edges of the disk. Here is another way to think of it. The
current location of the head divides the cylinders into two groups. If
the head is not in the center of the disk and a new request arrives, the
new request is more likely to be in the group that includes the center
of the disk; thus, the head is more likely to move in that direction.
12.4 Why is rotational latency usually not considered in disk scheduling?
How would you modify SSTF, SCAN, and C-SCAN to include latency
optimization?
Answer: Most disks do not export their rotational position information
to the host. Even if they did, the time for this information to reach the
scheduler would be subject to imprecision and the time consumed by
the scheduler is variable, so the rotational position information would
become incorrect. Further, the disk requests are usually given in terms
of logical block numbers, and the mapping between logical blocks and
physical locations is very complex.
12.5 How would use of a RAM disk affect your selection of a disk-scheduling
algorithm? What factors would you need to consider? Do the same
considerations apply to hard-disk scheduling, given that the ﬁle system
stores recently used blocks in a buffer cache in main memory?
Answer: Disk scheduling attempts to reduce the overhead time of
disk head positioning. Since a RAM disk has uniform access times,
scheduling is largely unnecessary. The comparison between RAM disk
and the main memory disk-cache has no implications for hard-disk
scheduling because we schedule only the buffer cache misses, not the
requests that ﬁnd their data in main memory.
12.6 Why is it important to balance ﬁle system I/O among the disks and
controllers on a system in a multitasking environment?
Answer: A system can perform only at the speed of its slowest bottle-
neck. Disks or disk controllers are frequently the bottleneck in modern
systems as their individual performance cannot keep up with that of
the CPU and system bus. By balancing I/O among disks and controllers,
neither an individual disk nor a controller is overwhelmed, so that
bottleneck is avoided.

44.
Exercises 45
12.7 What are the tradeoffs involved in rereading code pages from the ﬁle
system versus using swap space to store them?
Answer: If code pages are stored in swap space, they can be transferred
more quickly to main memory (because swap space allocation is tuned
for faster performance than general ﬁle system allocation). Using swap
space can require startup time if the pages are copied there at process
invocation rather than just being paged out to swap space on demand.
Also, more swap space must be allocated if it is used for both code and
data pages.
12.8 Is there any way to implement truly stable storage? Explain your an-
swer.
Answer: Truly stable storage would never lose data. The fundamental
technique for stable storage is to maintain multiple copies of the data,
so that if one copy is destroyed, some other copy is still available for
use. But for any scheme, we can imagine a large enough disaster that
all copies are destroyed.
12.9 The term “fast wide SCSI-II” denotes a SCSI bus that operates at a data
rate of 20 megabytes per second when it moves a packet of bytes be-
tween the host and a device. Suppose that a fast wide SCSI-II disk drive
spins at 7200 RPM, has a sector size of 512 bytes, and holds 160 sectors
per track.
a. Estimate the sustained transfer rate of this drive in megabytes
per second.
b. Suppose that the drive has 7000 cylinders, 20 tracks per cylinder,
a head switch time (from one platter to another) of 0.5 millisec-
ond, and an adjacent cylinder seek time of 2 milliseconds. Use
this additional information to give an accurate estimate of the
sustained transfer rate for a huge transfer.
c. Suppose that the average seek time for the drive is 8 milliseconds.
Estimate the I/Os per second and the effective transfer rate for
a random-access workload that reads individual sectors that are
scattered across the disk.
d. Calculate the random-access I/Os per second and transfer rate
for I/O sizes of 4 kilobytes, 8 kilobytes, and 64 kilobytes.
e. If multiple requests are in the queue, a scheduling algorithm such
as SCAN should be able to reduce the average seek distance. Sup-
pose that a random-access workload is reading 8-kilobyte pages,
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 of the drive.
Answer:
a. The disk spins 120 times per second, and each spin transfers a
track of 80 KB. Thus, the sustained transfer rate can be approxi-
mated as 9600 KB/s.