Service Manuals, User Guides, Schematic Diagrams or docs for : xerox mesa 4.0_1978 Mesa_4_Documentation Mesa_4.0_Change_Summary_May78

<< Back | Home

Most service manuals and schematics are PDF files, so You will need Adobre Acrobat Reader to view : Acrobat Download Some of the files are DjVu format. Readers and resources available here : DjVu Resources
For the compressed files, most common are zip and rar. Please, extract files with Your favorite compression software ( WinZip, WinRAR ... ) before viewing. If a document has multiple parts, You should download all, before extracting.
Good luck. Repair on Your own risk. Make sure You know what You are doing.




Image preview - the first page of the document
Mesa_4.0_Change_Summary_May78


>> Download Mesa_4.0_Change_Summary_May78 documenatation <<

Text preview - extract from the document
              Inter-Office Memorandum

    To        Mesa Users                                  Date           May 31, 1978


    From      Dave Redell. John Wick                      Location       Palo Alto


    Subject   Mesa 4.0 Change Summary                     Organization   SOD/SO


XEROX
    Filed on: [IRIS]OOC>SUMMARY40.BRAVO




    This memo outlines changes made in Mesa since the last release (October 17, 1977).

    References
    The following documents can be found on [IRIS]; all files are in Bravo format.
    Hardcopy is available through your support group; in addition. the PRESS files MESA40A,
    MESA40B, and MESA40C are a compilation of this material (about 75 pages).

              Mesa 4,0 Change Summary.     SUMMARY40.BRAVO

              Mesa 4.0 Compiler Update.    COMPILER40.BRAVO, ARITHMETIC40.BRAVO

              Mesa 4.0 Process Update.   PROCESS40.BRAVO

              Mesa 4.0 Binder Update.    BINOER40.BRAVO

              Mesa 4.0 System Update.    SYSTEM40.BRAVO

              Mesa 4.0 Microcode Update.    MICROCODE40.BRAVO

              Mesa 4.0 Debugger Update.    DEBUGGER40.BRAVO

    The section on processes is a preliminary draft of a new chapter of the Mesa Language
    Manual (which will be sent to the printer shortly); thanks are due to Dave Redell and the
    Pilot Functional Specification for contributing much of this material.

    The MESA)DOC directory also includes new versions of the Mesa System Documentation and
    the Mesa Debugger Documentation (the relevant PRESS files are SYSTEM 1, SYSTEM2, and
    DEBUGGER).


    Highlights

    The primary emphasis in this release has been on three areas: implementation of features
    required by Pilot and Dstar applications for effective use of the new machine architecture
    (processes. monitors, long pointers, etc.), reduction of overhead in the basic system structures
    and improved performance of the Mesa runtime environment (faster microcode, smaller
    global frames, more efficient memory management). and extension of the debugger's
    capabilities (primarily an interpreter for a subset of the Mesa language).
Mesa 4.0 Change Summary                                                                    2


The primary impact of Mesa 4.0 on existing systems is in the area of concurrent
programming. A brief intoduction to the new process mechanism appears below. It is
intended to present enough information to enable programmers to experiment with the new
features of the language and the runtime system. However, before attempting to revise or
redesign existing systems to use these facilities, programmers are urged to carefully examine
the material in the Mesa 4.0 Process Update and the Mesa System Documentation.

Warning: Because Pilot will be available soon, the Alto/Mesa operating system software
has not been revised and redesigned to fully exploit the capabilities of the new process
mechanism. In particular, arbitrary preemptive processes are not supported, and the
restrictions of Mesa 3.0 on processes running at interrupt level still apply.

A Brief Introduction to Processes in Mesa

Mesa 4.0 introduces three new facilities for concurrent programming:
       Processes, which provide the basic framework for concurrent programming.
       Monitors, which provide the fundamental interprocess synchronization facility.
       Condition variables, which build upon monitors to provide more flexible forms of
        interprocess synchronization.

As compared with the mechanisms provided in earlier releases of Mesa, the new concurrency
facilities are more extensive, and are much more thoroughly integrated into the language.
The purpose of the new facilities is to allow easy use of concurrency as a basic control
structure in Mesa programs. Concurrency can be an important consideration in progam
design, especially when input/output or user interactions may cause unpredictable delays.

