CSC 213, Fall 2006
:
Schedule : Discussion
Questions for 12/06
Discussion Questions
for 12/06
Distributed Synchronization: Transactions
- Would you explain transactions in class for us? (Nick)
- On
page 725, Nutt says that transactions "are useful in systems that are
susceptible to crash or in which the consequences of an unfortuitous
crash are catastrophic," because all of the commands in a transaction
"must be executed as if the commands were a single command."
However, these commands must still be executed sequentially, even if
they won't be interrupted by other commands, and if the server crashes
in the middle, some of these commands will have finished and others
will not have finished, and the data will still be inconsistent.
How are transactions more useful, as Nutt claims, in that situation
than simply executing commands as they arrive? (Heather)
19.1 OS Design Considerations
- Performance, trusted software, modularization, portability
- Pg.
773: Why is it so hard to write trusted assembly code that will execute
faster than trusted C code? Aren't they just two ways of accomplishing
the same thing, only we have more control when writing in assembly? If
C is so much better, why have any of the kernel written in assembly at
all? (Nick)
- When Nutt says that it is harder to write trusted
code in assembly language that executes faster than C code, does he
mean that what you need to do to prove assembly language is safe makes
it run slower? (Lorelei)
- Pg. 774: When you compile or recompile
your kernel, you can add support for something (say, a new filesystem)
as a module or as part of the kernel. Is this module considered trusted
software? If so, how is that security risk addressed? (Nick)
- [Portability]
How does the source code organization in Linux allow it to avoid using
indirect function calls? (pg 778) (Jonathan)
19.2 Monolithic Kernels
- Motivation?
- If
the monolithic kernel approach works best with a small, simple trusted
kernel, won't implementing OS functions outside this kernel require
them to interact with it, creating indirection and performance costs?
Is it just a matter of trading some performance for code that is more
reliable? (Lorelei)
19.3 Modular Organization
- Would Object-oriented OS be very different to use(users)? (Sheng)
- Could you explain why many CS people hate Ms Windows in terms of its design aspects mentioned in the book? (Sheng)
19.4 Extensible Nucleus/Microkernel
- Is
the "extensible nucleus" organization of Kernel code just a combination
of a base monolithic with modules added in? (pg 776) (Jonathan)
- I
getting confused by the definitions of "operating system" when Nutt
talks about the Mach OS. Specifically, Nutt uses this phrase to say
"the Mach microkernel is intended to ... support different operating
systems that have different policies" (786), but then goes on to
describe key features of Mach as it it were an OS in itself. I always
got the impression that OSes prized mechanism before policy, as the
later can be changed by the user. How can these definitions be
reconciled? (C.M.)
19.5 Layered OSes
- Does a layered architecture offer any opportunities to improve
performance that the other types of architectures don't? It seems like
it would only result in increased overhead for almost every call and is
mostly just a nice idea. (Heather)
19.6 Distributed OSes
- Does
implementing a Distributed Operating System require that all the
systems in the network be of the same type (e.g. all uniprocessors,
multiprocessors)? It seems that the achieving transparency would be
overly complex otherwise (p.798). (Angeline)
Janet
Davis (davisjan@cs.grinnell.edu)
Created December 5,
2006
Last revised December 5, 2006