SI411 Operating
Systems
Fall AY07
6 Week Exam: During Class on Friday,
22 Sept 2006.
·
The 6-week exam is
closed book.
·
As per the course
policy, only non-programmable calculators may be used on the exam.
· The
exam will cover chapters 1, 2, 3, 4, 5, and 6 of the Silberschatz
text, and chapters 2, 15 and 16 of the Deitel text.
· The following exam objectives are intended to aid you in
your preparations for the course's examinations. However, the following are not considered to
be inclusive of all the testable material from this course. All assigned reading material, supplemental
handouts, class lectures, class discussions, homework, labs, programming
projects, and in-class problem-solving sessions are considered testable
material.
Introduction
to operating systems
- identify the activities the operating system must
deal with to support multitasking
- explain the benefits of
having an operating system supervises user processes.
- distinguish tightly coupled distributed systems from
loosely coupled distributed systems
- distinguish symmetric multiprocessor systems from
asymmetric multiprocessor systems
- determine the amount of
wasted CPU time given the amount of time an I/O or other operation takes,
and the amount of time the CPU is involved in the I/O operation.
Computer
system operation
- understand the role of the base and limits registers
in providing protection
- identify the storage structures of computer memory
- explain the concept of an interrupt driven operating
system
- explain protection mechanisms
that support the OS such as dual-mode, I/O, Memory, and CPU protection.
- describe why it is necessary for a CPU and I/O
operations to be overlapped
- describe interrupt driven data transfer
- describe DMA data transfer
- compare interrupt-driven and DMA driven data transfer
- apply knowledge of base and
limits registers to determine is a memory reference is within the portion
of memory allocated to a process.
OS
Structures
- understand the shared-memory form of communication
between processes
- understand the shared-memory form of communication
between processes
- understand the role of the
command-interpreter system with respect to the operating system and system
calls.
- list the five major
activities of an operating system with regard to process management.
- explain the approach to system structure taken by the
UNIX operating system
- explain the approach to system structure taken by the
MS-DOS operating system
- explain the approach to system structure taken by the
IBM VM operating system
- determine the communication
model being used between multiple processes.
- describe the role of volatility on memory management
- describe the resources needed for process management
- compare and contrast the approaches to system structure
taken by the MS-DOS, UNIX, and IBM VM operating systems.
- be able to compare and
contrast the shared-memory and message-passing models of inter-process
communication.
Processes
- understand the role of the UNIX system call fork() in
process creation
- understand the role of the short-term scheduler
- understand the role of the medium-term scheduler
- understand the role of the long-term scheduler
- understand the impact of
context-switching on the throughput of an operating system.
- understand the context of a process
- understand the characterization of a process as I/O bound.or CPU bound
- understand independent vs
cooperating processes
- understand how an operating
system impacts the progression of a process from creation to termination.
- explain the role of process scheduling queues
- explain the concept of process state
- explain the basic producer-consumer problem
- distinguish between bounded
and unbounded buffers.
- describe the role of process control blocks with
regard to a process
- describe the impact of the characterization of a
process as I/O bound or CPU bound on the scheduling of the process
- describe context switching
- describe a process
- be able to evaluate multiple processes to determine
if they are independent or cooperating
- be able to characterize a process as I/O bound or CPU
bound
Threads
- explain the resource needs of Solaris 2 kernel
threads, lightweight processes, and user-level threads
- explain the hybrid approach that Solaris 2 takes to
threads
- distinguish between physical concurrency and logical
concurrency
- distinguish between a process, a lightweight process
a heavyweight process and a thread
- describe the actions taken
by the thread library to context switch between user-level threads in
Solaris 2.
- describe the actions taken
by the kernel to context switch between kernel-level threads in Solaris 2.
- define a thread
- define a process
CPU Scheduling
- Understand
the role of CPU-I/O burst cycles with regard to short-term scheduling.
- Understand
the role of characterizing CPU bound or I/O bound jobs on CPU scheduling
- Understand
the criteria used to evaluate CPU scheduling algorithms.
- Understand
Multilevel queue scheduling, and multilevel feedback queue scheduling
- Understand
how the various CPU scheduling algorithms are applied
- Regarding
the process life cycle, explain the opportunities that exist for invoking
preemptive and/or non-preemptive scheduling
- Distinguish
between the various CPU scheduling algorithms.
- Describe
the various approaches for evaluating CPU scheduling algorithms
- Describe
the role of offered load on CPU scheduling
- Describe
preemptive CPU scheduling
- Describe
non-preemptive CPU scheduling
- Be
able to apply the CPU scheduling algorithms to a given set of arriving
process burst times.
- Analyze
a scheduling situation and be able to describe which scheduling algorithm
would be most appropriate to use.
- Analyze
a process's CPU-I/O burst cycle and characterize it as CPU Bound or I/O
bound
Java
Programming Language Issues
- understand the basic components of Java
- understand how Java threads can be made to
"share" a common structure such as an array
- understand how Java applications are executed
- understand how a Java thread transitions from one
state to another
- explain the rationale for "deprecating" a
Java method
- explain the
process/mechanisms through which Java programs can be written on a
computer architecture different from the architecture of the computer on
which the Java code is executed.
- explain how a Java thread is started
- explain how a Java thread is created
- distinguish between "extends" and
"implements" in the context of inheritance
- describe the states that a Java thread can be in
- describe the role of the
Java Virtual Machine.
- describe the mechanism's
that Java provides for thread synchronization.
- describe the byte-oriented nature of Java I/O
- describe communication between a Java thread and a
"main" Java application
- classify various models of inheritance
- be able to compare C++ exception handling with Java
exception handling