The Design of a Real-Time Operating System for Experimental Psychology KENNETH J
Total Page:16
File Type:pdf, Size:1020Kb
Behavior Research Methods & Instrumentation 1979. Vol. 11 (5).507-511 COMPUTER TECHNOLOGY The design of a real-time operating system for experimental psychology KENNETH J. BURKHARDT DepartmentofElectrical Engineering, RutgersUniversity. Piscataway, New Jersey 08854 This paper describes the structure of the operating system that was utilized in the imple mentation of the experimental programming language. PL/E. Although the system was originally designed to support programming of psychological experiments on a specific machine (Data General Nova), the operating system can be ported with a minimum of effort to other machines. This paper describes the internal algorithms and control structures used in the system and suggests how it can be moved to other computers. Given the ever decreasing cost of computer hardware, SOFTWARE REQUIREMENTS FOR it is becoming quite clear that the cost of implementing REAL-TIME SYSTEMS any application on a computer is greatly affected by the degree of effort required to develop system software. Software requirements for real-time applications In many small computer environments, system hardware such as experimental psychology must be examined at costs are often negligible when compared with software two levels: the level of the applications software and the costs. Thus, in order to minimize total system cost, level of the operating system software. At the applica it is necessary to utilize appropriate design aids for tions level, the problems of real-time programming are efficient software development. Although many such quite complex. The wide disparity between potential tools exist in conventional data processing and scientific applications makes even specification of a typical environments (for example, higher level languages such environment extremely difficult, if not impossible. as FORTRAN and COBOL), there are a limited number Conceptually, real-time programs require little more of tools available for real-time system design. complexity than conventional programs. The only This paper describes the structure of an operating constructs that have to be added to non-real-time system utilized in the implementation of an experi languages are capabilities for synchronization and mental language known as PL/E. PL/E is a loosely capabilities for controlling tasks as a function of time. defined higher level language that has been designed . From a practical standpoint, however, there is one to function as an aid in the implementation of real potentially large difference between conventional and time systems software. Its primary use has been in real-time programs. In real-time systems the applications applications associated with on-line experimental psy programmer must be concerned with operating systems chology. PL/E, however, has also been utilized in several concepts and timing considerations that are transparent commercial data base management systems. in non-real-time applications. This not only makes the This paper has four major sections. The first task of program validation more complex due to timing describes software requirements for real-time systems considerations, but it also makes the basic task of in general and justifies the development of a special programming more complex, in that the applications purpose operating system for psychology. The second programmer must be aware of system operations at a section briefly describes the features of PL/E and the lower level. run-time interpreter that supports the language. The At the operating systems level, the problems of third section describes the control structures and real-time software have been extensively investigated. algorithms utilized in the operating system. The final Brinch Hansen (1977), Wirth (1977), and others section describes requirements for moving the operating (Dijkstra, 1968; Hoare, 1974) have proposed and system to other computers. implemented a variety of higher level languages and other facilities for the design and construction of reliable Development of the PL/E system was supported by the and efficient real-time executives for both small and National Institute of Mental Health, Grant MH-21795, Earl large computers. Generally, these software tools include Hunt, principal investigator, and the National Institute of Education, Grant NIE-6-74-0104, Clifford Lunneborg, principal capabilities for controlling concurrent processes, investigator, to the University of Washington. John Palmer, interprocess communication, and general process Zelda Zabinsky, and Barry Yanoff were all instrumental in the synchronization. Unfortunately, many of these facilities implementation of the original system. are inadequately supported by the vendors of mini- and Copyright 1979 Psychonomic Society, Inc. 507 0005·7878/79/050507-05$00.75/0 508 BURKHARDT microcomputer systems. The greatest difficulty either pseudoinstructions (commands) or new data encountered in commercial operating systems is the types to the PL/E language without having to modify uncertainty of execution speed for many operations. existing software. New commands can be added to the This can seriously hinder the capability to control PL/E simply by adding the command name and informa psychological experiments, in which there is often a tion about its parameters to a system data me read by desire to control display intervals or measure subject the compiler at run-time. New data types or structures response times to within several milliseconds. Other can also be added to the system with relative ease. For problems often encountered in commercial systems example, structured data records (similar to COBAL or are difficulty in interfacing nonstandard hardware, PL/ 1) have been added to PL/E simply by modifying a limited scheduling capabilities, and lack of support for single systems routine and adding a new data-type appropriate higher level languages. definition command to the compiler. This paper describes a system that was designed to alleviate these problems. The primary emphasis is to The Operating System describe the structure and algorithms utilized in the To a large extent the system can be described as an operating system that supports the experimental operating system without an operating system. The programming language, PL/E. The operating system has only required element of the resident system is a 100 removed the majority of the problems associated with instruction kernel, the scheduler. The scheduler consists real-time programming from the applications program of two modules: the interrupt service routine and the mer and supports facilities to accurately estimate timing background scheduler, or interpreter. The interrupt requirements associated with various operations. service routine assigns priorities to the various devices and, on detection of interrupts, passes control to the The Applications Language appropriate device handlers. If after processing PL/E is an algebraic language designed originally for interrupts, the interrupt service routine determines human experimental psychology. The main features of that the system was previously idle, control is passed the language are the abilities to process a variety of dif to the background scheduler. ferent variable types, to control external apparatus (e.g., Before describing the actual operation of the experimental stations, CRTs, response keys, etc.), and to operating system in detail, it is useful to deflne the control a large number of subjects simultaneously. control structures utilized in its realization. Rather than being a systems programming language such Control structures. The control structures of a as MODULA (Wirth, 1977) or CONCURRENT PASCAL system are the basic data structures manipulated by (Brinch Hansen, 1977), PL/E is strictly an applications the operating system during execution of a program. level language, with virtually all timing control and The control structures define the status of individual other synchronization tasks performed by the under subject programs and the status of individual input lying operating system (for a more detailed description output (I/O) devices. The four basic structures utilized of the system, see Burkhardt, 1976, 1977; Palmer, in the PL/E system are semaphores, program status McCloud, & Loftus, 1978). vectors (PSV), doubly linked lists, and dope vectors. PL/E is not directly executed. It is an intermediately The flrst three structures are utilized internally by the interpreted language that is compiled before execution operating system and are totally transparent to user takes place interpretively under control of the run-time programs. Dope vectors are generated by the compiler system. The code generated by the compiler is in a and are utilized to pass user program variables to lower three-address prefix format. For example, I =X + Y is level routines. compiled as Semaphores. Semaphores are special integer variables proposed by Dijkstra (1968) as synchronizing flags to ADD be utilized in the allocation of resources. A semaphore @ X is associated with any device that can be simultaneously @ Y accessed by more than a single task (e.g., disk, console @ I TTY). A device is referenced internally by means of two basic operations: allocate (P) and release (V). The where ADD corresponds to an integer constant pointing implementation of the P and V operations is quite to an interpreter branch table, and X, Y, and I are similar to that proposed by Dijkstra (1968). Whenever pointers to descriptors of the appropriate variables. a task requires a device,