32 *. SET STORAGE PROTECTION. *. 33 *. REQUEST TRACING OF PSW SWAPS. *. 34 *. TURN CONTROL TO USER PROGRAM AT LABEL USERN.
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978
526
ASSIST-V: An Environment Simulator for
IBM 360
Systems Software Development CHARLES E. HUGHES, MEMBER,
Abstract-This paper describes ASSIST-V, a software tool designed for use in the teaching of operating systems, fie management, and machine architecture courses. ASSIST-V is a program that provides an environment for the implementation, testing, and evaluation of systems software for the IBM 360 series machines. This capability is achieved by simulating all relevant aspects of the machine's architecture. In particular, ASSIST-V simulates interrupts, I/O channels, and I/O devices, as well as all IBM 360 machine instructions. In addition, ASSIST-V provides extensive debugging and statistics-gathering aids. Index Terms-Educational software, IBM 360/370, interrupt handling, I/O channel programming, operating systems, simulation, systems software.
1. 0 BJECTIVES
A LTHOUGH much can be learned through the reading of appropriate textbooks, programming experience is still necessary to complete the education of a systems programmer. For example, it is common practice to include the programming of several of the components of a compiler in a course on compiler construction. Unfortunately, a similar experience is rarely afforded in operating systems courses. Clearly, students should have the opportunity to write a small operating system. It is therefore important to develop student-oriented packages on which operating systems can be written. To be useful, any such package must present the student with an environment that includes all the relevant aspects of a computer's architecture. The characteristics of the machine and its I/O devices should closely resemble, or be the same as those of some widely available computer system. I/O devices that must be controlled by the student's system should include direct access as well as unit-record equipment. The package must be easy to use. It should provide debugging and performance evaluation aids. Finally, and of primary importance, it should be economical to use. II. RELATED WORK
IBM's VM/370 and CP/67 operating systems (see Goldberg [3]) provide each user of a S/370 and S/360-67, respectively, with an environment that gives the appearance of a dedicated machine (with the exception of imprecise values in the interval timer). In an installation where VM/370 or CP/67 is the chosen operating system, it is possible for students to write and test Manuscript received October 3, 1977; revised April 10, 1978. This work was supported by the National Science Foundation under Grant SER 76-14494. The authors are with the Department of Computer Science, University of Tennessee, Knoxville, TN 37916.
IEEE, AND
CHARLES P. PFLEEGER
their own operating systems without significantly degrading performance for other users of the machine. However, VM/370 and CP/67 are not student oriented. Although this situation is "real-life," we feel it is too harsh for the beginning student of operating systems. A number of software aids have been developed to provide students the opportunity to write and test operating system modules. These simulators may be divided into three groups. Programs in the first group, exemplified by Donovan [21 and Hughes and Walker [7] simulate the environment for some one or more operating system modules. A user writes the appropriate modules, links these with the simulator, and executes the resultant program. For example, an environment might be provided for a main memory allocation routine. In this case, the user's routine would be given commands to allocate and to deallocate varying amounts of memory. Experiments might then be formulated to compare first-fit to best-fit allocation using two separate user modules. Systems in this class have the advantages of being easy to learn and of allowing the use of a high-level language, usually PL/I or Fortran. Their main shortcoming is that they shield the user from the problems resulting from the occurrence of asynchronous events. In addition, users of these systems are not provided the opportunity to program I/O channels, nor to control the allocation of space on direct-access devices. The second group of systems is exemplified by Czarnick etal. [1] . Here a parallel processing language is used to simulate a hypothetical computer system. Hardware components of the computer, e.g., the program counter and main memory, are represented by variables and arrays. Students are given the assignment of writing operating system modules that administer the allocation of these mock hardware resources. The student modules are written in the parallel processing language and, therefore, may be executed simultaneously. For this reason, the variables and arrays representing hardware must be treated as critical resources. Thus the potential for synchronization problems arises in the use of systems in this second group. However, there are still two drawbacks to the use of such systems. First, the use of a hypothetical computer gives many students the feeling that the work being carried out is not applicable to real machines. Second, and more important, the isolation of operating systems modules from user modules obviates the need of the operating system to protect itself from users. This omits an important consideration in the design of operating systems. The third group of student-oriented systems includes one
0098-5589/78/1 100-0526$00.75 X 1978 IEEE
HUGHES AND PFLEEGER: ENVIRONMENT SIMULATOR
that was written at M.I T. (McCray [12] ,Madnick and Donovan [81, [91, and Donovan [21), another developed at The University of Tennessee (Stiles [14]), and ASSIST-V (Hughes and Pfleeger [4] -[6]), the simulator being described here. Each of these simulates the IBM 360 machine instructions, interrupt structure, and, in all but the Stiles system, a set of I/O channels and devices. The M.I.T. simulator is written in PL/I and requires input of a single-object module. The use of PL/I as the simulator's implementation language makes the code easy to read and maintain, but results in slow execution times and a large memory requirement (about 170K bytes plus user area). The input object module must be produced by some standard language processor (usually Waterloo's Assembler G). Assembly or compilation times for these standard (nonstudent-oriented) processors are often substantially greater than the times for student-oriented ones. Moreover, the error messages produced by standard processors are signiflcantly inferior to those generated by student systems. Since cost effectiveness and ease of use are among our primary objectives, we view the two features just mentioned as drawbacks. In addition, the M.I.T. system has two deficiencies that we wished to overcome in our project. These are the fact that it does not interpret all IBM 360 commands (omitted instructions include ED, EDMK, TRT, and the decimal and floating-point commands) and the fact that it does not simulate direct-access devices. The Stiles simulator is written in S/360 assembler language and requires input of a load module. As with the M.I.T. system, the student's operating system must be assembled (compiled) by some standard language processor. Use of a load module, instead of an object module, provides for additional flexibility since students can write parts of their systems in one language and other parts in another language. Thus, for example, the kernel of a system might be written in assembler language, and all other parts in Pascal or PL/I. The primary shortcomings of the Stiles simulator are the fact that it does not interpret all IBM 360 commands (omitted are the translate and edit commands) and, more importantly, it does not simulate I/O channels nor I/O devices. ASSIST-V, the simulator described in this paper, is written in S/360 assembler language and requires input of a S/360 assembler language program that represents the student's operating system. ASSIST-V is thus an assembler and a simulator. Its assembler (to be discussed in more detail in the next section) is student oriented. As a result, the student is never required to use a standard language translator. All IBM 360 commands, including the privileged operations, are interpreted by ASSIST-V. Direct-access devices (fixed and movable head), in addition to unit-record devices (card readers and line printers), are simulated. Extensive debugging and statisticsgathering facilities are provided. And, finally, I/O pseudocommands are available so that input and output can be performed without the need to know channel programming, if such a simplification is desired. Channel level I/O is, of course, available, and both channel level I/O and pseudocommands may be used in the same program. (A use of this latter case might be the printing of trace messages via pseudocommands in order to debug a set of channel-level programs.)
527
III. IMPLEMENTATION ENVIRONMENT The ASSIST-V simulator was written as a major extension to an existing program called ASSIST. ASSIST is a studentoriented assembler/interpreter for IBM 360-370 machines. It was designed and implemented by Dr. J. R. Mashey, Dr. G. M. Campbell, and Dr. C. P. Forney, all of The Pennsylvania State University (Mashey et al. [101, Mashey [11], and Overbeek and Singletary [13] ). The present version, maintained by the authors and distributed by The Pennsylvania State Uniyersity,1 is in use at over 200 universities in the United States and abroad. ASSIST is small (full-option version is about 68K bytes plus user area), and fast (300-statements/s assembly, 7300/statements/s execution on an IBM 360 model 65). It assembles all
IBM 360 instructions and interprets the execution of all nonprivileged instructions. It allows both user-written and system macros, as well as conditional assembly statements in the open code. It includes a number of student-oriented features, such as pseudooperations to read a card, print a line, and display the contents of registers or storage; monitoring of time and output; an extensive dump at program termination; techniques for conserving paper; and a selective, user-controlled crossreference listing. ASSIST-V is an extension to ASSIST. The assembler was preserved virtually intact, and extensive additions were made to the interpreter. Since the assembler was unchanged, no change to assembly speed has occurred; execution speed is approximately 4300 instructions/s on an IBM 360 model 65. A typical version of ASSIST-V (one card reader, one line printer, one disk, one drum) requires 74K bytes of storage plus user area.
IV. IBM 360 ARCHITECTURE OVERVIEW An operating system for the IBM 360 series machines establishes a nucleus of information in certain fixed storage locations. These locations are accessed by both hardware and software in order to handle exceptional conditions. An interuption is generated by hardware to note the occurrence of an event. There are five classes of interrupts; they are program (irregularity sensed with current instruction); supervisor (execution of supervisor call-svc-instruction); external (timer expiration or operator intervention demanded); I/O (exceptional condition in channel program execution, e.g., channel program end); or machine check (machine malfunction sensed). For each of the five types of interrupts, there are two storage locations reserved forprogram status words (PSW's). (The PSW specifies the address of the next instruction to be executed and the status of the central processing unit (CPU) during this execution.) In one of these, called the old PSW for the interrupt, the current PSW is stored and a code is placed there to identify the source of the interrupt. The other reserved storage location is called the new PSW for the interrupt; at the time of interrupt, the contents of this location are made the current PSW.
1Additional information on obtaining ASSIST is available from Pro-
gram Librarian, The Pennsylvania Sate University, 214 Computer Building, University Park, PA 16802.
528
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978
I/O activities are initiated by execution of the start I/O (SIO) privileged instruction. Upon execution of an SIO, the address of the channel program is taken from a fixed memory location, called the channel address word (CA W). At one or more times during execution of that program, the channel signals an I/O interrupt and stores the status of the program's execution in another fixed location called the channel status word (CSW). One word of storage (called the interval timer) is reserved for timing. The hardware automatically decrements the contents of this location by 1 every 13.020833. . . ,us (1/76800 s). Whenever the contents of the interval timer goes from zero to negative, an external interrupt occurs. During the loading of an operating system into an IBM 360, one storage location (at address 0) is reserved for the initial PSW. This identifies the address at which execution of the operating system is to begin and the initial status of the CPU. This location is called the initial program load PSW (IPL PSW). V. USING ASSIST-V A. An Overview In order to use ASSIST-V, a person writes an operating system to be tested. ASSIST-V assembles the program into an area of memory allocated for the simulated machine. The first 128 bytes of the user's program must contain data to initialize the fixed machine locations described in Fig. 1. The remainder of the user's program initializes the rest of the simulated machine's memory; the memory size of the simulated machine is the smallest multiple of 2K bytes greater than or equal to the size of the user's program. Protection keys are allocated for each 2K block; both store and fetch protection are simulated. Execution of an operating system under ASSIST-V commences with the IPL PSW being used to define the initial value of the current PSW. As ASSIST-V sequences through instructions, it checks for any program interruptions (e.g., address out of range, protection violation, illegal opcode). If any of these occurs, ASSIST-V simulates a program interupt by storing the current PSW at the program old PSW (location 40) and using the contents of the program new PSW (location 104) as the current PSW. Similarly, the execution of an SVC results in the PSW being placed at location 32, with the contents of location 96 becoming the current PSW. ASSIST-V presents a fault-free machine to the user, since hardware error diagnosis is outside the usual scope of operating systems study. For this reason, the machine-check old and new PSW's are unused. An interval timer is maintained in bytes 80-83. At the completion of execution of each instruction or I/O activity, the timer value is decremented by an amount representing the time of that execution. For the machine instructions, timings are used that approximate execution speed of an IBM 360 model 65. (Different timings may be achieved by modifying a single table within ASSIST-V.) For the I/O instructions, times have been calculated for the reading of a card, printing of a line, seeking of a direct-access track, searching for a record on a track, and reading or writing a record on a direct-access device. A timer (external) interrupt is generated each time the interval timer goes from zero to negative. (Normally, a user's operating system initializes the initial interval timer to -1 so that timer interrupts do not occur except as intended.)
Address 0 8 24 32 40 48 56 64 72 76 80 84 88 96 104 112 120
Length
doubleword 2 doublewords doubleword doubleword doubleword doubleword doubleword doubleword word word word word doubleword doubleword doubleword doubleword doubleword
Purpose
initial program PSW unused (IPL CCW's) external old PSW supervisor call old PSW program exception old PSW unused (machine check old PSW) input/output old PSW channel status word channel address word unused interval timer unused external new PSW supervisor call new PSW program exception new PSW unused (machine check new PSW) input/output new PSW
Fig. 1. ASSIST-V fixed memory location assignments.
Fig. 2 presents a sample program and the output produced when this program is assembled and executed by ASSIST-V. The program consists of an initialization and user section, along with an SVC, timer (external) and program interrupt handler. In addition to program, SVC, and external interrupts, ASSISTV simulates I/O interrupts. These arise from the simulation of channel program executions. A detailed description of this activity follows. B. I/O Device Simulation As noted before, one design constraint on ASSIST-V was that it simulate a variety of I/O devices of both unit-record and direct-access types. The current set of simulated devices is a card reader, a printer, a movable-head disk, and a fixedhead storage device. The device handling is all table driven, so that a device can be added or deleted with a change of only three source statements; similarly, a change in the characteristics of a device (e.g., size or speed) can be done easily. Students should appreciate the disparity in speeds between the CPU and I/O devices. Students used to running in a spooled, multiprogrammed environment tend to think of the reading of a card or the printing of a line as instantaneous. Timing of operations on the simulated reader and printer have been selected to match those of typical real devices. It is also valuable for students to experience the problems normally encountered only when dealing with large amounts of data or long running times. For example, one crucial problem in writing a file access system is to select a placement of data on the physical device so as to minimize the time required to move from one piece of data to a related one. Because of the size of devices, a student working on a real system is faced with this problem only when testing data sets of many items. This is so because small sets can be recorded in such close proximity on large devices that little or no physical movement is needed to access different items. In ASSIST-V the sizes and transfer rates of simulated devices have been reduced substantially from similar real devices, so that the student encounters this needed head movement with a relatively small amount of data (see Fig. 3). VI. PROGRAM AIDS ASSIST-V retains all of the program aids provided by the conventional ASSIST processor. At assembly time, these include an optional program listing that may be compressed (two statements per line) in order to conserve paper, an op-
529
HUGHES AND PFLEEGER: ENVIRONMENT SIMULATOR
OBJECT CODE
LOC
ADDRI
ADOR2
STMT SOURCE STATEMENT 2 ***** * * * * * * * * * * * * * * * * * * ***6*6* * * * * * * * PROGRAM TO ILLUSTRATE USE OF ASSIST-V FOR HANDLING INTERRUPTS * 3 * * 4 * THREE DIFFERENT INTERRUPTS ARE CAUSED: * 5 * FROM EXECUTION OF SUPERVISOR CALL INSTRUCTION SUPERVISOR * TIMER IN INTERVAL EXTERNAL - FROM EXPIRATION OF VALUE 6 * * 7 * PROGRAM - FROM PROTECTION EXCEPTION -
10 * THE FOLLOWING CONSTANTS INITIALIZE THE FIXED MEMORY LOCATIONS 11 * AS DESCRIBED IN FIGURE 1. 12 FIGURE2 START 0 13 USING *,0 DC X'00000000',A(INITIAL) BEGIN MACHINE RUN AT "INITIAL 14 IPLPSW SUPER. MODE, PERMIT EXT. INTS. UNUSED (IPL CCWS) 15 DS 2D 0 OLD PSW FOR EXTERNAL 16 EXTOLD DS FOR SUPERVISOR OLD PSW 17 SYCOLD DS D 0 OLD PSW FOR PROGRAM 18 PGMOLD DS UNUSED (MACHINE CHECK OLD PSWI D 19 DS UNUSED 11/0 OLD PSW D DS 20 UNUSED (CSW, CAW) 20 21 DS INTERVAL TIHER F'-1' 22 TIMER DC F UNUSED 23 DS INT. HANDLER NEW PSW 24 EXTNEW DC XOOOOOOOO',A(EXTHANDLI EXTERNAL X900000000',A(SVCHANOL) SUPERVISOR INT. HANDLER NEW PSW 25 SVCNEW DC INT. HANDLER NEW PSW 26 PGMNEW DC X00000000',A(PGMHANDLI PROGRAM UNUSED (MACHINE CHECK NEW PSWI 27 DS D UNUSED (I/O NEW PSWI 28 DS D
000000 000000
000000
000000000000008 10
000008 000018 000020 000028
000030 000038 000040
FFFFFFFF 000054 000058 0000000000000B10 000060 OOOOOOOOOOOOOOA 86 000068 OOOOOOOOOOOOOOC :0 000050
00007
000078
30 31 32 33
* * ***** * * * * INITIALIZATION SECTION * SET STORAGE PROTECTION REQUEST TRACING OF PSW SWAPS * 34 * TURN CONTROL TO USER PROGRAM AT LABEL * * * * * * * * * * 35 * * * * * * * * * * *
000080 4110 0030
00030
37 INITIAL
LA
1,B'00110000'
000084 4120 0800 000088 0812 OOOO8A 5820 OOCS 00008E 1800 000090 4110 OFFF 000094 0103 000096 8200 OOAO
00800
38
OOOC8
40 41 42 43
LA SSK
2.USER 1.2 2,.XL4'D0000000 0,0 1,USER+2047 3
OOOOAO
0000A8
OOOAO
013100000000080 '0 OBJECT CODE
LOC
OOFFF
ADDR1 ADDR2
5010 0050
('OOOAC 8200 0020
00050
39
44
L SR LA XOPC LPSW
46 USERPSW
DC
STMT 48 49 50 51 52 53
00020
54
OOOOCO
*** *** 6** *6
00005
4110 0005 OAOI 47FO 0806 5010 0050
*
* *
*
*
*
*
62
*
69 70 71 72 73 74 75 76 77 78 79
* * * * * * * *
*
*
*
*
*
*
USER
80
81 LOOP 82 SOC4 83
00806 00050
PROGRAM EXECUTION BEGINNING
-
*
*
ALLOW EXTERNAL INTERRUPTS
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
TIMPSW
*
+
**
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
MODE; TO
SAME PROT. KEY,
LABEL "SOC4"
*
*
GO BACK TO USER WITH NEW PSW
0D0'vX901310000l.AfS0C4)
DC
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* * * * * * * * * * * * * * * * * * * * * * *
ORG LA SVC B ST END
**
* *
*
CPU/CHO DISKIOI
*
o.0os CHI
0,02
*
*
*
16.62 0.O2
0.02 CPU/CH1 0 SEEKS,
1,5 I
1,TIMER
0
*
* *
* I
* *
* *
*
*
*
CAUSE SUPERVISOR INTERRUPT ENTER 1-INSTRUCTION LOOP TRY TO STORE IN DIFFERENT BLOCK
*
PROBLEM CH2 CPU/CH2
*
*
POSITION USER AT 2ND 2K BLOCK PUT VALUE 5 INTO REG. 1
FIGURE2*X'800'
89 BYTES/STMT
33408 FREE BYTES. AVERAGE:
PSW SWAP--CAUSESYVC INTv :OPSW 01310001 40000806 ;NPSW 00000000 000000A8 PSW SWAP-CAUSE*EXT INT. tOPSM 01310080 80000806 ;NPSW 00000000 00000080 PSM SWAP--CAUSE=PGN INT. :OPSW 01310004 8000060E INPSW 00000000 OOOOOOCO
CHO
*
USER TEST PROGRAM BEGIN USER PROGRAM AT SECOND 2K MEMORY -LOCK: ADDRESS 2048 CAUSE SUPERVISOR INTERRUPT, AFTER 5 HAS BEEN PLACED IN REG EXECUTE STATEMENT LABELLED "LOOPO REPEATEDLY UNTIL TIMER INTERRUPT OCCURS CAUSE SOC4 ERROR (PROTECTION) FROM ATTEMPT TO STORE IN 2K BLOCK HAVING DIFFERENT PROTECTION KEY
ANY OUTPUT BEFORE EXECUTION TIME MESSAGE IS PRODUCED BY USER PROGRAM
ASSIST-V FINAL STATISTICS *** 6 TIMER UNITS SIMULATED CLOCK TIME. CPU UTILIZATION: 100.02 SUPER BUSY
*6 *6*
*
PROT. KEY-3. PROBLEM MODE
***
CHANNEL UTILIZATION: PROCESSOR OVERLAP: DISK ARM MOVEMENT:
*
TRANSFER CONTROL TO USER
USERPSW
ERRORS WARNINGS, NO STATEMENTS FLAGGED - NO NO 576 HIGH, LEAVING 6976 LOW + DYNAMIC CORE AREA USED: 217 STATEMENTS/SEC *** ASSEMBLY TIME a 0.386 SECS,
TRACE-> TIME: 00000006 TRACE-)> TIME: 00000006
*
* PROGRAM INTERRUPT HANDLER, TERMINATE PROGRAM WITHOUT DUMP 63 * 64 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PSEUDO-OP TO STOP WITHUT DUMP 65 PGMHANDL XOPC 24 ORIGIN OF LITERAL POOL LTORG , 66 67 =XL4'00008000'
0118
TRACE--> TIMEs 00000000
USERN *
SOURCE STATEMENT * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SUPERVISOR CALL INTERRUPT HANDLER * STORE VALUE IN REG. 1 IN INTERVAL TIMER * AFTER CALL TO * RETURN CONTROL USER, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + TIMER VALUE (NOTE: STORE USER 1,TIMER SVCHANDL ST PROT KEY=O IN SVC NEW PSW) + RETURN TO POINT AFTER SVC WITH LPSW SVCOLD USER PSW: PROT KEY=39 PROB. MODE * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * EXTERNAL INTERRUPT HANDLER AT * USER AND RETURN TO LOOP BREAK USER'S INFINITE * * ADDRESS SOC40 *
61 TIMPSW
OOOCe 00008000
000800 000800 000804 000806 00080A
* *
*
+ ASSIGN USER PROT. KEY B'0011' (KEY 3, NO FETCH PROTECT) ADDRESS OF USER 2K MEMORY BLOCK SET MEMORY PROTECTION KEYS TRACE ALL PSW SWAPS BEGIN TRACE AT LOCATION 0 ENO TRACE AT END OF USER AREA COMMENCE TRACING
OD'O',X01310000',A4USERI
55 56 57 58 59 ** * * *** * 60 EXTHANDL LPSW
00088 000080 8200 00B8 000088 013100000000081 DA
+
83.3:
O.OS
0.02
CYLINDERS CROSSED
75 INSTRUCTIONS EXECUTED EXECUTION TIME 0.043 SECS. FIRST CARD NOT READ: NO CARDS READ:FILE UNOPENED
-
1744 INSTRUCTIONS/SEC
Fig. 2. Use of external, program, and supervisor interrupts.
**
***
**
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. SE-4, NO. 6, NOVEMBER 1978
530 Device IBM 2501-card reader simulated card reader IBM 1401 printer simulated printer
Size (characters) 80 80 132
132
Speed (units per minute) 600-1000 300 600-1000 approx. 300
(chars. per second) IBM 3330 disk
simulated disk IBM 2301 drum simulated drum
100,000,000
806,000
4,000,000
1,200,000
135,360
40,960
76,805
122,880
Fig. 3. Capacities of real and simulated devices.
tional cross-reference facility that distinguishes between store and fetch references, and intelligible diagnostics that are printed immediately following the erroneous statements. If a program being executed by ASSIST attempts to run for an excessive amount of time, or produce excessive output (lines and/or pages), an abnormal termination occurs. A trace of the last ten instructions and the last ten branches executed is produced. The contents of the current PSW, registers, and storage are printed. During program execution, a group of pseudooperations are interpreted by ASSIST. These include easy-to-use methods for I/O, register and storage dumping, and a set of diagnostic aids, such as checking for any modification to a given range of storage locations, and tracing or counting the execution of instructions from some specified range. ASSIST-V extends ASSIST to provide debugging aids of importance to writers of systems software. Tracing of a program's execution has been implemented with options such as tracing only those instructions executed while in supervisory mode, tracing channel commands, and tracing the occurrence of interrupts. Furthermore, new instructions exist to provide the current (simulated) system time, to simulate a console (external) interrupt after the execution of some user-specified number of instructions, and to terminate the simulation with or without a trace and dump. In addition to time or output excession, and user-requested terminations, ASSIST-V abnormally terminates a program if the CPU is in wait state with the internal timer negative and neither external nor I/O activity in progress. VII. EXPERIENCE ASSIST-V has been in use at The University of Tennessee since September 1976. During this time it has been used in machine organization courses, operating systems courses, senior honors projects, and master's theses. Projects completed have included operating systems and several direct-
access-file management systems. In addition to its use at Tennessee, ASSIST-V has been utilized at several other universities. Experience at these has demonstrated the system's stability. As a result, it has been made available to the current users of ASSIST. Those interested in acquiring a copy should contact either of the authors for further information. ACKNOWLEDGMENT The authors wish to thank J. Mashey of Bell Laboratories for having made our chore easier by the excellent documentation and program structure of ASSIST.
Development of ASSIST-V was carried out using the IBM 360 model 65 at The University of Tennessee Computing Center. Distribution is provided by The Pennsylvania State University Computation Center. REFERENCES [1] B. Czarnick et al., "A student project for an operating systems course," Computer Systems Research Group, Univ. of Toronto, CSRG-29, 1973. 121 J. Donovan, "Tools and philosophy for software education," Commun. Ass. Comput. Mach., vol. 19, pp. 430-436, Aug. 1976. [3] R. Goldberg, "Survey of virtual machine research," Comput., vol. 7, pp. 34-45, 1974. [41 C. Hughes and C. Pfleeger, "ASSIST-V: An environment simulator for IBM 360 systems software development," Comput. Sci. Dep., Univ. of Tennessee, CS-77-23, 1977. [5] -, "ASSIST-V user's guide," Comput. Sci. Dep., Univ. of Tennessee, CS-77-24, 1978. [6] --, "ASSIST-V PLM," Dep. Comput. Sci., Univ. of Tennessee, CS-77-25, 1978. [7] C. Hughes and J. Walker, "POPSS, A system for modeling and analyzing operating system resource allocation strategies," in Proc. 3rd Texas Conf. Computer Systems, 1974, pp. 3.6.1-3.6.8. [81 S. Madnick and J. Donovan, Operating Systems. New York: McGraw-Hill, 1974. [9] -,Software Projects. New York: McGraw-Hill, 1977. [10] J. Mashey, G. Campbell, and C. Forney, "ASSIST-A self-modifiable assembler for instructional purposes," in Proc. Ass. Comput. Mach., 1972, pp. 310-312. [11] J. Mashey, "Three years' experience with a student oriented assembler," SIGCSE Bull., vol. 5, pp. 157-165, Feb. 1973. [12] W. McCray, "SIM360: A S/360 Simulator," Mass. Inst. of Technol., Project Mac Tech. Memo. 30, 1972. [13] R. Overbeek and W. Singletary, "Assembler language with ASSIST," Palo Alto, SRA, 1976. [14] F. L. Stiles, personal communication.
Charles E. Hughes (M'76) received the B.A. degree in mathematics from Northeastern University, Boston, MA, in 1966, and the M.S. and Ph.D. degrees in computer science, both from The Pennsylvania State University, University Park, in 1968 and 1970, respectively. He has
previously
held
positions
with the
Radio Corporation of America, Burlington, MA, The Pennsylvania State University, and
the National Bureau of Standards.
He is
currently Associate Professor and Associate Head of Computer Science at The University of Tennessee, Knoxville, a position he has held since 1974. His research interests include software engineering, operating systems, and computability theory. Dr. Hughes is a member of the Association for Computing Machinery, Phi Kappa Phi, Sigma Xi, and Upsilon Pi Epsilon.
Charles P. Pfleeger received the B.A. degree in mathematics from Ohio Wesleyan University, Delaware, OH, in 1970, and the Ph.D. degree in computer science from The Pennsylvania State University, University Park, in 1974. He is currently Assistant Professor of Computer Science at the Computer Science Department of The University of Tennessee, Knoxville, where he has been since 1974. He previously held positions at The Pennsylvania State University. His research interests are in operating systems, software engineering, and computational complexity. Dr. Pfleeger is a member of The Association for Computing Machinery, Phi Beta Kappa, Sigma Xi, and Upsilon Pi Epsilon.