Title: CS100A Lecture 21 12 November 1998
1- CS100A Lecture 21 12 November 1998
- Prelim 3
- Tuesday evening, 17 November, 730--9PM
- Uris Auditorium
- Programming assignment 9
- a control program
- threads of execution
2Prelim 3 Coverage 1. You should KNOW linear
search (lecture 14, slide 4) binary search
(lecture 14, slides 5--9) selection sort
(lecture 15-17, slides 2--3) insertion sort
(lecture 15-17, slide 4) partition (lecture
15-17, slide 5-6 exponentiation (lecture
15-17, slide 17) For example. if we say What is
selection sort?, you state the problem, give the
loop invariant, and develop the loop. 2. One-and
two-dimensional arrays in Java. 3. Loops (and
invariants), especially those that use arrays 4.
Matlab --know the basics and be able to write
simple Matlab program segments. 5. Everything
that was on prelims 1 and 2 See (a) Slide 2 for
lecture 13 (15 October) (b) Slide 12 of lecture
8 (24 September)
3Real-time application Often software that is
running on a host computer, communicating with
several microprocessors, each of which senses
some physical property or controls a
device. Communicate through a fixed memory
location in the host, called a register. Program
Status word (psw) used to synchronize. E.g. Host
might do the following Set bit C of psw to
1 Wait for C to be set to 0 (by a
microprocessor) Read the register We simplify
communication using a method readValue.
4Your Assignment Simulating Cruise
Control Clock Ticking away The accelerator
Will be switched on and off by the program The
desired speed something you change by inputting
a value. The road grade something that you can
change by inputting a value. The current speed
maintained by your program. The main program
The host Behind the scenes, controlling the
other components.
5Threads of Execution Computer executes one
sequence of instructions at a time, so dont we
need 6 computers, one for each of the
components? We simulate the system using one
computer using threads of execution. The
computer alternates among these threads, giving
each some execution time, but so fast that it
looks to us like they are executing in
parallel. Clock Desired speed
real speed accelerator
6Thread of execution
havent public class SystemClock extend
Frame discussed implements runnable //
Class must have this method. It is called by
system // start execution of the thread public
void run( ) Sequence of instructions making up
the thread public class MainClass static
SystemClock c static Thread cThread static
public void main ( ) c new SystemClock(
) cThread new Thread(c) // Call method start
of cThread in turn, that method // will call
method run of c to start the thread
running cThread.start( ) ...
7- Synchronization
- Two threads may need to synchronize --pause
during execution until they are at appropriate
places. - Example The accelerator thread may want to wait
for the next clock tick (handled by thread
SystemClock) before proceeding. - c.wait wait for cs thread to execute a
notifyAll call - Within c execution of notifyAll( ) tells the
system that all threads who have executed c.wait
can now continue. - Property synchronized on a statement or method
within a class indicates that no other method or
field of this class can be executed while this
statement or method is being executed.
8Synchronization SystemClock c // Wait for next
tick of clock c static public void sleep ( )
synchronized(c) c.wait ( ) -------------
-------------------------- public class
SystemClock ( ) public void run ( ) // Each
iteration of the this loop sleeps for 5
seconds // notifies all waiting threads that
they can continue, // and adds 1 to the clock
counter while (true) Thread.currentThread (
).sleep(5000) synchronized(this) notifyAll(
) counter counter1