Processes
For example, consider an application with a front-end routine providing interactive
composition and editing of input lines:

       ReadLine:     PROCEDURE [s: STRING] RETURNS [CARDINAL] =
            BEGIN
            c: CHARACTER;
            s.length +- 0;
            DO
               C +- ReadChar[];
               IF ControICharacter[c] THEN DoAction[c]
               ELSE AppendChar[s, c];
               IF c = CR THEN RETURN[s.length];
               ENDLOOP;
            END;

Thus, the call:

       n +- ReadUne[s];

would collect a line of user typing up to a CR and return it to the caller. Of course, the
caller cannot get anythi ng else accomplished during the type-in of the line. If there was
anything else that needed doing, it could be done concurrently with the type-in by forking
to ReadUne instead of calling it:
Mesa 4.0 Change Summary                                                                        3

       P +-   FORK     ReadLine[s];
       

       n +-   JOIN    P;

This would allow the statements labeled 
            ENDi
       PutChar: PUBUC ENTRY PROCEDURE [0: CHARACTER] =
            BEGIN
            
         ENDi
       END.

The keyword MONITOR confers upon the Keyboard module some special properties. The
most fundamental is the presence of entry procedures, identified by the keyword ENTRY.
These procedures have the property that calls on them are mutually exclusive; that is, a new
call cannot commence while any previous call is in progress. In effect, the monitor module
is made temporarily private to a single process, and any other processes wishing to use it are
delayed until the first process is finished. rn this example, the client's call to ReadChar and
the keyboard process' call to PutChar are guaranteed mutually exclusive access to the buffer.

Condition variables

As long as it finds some characters in the buffer, ReadChar as shown above will work
correctly without conflict over the buffer. If it finds the buffer empty. however. it cannot
Mesa 4.0 Change Summary                                                                     4


simply loop in the monitor waiting for a character to arrive; not only would this be
inefficient, but it would lock out the keyboard process from ever delivering the desired next
character! What is needed is some way for ReadChar to pause and release the mutual
exclusion temporarily until PutChar has delivered the next character. This facility is
provided by condition variables. Condition variables serve as the basic building blocks out
of which the programmer can fashion whatever generalized synchronization machinery
proves necessary in a given situation. For example, the Keyboard monitor can be modified
to use the WAIT and NOTIFY operations on condition variables as follows:

        Keyboard: MONITOR =
        BEGIN
        buffer: STRING;
        bufferNonEmpty: CONDITION;
        ReadChar: PUBLIC ENTRY PROCEDURE RETURNS [c: CHARACTER] =
          BEGIN
          WHILE (buffer empty> DO
            WAIT bufferNonEmpty
            ENDLOOP;
             C ... 
          END;
        PutChar: PUBLIC ENTRY PROCEDURE [c: CHARACTER]     =
          BEGIN
             
          NOTIFY bufferNonEmpty;
          END;
        END.

Note that the WAIT statement is embedded in a WHILE-loop which repeatedly tests for the
desired condition. This is the only recommended usage pattern for the WAIT statement. In
particular, it would have been incorrect to replace the loop above by:

        IF  THEN WAIT bufferNonEmpty;
        C ... 


This rule exemplifies a fundamental property of condition variables in Mesa: a condition
variable always corresponds to some Boolean expression describing a desired state of the
monitor data, and suggests that any interested process(es) might do well to reevaluate it. It
does not guarantee that the Boolean expression has become true, hence programmers should
never write programs (such as the fragment above) that implicitly assume the truth of the
desired condition upon awakening from a WAIT.

Priorities

The set of existing processes grows and shrinks dynamically as FORKS and JOINS occur. At
any given time, some of the processes are ready and compete for use of the processor. The
choice of which one to run is done on the basis of priority. A process starts life with the
priority of its parent (who executed the FORK), and may change its own priority by calling
SetPriority.

CAUTION: Use of mUltiple priorities in the Alto/Mesa implementation is severely
restricted. Any process running at other than the default priority (currently, 1) is forbidden
to use many of the standard runtime support features of the Mesa environment. In practice,
this means that non-standard priorities should be used only for interrupt handling, while all
Mesa 4.0 Change Summary                                                               5

"normal" processing takes place concurrently at the default priority level.

More general features

More complex situations will sometimes require more flexible use of the concurrency
facilities. Such use involves more complicated rules and syntactic constructs, which are
described in the Mesa 4.0 Process Update.



Distribution:
   Mesa Users
   Mesa Group



◦ Jabse Service Manual Search 2024 ◦ Jabse PravopisonTap.bg ◦ Other service manual resources online : FixyaeServiceinfo