CS452 - Real-Time Programming - Spring 2009

Lecture 32 - History : The Transputer, Occam


First Generation

Assembly language on big computers

Second Generation

Transputer, Occam

Third Generation

Ada: A Third Generation Offshoot


Pretty easy. Two time primitives

You can build delay from delay until, but not vice versa.


An interrupt handler is a parameterless procedure, that can be attached (either statically, at compile time, or dynamically, at run-time) to the occurrence of an interrupt.


  1. How would you attach interrupts to hardware that varies from execution to execution?
    task body Int is
            accept Interrupt do
                // manipulate device
                SendServer( error, data )
            end Interrupt
         end loop
    end Int
  2. Where and how do interrupts get turned on?
  3. How does the device get initialized?

Notice how device-specific the above code is.

`The Ada programming language defines the semantics of interrupt handling as part of the tasking mechanism, making it possible to construct implementation-independent interrupt handlers. However, for the Ada mechanism to be effective, an implementation must provide support not specified by the Ada standard, such as for initializing hardware interrupting devices, handling unexpected interrupts and optimizing for real-time performance constraints. This paper analyses some of the constraints that efficient interrupt support places on an implementation. It develops a model for the interaction between interrupt hardware and Ada tasks and describes optimizations for Ada interrupt handlers. Implementation issues, including task priorities and task termination for interrupt handlers, are discussed in detail.' Real-time interrupt handling in Ada Jørgen Born Rasmussen, Bill Appelbe, Software Practice and Experience.

The Transputer: a Second Generation Offshoot

Use many co-operating, medium capability microCPUs to do a big job.

Problem is communication

Communication requires either

What about real-time?

The transputer was an early, now vanished, example of the latter

Occam 2

Basic idea

  1. processes (tasks)
  2. channels
  3. time

Combining processes

  1. sequential
  2. conditional
  3. looping
  4. parallel
  5. alternation


  1. input
    channel ? variable
  2. output
    channel ! value // the value of a variable or the result of an procedure
  3. input & output provide synchronization
  4. variant protocols are possible


The Result

You can write a type-safe server, BUT

Program structure is more static than is allowed in your system.

This might be a good thing.

Return to: