Lecture 30

Midterm 2

   return exam
   go over answers and grading of each problem


Plan for the Rest of Today

   review of class
   overview of Sections 9.4 to 9.6 so you have an idea what they cover
   course evaluations and "lottery" for demo sign-ups


Class Summary

   application types  shared memory           distributed memory

   "systems"          atomic actions (2)      messages (7)
     multithreaded    critical sections (3)   RPC and rendezvous (8)
                      semaphores (4)          clients/servers (7, 8, 9.7)
                      monitors (5)

   "parallel"         spin locks (3)          messages/peers (7)
                      barriers (3)            manager/worker (9.1)
                      recursive/              heartbeat (9.2)
                        iterative (1, 3)      pipleline (9.3)
                      data parallel (3)
                      bag of tasks (3)

   other topics:
      implementations (10)
      scientific computing (11)
      parallel tools (12)
      decentralized computing (9.4-9.6)


Probes and Echoes -- Section 9.4

   used to disseminate and/or gather information
   probes:  disseminate info or request
   echoes:  gather information

   applications:  network topology problem; Web "crawlers"


Broadcast Algorithms -- Section 9.5

   used to disseminate information or to make decentralized decisions
   (broadcast also used in parallel computing)

   logical clocks and timestamps; ordering of events -- see below for details

   application:  Isis toolkit (used on Wall Street!)


Token Passing Algorithms -- Section 9.6

   used to convey permission:  e.g., token ring or replicated files

   or to detect termination:  e.g., of SR programs


Logical Clocks and Event Ordering

   goal:  total ordering of events

   needs:  software clocks and tiebreaker

   logical clocks -- count communication events
                     use timestamps (ts) in messages

      send --   ts = lc; lc++

      receive -- lc = max(lc, ts+1); lc++

   making decisions
      broadcast a message
      wait until have a later message from EVERY OTHER process

      now know you won't ever see an earlier message; hence if your
      broadcast is the oldest, you can act upon it

         use logical clocks for order
         use something like process ids to break ties