SI411 Operating
Systems
Fall AY07
12 Week Exam: During Class on
Wednesday, 1 Nov 2006.
·
The 12 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 6,
and 7 of the Silberschatz text, and chapter 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.
================= 12 Week
Exam Objectives =================
CPU Scheduling (We covered some of
the below on the 6 week exam, but the 12 Week exam will cover these in
additional detail)
- Understand
the role of CPU-I/O burst cycles with regard to short-term scheduling.
- Analyze
a process's CPU-I/O burst cycle and characterize it as CPU Bound or I/O
bound
- Understand
the role of characterizing CPU bound or I/O bound jobs on CPU scheduling
- Describe
the role of offered load on CPU scheduling
- Describe
non-preemptive CPU scheduling
- Describe
preemptive CPU scheduling
- Regarding
the process life cycle, explain the opportunities that exist for invoking
preemptive and/or non-preemptive scheduling
- Understand
the criteria used to evaluate CPU scheduling algorithms.
- Distinguish
between the various CPU scheduling algorithms.
- Understand
how the various CPU scheduling algorithms are applied
- 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.
- Understand
Multilevel queue scheduling, and multilevel feedback queue scheduling
- Describe
the various approaches for evaluating CPU scheduling algorithms
Process synchronization
- Understand
critical data
- Describe
race conditions
- Describe
an atomic operation
- Understand
the significance of requiring an operation to be atomic in terms of
process synchronization.
- Evaluate
source code and identify critical data
- Understand
the critical-section problem
- Describe
the role of shared data in a solution to the critical section problem.
- Identify
the conditions that any algorithm that solves the critical section problem
must meet.
- Describe
the role of critical data in the critical section problem
- Given
an algorithm, be able to prove whether the algorithm represents a valid
solution to the critical section problem.
- Describe
the role of semaphores in solving the critical section problem
- Understand
the behavior of a semaphore wait operation
- Understand
the behavior of a semaphore signal operation
- Describe
the effect of various initial semaphore values
- Evaluate
a semaphore solution to an synchronization problem
- Identify
invalid uses of semaphore operations
- Be
capable of correctly using semaphores as a general synchronization tool
- Understand
deadlock and starvation in terms of semaphore use
- Understand
the dining philosophers problem
- Be
able to evaluate the suitability of a proposed solution to the dining
philosophers problem
- Understand
Dijsktra’s concept of safety in terms of the
dining philosophers problem
- Understand
Dijsktra’s concept of liveliness in terms of the
dining philosophers problem
Java
Programming Language Issues (12 week)
- Understand the role of the JVM in Java thread
scheduling
- Describe the actions resulting from messages passed
to threads, such as notify(), notifyAll(),
yield(), wait(), etc
- Identify Java thread priorities
- Understand how Java threads can change priority
- Understand how semaphores can be implemented in Java
- Understand synchronized methods and Java’s object
locks in terms of Dijkstra’s Monitor concept
- Be able to apply knowledge of object locks,
synchronized methods, entry sets and wait sets