November 1969 - Vol. 12 No. 11
Features
An interactive graphical display monitor in a batch-processing environment with remote entry
A graphic monitor program is described. It was developed at Carnegie-Mellon University for the CDC G21 computer, which is a general purpose, batch-processing system with remote entry. The existing G21 system and the graphics hardware are described. The graphic monitor is a resident auxiliary monitor which provides comprehensive managerial capability over the graphical system in response to commands from the human user. It also will respond to commands from a user program through a similar interface, where routine calls take the place of manual actions. Thus the human and program can interact on a symmetrical and equal basis through the medium of the graphic monitor.
The choices made in designing the graphic monitor, given the constraints of the existing hardware and computer system, are discussed.
The structure of the monitor program and the human and program interfaces are described. There is also a transient swapping version with a small resident part, and provision for swapped used submonitors.
Synchronization in a parallel-accessed data base
The following problem is considered: Given a data base which can be manipulated simultaneously by more than one process, what are the rules for synchronization which will maximize the amount of parallel activity allowed. It is assumed that the data base can be represented as a graph. An example of such a data base is a hierarchy of directories for an on-line file system. Methods for synchronization of processes are examined; their validity is discussed and their performance compared.
Performance monitoring in a time-sharing system
A software measurement facility which is part of a general purpose time-sharing system is described. The Data Collection Facility (DCF) has been implemented in the Michigan Terminal System (MTS) for the System/360 model 67. It exists for the purpose of monitoring operating system and user program behavior and performance. The overall structure of MTS is outlined in order to explain the implementation of the DCF. Events in the system are identified and recorded from within the supervisor, and dumped to magnetic tape by an auxiliary program for off-line processing. Events in user programs which are unrelated to system actions are recorded with a supervisor call. The time of occurrence of each event is accurately recorded, and data items are further identified by job and type. The overhead associated with data collection and its interference with normal jobs is carefully analyzed, and both are shown to be minimal. Several examples are given of information obtained with the facility and of applications in which it has been useful. Some general guidelines are offered for the construction of future monitoring programs.
A practical method for constructing LR (k) processors
A practical method for constructing LR(k) processors is developed. These processors are capable of recognizing and parsing an input during a single no-backup scan in a number of steps equal to the length of the input plus the number of steps in its derivation.
The technique presented here is based on the original method described by Knuth, but decreases both the effort required to construct the processor and the size of the processor produced. This procedure involves partitioning the given grammar into a number of smaller parts. If an LR(k) processor can be constructed for each part (using Knuth's algorithm) and if certain conditions relating these individual processors are satisfied, then an LR(k) processor for the entire grammar can be constructed for them. Using this procedure, an LR(1) parser for ALGOL has been obtained.
APAREL—A parse-request language
APAREL is described: this language is an extension to an algorithmic language (PL/I) that provides the pattern-matching capabilities normally found only in special purpose languages such as SNOBOL4 and TMG. This capability is provided through parse-requests stated in a BNF-like format. These parse-requests form their own programming language with special sequencing rules. Upon successfully completing a parse-request, an associated piece of PL/I code is executed. This code has available for use, as normal PL/I strings, the various pieces (at all levels) of the parse. It also has available, as normal PL/I variables, the information concerning which of the various alternatives were successful. Convenient facilities for multiple input-output streams, the initiation of sequences of parse-requests as a subroutine, and parse-time semantic checks are also included.
APAREL has proven convenient in building a powerful SYNTAX and FUNCTION macro system, an algebraic language preprocessor debugging system, an on-line command parser, a translator for Dataless Programming, and as a general string manipulator.