MCS-378 Homework 2, Fall 1999
Due: October 1, 1999
-
Windows NT Workstation versions 3.x and 4.0 both provide some
scheduling preference for the user's "foreground" application - the
application with the window that is currently "in focus" (i.e., the
window that would receive any keyboard input from the user). However,
the nature of this scheduling preference was changed in NT 4.0 versus
3.x. As background information, I'll summarize the scheduling
algorithm used in both versions of NT. (This description is
simplified, but gives the essential features.) The basic scheduling
algorithm is a preemptive multilevel queue, with one queue for each
priority level and round-robining among the processes at any one
priority level. Under normal circumstances, all a user's processes
will be at the same priority level (8, as it happens) and will use the
same time quantum for round-robining (normally 30 milliseconds). Of
course, a process may not run for its full time quantum - it can be
preempted by an arriving higher-priority process, in which case it
will get the remainder of its quantum when it resumes, or it can go
into a waiting state before the quantum is up, in which case it gets a
fresh quantum when it again becomes ready to run. With this
information as background, here is the difference between NT 3.x and
4.0: in 3.x, the foreground application gets boosted to a higher
priority level, whereas in 4.0 it instead gets double the normal time
quantum. (In 3.x it keeps the normal quantum and in 4.0 it keeps the
normal priority.) Explain what you would expect the user-visible
results of this difference to be, and why. How would the foreground
application behave differently? How would other (background)
applications behave differently?
-
-
Explain why the
notifyAll
in Figure 7.36, page 214, can
be safely changed to notify
.
-
Explain how the code in Figure 7.36, page 214, can
be changed to do fewer
notifyAll
(or notify
)
operations.
-
Explain how the code in Figures 7.35-7.37, pages 213-215, can
be changed to eliminate the
dbReading
instance variable.
-
Do exercise 8.8 from page 249. (If this isn't challenging
enough for you, you can do exercise 8.9 instead.)
Instructor: Max Hailperin