solutions to the exercises
Chapter 1
1.1 In a multiprogramming and time-sharing environment, several users share the system
simultaneously. This situation can result in various security problems.
a. What are two such problems?
b. Can we ensure the same degree of security in a time-shared machine as in a dedicated machine?
Explain your answer.
Answer:
a. Stealing or copying one 痴 programs or data; using system resources (CPU, memory, disk space,
peripherals) without proper accounting.
b. Probably not, since any protection scheme devised by humans can inevitably be broken by a human,
and the more complex the scheme,
is to feel confident of its correct
implementation.
the more difficult
it
1.2 The issue of resource utilization shows up in different forms in different types of operating
systems. List what resources must be managed
carefully in the following settings:
connected to servers
a. Mainframe or minicomputer systems
c. Handheld computers
b. Workstations
Answer:
a. Mainframes:memory and CPU resources, storage, network bandwidth.
b. Workstations: memory and CPU resouces
c. Handheld computers: power consumption, memory resources.
1.3 Under what circumstances would a user be better off using a timesharing system rather than a PC
or single-user workstation?
Answer: When there are few other users, the task is large, and the hardware is fast, time-sharingmakes
sense. The full power of the system can be brought to bear on the user 痴 problem. The problemcan
be solved faster than on a personal computer. Another case occurs when lots of other users need
resources at the same time.
A personal computer is best when the job is small enough to be executed reasonably on it and when
performance is sufficient to execute the program to the user 痴 satisfaction.
1.4 Which of the functionalities listed below need to be supported by the operating system for the
following two settings: (a) handheld devices and (b) real-time systems.
a. Batch programming
b. Virtual memory
c. Time sharing
Answer: For real-time systems, the operating system needs to support virtual memory and time
sharing in a fair manner. For handheld systems,the operating system needs to provide virtual memory,
but does not need to provide time-sharing. Batch programming is not necessary in both settings.
1.5 Describe the differences between symmetric and asymmetric multiprocessing.What are three
advantages and one disadvantage of multiprocessor systems?
Answer: Symmetric multiprocessing treats all processors as equals, and I/O can be processed on any
CPU. Asymmetric multiprocessing has one master CPU and the remainder CPUs are slaves. The
master distributes tasks among the slaves, and I/O is usually done by the master only.
Multiprocessors can save money by not duplicating power supplies,housings, and peripherals. They
can execute programs more quickly and can have increased reliability. They are also more complex in
both hardware and software than uniprocessor systems.
1.6 How do clustered systems differ from multiprocessor systems? What is required for two machines
belonging to a cluster to cooperate to provide a highly available service?
Answer: Clustered systems are typically constructed by combining multiple computers into a single
system to perform a computational task distributed across the cluster. Multiprocessor systems on the
other hand could be a single physical entity comprising of multiple CPUs. A clustered system is less
tightly coupled than a multiprocessor system.Clustered systems communicate using messages, while
processors in a multiprocessor system could communicate using shared memory.
In order for twomachines to provide a highly available service, the state on the two machines should
be replicated and should be consistently updated. When one of the machines fail, the other could then
take-over the functionality of the failed machine.
1.7 Distinguish between the client-server and peer-to-peer models of distributed systems.
Answer: The client-server model firmly distinguishes the roles of the client and server. Under this
model, the client requests services that are provided by the server. The peer-to-peer model doesn 稚
have such strict roles. In fact, all nodes in the system are considered peers and thus may act as either
clients or servers
or both. A node may request a service from another peer, or the node may in fact
provide such a service to other peers in the system.
For example, let 痴 consider a system of nodes that share cooking recipes.Under the client-server
model, all recipes are stored with the server. If a client wishes to access a recipe, it must request the
recipe from the specified server. Using the peer-to-peer model, a peer node could ask other peer nodes
for the specified recipe. The node (or perhaps nodes) with the requested recipe could provide it to the
requesting node. Notice how each peer may act as both a client (i.e. it may request recipes) and as a
server (it may provide recipes.)
1.8 Consider a computing cluster consisting of twonodes running adatabase.Describe two ways in
which the cluster software can manage access to the data on the disk. Discuss the benefits and
disadvantages of each.
Answer: Consider the following two alternatives: asymmetric clustering and parallel clustering. With
asymmetric clustering, one host runs the database application with the other host simply monitoring it.
If the server fails, the monitoring host becomes the active server. This is appropriate for providing
redundancy. However, it does not utilize the potential processing power of both hosts. With parallel
clustering, the database application can run in parallel on both hosts. The difficulty implementing
parallel clusters is providing some form of distributed locking mechanism for files on the shared disk.
1.9 How are network computers different from traditional personal computers? Describe some usage
scenarios in which it is advantageous to use network computers.
Answer: A network computer relies on a centralized computer for most of its services. It can therefore
have a minimal operating system to manage its resources. A personal computer on the other hand has
to be capable of providing all of the required functionality in a standalonemanner without relying on a
centralized manner. Scenarios where administrative costs are high and where sharing leads to more
efficient use of resources are precisely those settings where network computers are preferred.
1.10 What is the purpose of interrupts? What are the differences between a trap and an interrupt? Can
traps be generated intentionally by a user program? If so, for what purpose?
Answer: An interrupt is a hardware-generated change-of-flow within the system. An interrupt handler
is summoned to deal with the cause of the interrupt; control is then returned to the interrupted context
and instruction. A trap is a software-generated interrupt. An interrupt can be used to signal the
completion of an I/O to obviate the need for device polling. A trap can be used to call operating
system routines or to catch arithmetic errors.
t h e
C P U 2 s
i n c r e a s i n g
d o e s
t h e
c o o r d i n a t e
t h e
d o e s
1.11 Direct memory access is used for high-speed I/O d e v i c e s
v o i d
a .
i c e
b .
o p e r a t i o n s
c .
g r a m s
the execution of the user programs? If so, describe what forms of interference are caused.
a r e
i s
p r o
the DMA controller is transferring data. Does this process interfere with
i n t e r f a c e
t r a n s f e r ?
k n o w
e x e c u t i o n
w i t h
c o m p l e t e ?
a l l o w e d
t h e m e m o r y
C P U
l e
w h i
i n
o r d e r
t o
a
t o
e x e c u t e
o t h e r
l o a d .
t h e
d e v
H o w
t o
H o w
T h e
C P U
t h e
C P U
w h e n
Answer: The CPU can initiate a DMA operation by writing values into special registers that can be
independently accessed by the device.The device initiates the corresponding operation once it receives
a command from the CPU. When the device is finished with its operation, it interrupts the CPU to
indicate the completion of the operation.
Both the device and the CPU can be accessing memory simultaneously.The memory controller
provides access to the memory bus in a fair manner to these two entities. A CPU might therefore be
unable to issue memory operations at peak speeds since it has to compete with the device in order to
obtain access to the memory bus.
1.12 Some computer systems do not provide a privileged mode of operation in hardware. Is it possible
to construct a secure operating system for these computer systems? Give arguments both that it is and
that it is not possible.
Answer: An operating system for a machine of this type would need to remain in control (or monitor
mode) at all times. This could be accomplished by two methods:
a. Software interpretation of all user programs (like some BASIC,Java, and LISP systems, for
example). The software interpreter would provide, in software, what the hardware does not provide.
b. Require meant that all programs be written in high-level languages so that all object code is
compiler-produced. The compiler would generate (either in-line or by function calls) the protection
checks that the hardware is missing.
1.13 Give two reasons why caches are useful.What problems do they solve? What problems do they
cause? If a cache can be made as large as the device for which it is caching (for instance, a cache as
large as a disk), why not make it that large and eliminate the device?
Answer: Caches are useful when two or more components need to exchange data, and the components
perform transfers at differing speeds.Caches solve the transfer problem by providing a buffer of
intermediate speed between the components. If the fast device finds the data it needs in the cache, it
need not wait for the slower device. The data in the cache must be kept consistent with the data in the
components. If a omponent has a data value change, and the datum is also in the cache, the cache must
also be updated. This is especially a problem on multiprocessor systemswhere more than one process
may be accessing a datum.Acomponent may be eliminated by an equal-sized cache, but only if: (a) the
cache and the component have equivalent state-saving capacity (that is,if the component retains its
data when electricity is removed, the cache must retain data as well), and (b) the cache is affordable,
because faster storage tends to be more expensive.
1.14 Discuss, with examples, how the problem of maintaining coherence of cached data manifests
itself in the following processing environments:
a. Single-processor systems
b. Multiprocessor systems
c. Distributed systems
Answer: In single-processor systems, the memory needs to be updated when a processor issues
updates to cached values. These updates can be performed immediately or in a lazy manner. In
amultiprocessor system,different processors might be caching the same memory location in its local
caches. When updates are made, the other cached locations need to be invalidated or updated. In
distributed systems, consistency of cached memory values is not an issue. However, consistency
problems might arise when a client caches file data.
1.15 Describe a mechanism for enforcing memory protection in order to prevent a program from
modifying the memory associated with other programs.
Answer: The processor could keep track of what locations are associated with each process and limit
access to locations that are outside of a program 痴 extent. Information regarding the extent of a
program 痴 memory could be maintained by using base and limits registers and by performing a
check for every memory access.
1.16 What network configuration would best suit the following environments?
a. A dormitory floor
b. A university campus
c. A state
d. A nation
Answer:
a. A dormitory floor - A LAN.
b. A university campus - A LAN, possible a WAN for very large campuses.
c. A state - AWAN.
d. A nation - A WAN.
1.17 Define the essential properties of the following types of operating systems:
a. Batch
b. Interactive
c. Time sharing
d. Real time
e. Network
f. Parallel
g. Distributed
h. Clustered
i. Handheld
Answer:
a. Batch. Jobs with similar needs are batched together and run through the computer as a group by an
operator or automatic job sequencer. Performance is increased by attempting to keep CPU and I/O
devices busy at all times through buffering, off-line operation, spooling, andmultiprogramming. Batch
is good for executing large jobs that need little interaction; it can be submitted and picked up later.
b. Interactive. This system is composed of many short transactions where the results of the next
transaction may be unpredictable. Response time needs to be short (seconds) since the user submits
and waits for the result.
c. Time sharing. This systems uses CPU scheduling and multiprogramming to provide economical
interactive use of a system. The CPU switches rapidly from one user to another. Instead of having a
job defined by spooled card images, each program reads its next control card from the terminal, and
output is normally printed immediately to the screen.
d. Real time. Often used in a dedicated application, this system reads information from sensors and
must respond within a fixed amount of time to ensure correct performance.
e. Network. Provides operating system features across a network such as file sharing.
f. SMP. Used in systems where there are multiple CPU 痴 each running the same copy of the
operating system.Communication takes place across the system bus.
g. Distributed.This system distributes computation among several physical processors. The processors
do not share memory or a clock. Instead, each processor has its own local memory. They communicate
with each other through various communication lines, such as a high-speed bus or local area network.
h. Clustered. A clustered system combines multiple computers into a single system to perform
computational task distributed across the cluster.
i. Handheld. A small computer system that performs simple tasks such as calendars, email, and web
browsing. Handheld systems differ from traditional desktop systemswith smallermemory and display
screens and slower processors.
1.18 What are the tradeoffs inherent in handheld computers?
Answer: Handheld computers are much smaller than traditional desktop PC 痴. This results in smaller
memory, smaller screens, and slower processing capabilities than a standard desktop PC. Because of
these limitations,most handhelds currently can perform only basic tasks such as calendars, email, and
simple word processing. However, due to their small size, they are quite portable and, when they are
equipped with wireless access, can provide remote access to electronic mail and the world wide web.
Chapter 2
2.1 The services and functions provided by an operating system can be divided into two main
categories. Briefly describe the two categories and discuss how they differ.
Answer: One class of services provided by an operating system is to enforce protection between
different processes running concurrently in the system. Processes are allowed to access only
thosememory locations that are associated with their address spaces. Also, processes are not allowed
to corrupt files associated with other users. A process is also not allowed to access devices directly
without operating system ntervention.
The second class of services provided by an operating system is to provide new functionality that is
not supported directly by the underlying hardware. Virtual memory and file systems are two such
examples of new services provided by an operating system.
2.2 List five services provided by an operating system that are designed to make it more convenient
for users to use the computer system. In what cases it would be impossible for user-level programs to
provide these services? Explain.
Answer:
?Program execution. The operating system loads the contents (or sections) of a file into memory and
begins its execution. A user-level program could not be trusted to properly allocate CPU time.
?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-specific commands. User-level programs cannot be
trusted to only access devices they should have access to and to only access them when they are
otherwise unused.
?File-system manipulation. There are many details in file creation, deletion, allocation, and naming
that users should not have to perform. Blocks of disk space are used by files and must be tracked.
Deleting a file requires removing the name file information and freeing the allocated blocks.
Protections must also be checked to assure proper file access. User programs could neither ensure
adherence to protection methods nor be trusted to allocate only free blocks and deallocate blocks on
file deletion.
?Communications. Message passing between systems requires messages be turned into packets of
information, sent
to the network 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.
?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, do 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.3 Describe three general methods for passing parameters to the operating system.
Answer:
a. Pass parameters in registers
b. Registers pass starting addresses of blocks of parameters
c. Parameters can be placed, or pushed, onto the stack by the program, and popped off the stack by the
operating system.
2.4 Describe how you could obtain a statistical profile of the amount of time spent by a program
executing different sections of its code.Discuss the importance of obtaining such a statistical profile.
Answer: One could issue periodic timer interrupts and monitor what instructions or what sections of
code are currently executing when the interrupts are delivered. A statistical profile of which pieces of
code were active should be consistent with the time spent by the program in different sections of its
code. Once such a statistical profile has been obtained, the programmer could optimize those sections
of code that are consuming more of the CPU resources.
2.5 What are the five major activities of an operating system in regard to file management?
Answer:
?The creation and deletion of files
?The creation and deletion of directories
?The support of primitives for manipulating files and directories
?The mapping of files onto secondary storage
?The backup of files on stable (nonvolatile) storage media
2.6 What are the advantages and disadvantages of using the same systemcall
manipulating both files and devices?
interface for
Answer: Each device can be accessed as though it was a file in the file system. Since most of the
kernel deals with devices through this file interface,it is relatively easy to add a new device driver by
implementing the hardware-specific code to support this abstract file interface. Therefore,this benefits
the development of both user program code, which can bewritten to access devices and files in the
samemanner, and device driver code, which can be written to support a well-defined API. The
disadvantage with using the same interface is that it might be difficult to capture the functionality of
certain devices within the context of the file access API,
thereby either resulting in a loss of
functionality or a loss of performance. Some of this could be overcome by the use of ioctl operation
that provides a general purpose interface for processes to invoke operations on devices.
2.7 What is the purpose of the command interpreter? Why is it usually separate from the kernel?
Would it be possible for the user to develop a new command interpreter using the system-call interface
provided by the operating system?
Answer: It reads commands from the user or from a file 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. An user should be able to develop a new command interpreter using
the system-call interface provided by the operating system. The command interpreter allows an user to
create and manage processes and also determine ways by which they communicate (such as through
pipes and files). As all of this functionality could be accessed by an user-level program using the
system calls, it should be possible for the user to develop a new command-line interpreter.
2.8 What are the two models of interprocess communication? What are the strengths and weaknesses
of the two approaches?
Answer: The two models of interprocess communication are message-passing model and the
shared-memory model.
2.9 Why is the separation of mechanism and policy desirable?
Answer: Mechanism and policymust be separate to ensure that systems are easy to modify. No two
system installations are the same, so each installation may want to tune the operating system to suit its
needs.With mechanism and policy separate, the policy may be changed at will while the mechanism
stays unchanged. This arrangement provides a more flexible system.
2.10 Why does Java provide the ability to call from a Java program native methods that are written in,
say, C or C++? Provide an example of a situation in which a native method is useful.
Answer: Java programs are intended to be platform I/O independent. Therefore, the language does not
provide access to most specific system resources such as reading fromI/O devices or ports. To perform
a system I/O specific operation, you must write it in a language that supports such features (such as C
or C++.) Keep in mind that a Java program that calls a native method written in another language will
no longer be architecture-neutral.
2.11 It is sometimes difficult to achieve a layered approach if two components of the operating system
are dependent on each other. Identify a scenario in which it is unclear how to layer two system
components that require tight coupling of their functionalities.
Answer: The virtual memory subsystem and the storage subsystem are typically tightly-coupled and
requires careful design in a layered system due to the following interactions. Many systems allow files
to be mapped into the virtual memory space of an executing process. On the other hand, the
virtualmemory subsystem typically uses the storage system to provide the backing store for pages that
do not currently reside in memory. Also, updates to the filesystem are sometimes buffered in physical
memory before it is flushed to disk, thereby requiring careful coordination of the usage of memory
between the virtual memory subsystem and the filesystem.
2.12 What is the main advantage of the microkernel approach to system design? How do user
programs and system services interact in amicrokernel architecture? What are the disadvantages of
using the microkernel approach?
Answer: Benefits 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. User
programs and system services interact
in a microkernel architecture by using interprocess
communication mechanisms such asmessaging. These messages are conveyed by the operating system.
The primary disadvantage of
the microkernel architecture are the overheads associated with
interprocess communication and the frequent use of the operating system 痴 messaging functions in
order to enable the user process and the system service to interact with each other.
2.13 In what ways is the modular kernel approach similar to the layered approach? In what ways does
it differ from the layered approach?
Answer: The modular kernel approach requires subsystems to interact with each other through
carefully constructed interfaces that are typically narrow (in terms of the functionality that is exposed
to external modules). The layered kernel approach is similar in that respect. However, the layered
kernel imposes a strict ordering of subsystems such that subsystems at the lower layers are not
allowed to invoke operations corresponding to the upper-layer subsystems. There are no such
restrictions in the modular-kernel approach, wherein modules are free to invoke each other without
any constraints.
2.14 What
architecture? What is the main advantage for a user?
is the main advantage for an operating-system designer of using a virtual-machine
Answer: The system is easy to debug, and security problems are easy to solve. Virtual machines also
provide a good platform for operating system research sincemany different operating systemsmay run
on one physical system.
2.15 Why is a just-in-time compiler useful for executing Java programs?
Answer: Java is an interpreted language. This means that the JVM interprets the bytecode instructions
one at a time. Typically,most interpreted environments are slower than running native binaries, for the
interpretation process requires converting each instruction into native machine code. A just-in-time
(JIT) compiler compiles the bytecode for a method into native machine code the first time the method
is encountered. This means that the Java program is essentially running as a native application(of
course, the conversion process of the JIT takes time as well
but not as much as bytecode interpretation.) Furthermore, the JIT caches compiled code so that it may
be reused the next time the method is encountered.A Java program that is run by a JIT rather than a
traditional interpreter typically runs much faster.
2.16 What is the relationship between a guest operating system and a host operating system in a
system like VMware? What factors need to be considered in choosing the host operating system?
Answer: A guest operating system provides its services by mapping them onto the functionality
provided by the host operating system. A key issue that needs to be considered in choosing the host
operating system is whether it is sufficiently general in terms of its system-call interface in order to be
able to support the functionality associated with the guest operating system.
2.17 The experimental Synthesis operating system has an assembler incorporatedwithin the kernel. To
optimize system-call performance, the kernel assembles routineswithin kernel space to minimize the
path that the system call must take through the kernel. This approach is the antithesis of the layered