Work overview

Report 01 of 01

Full report

A process activity monitor for AOS/VS

R. A. Mckosky, S. W. Lindley, and J. S. Chapman · 1986

Contents

Report 01 of 01

  1. 01Full report
Text size
Work overview

Report 1 of 1

Full report

R. A. Mckosky, S. W. Lindley, and J. S. Chapman · about 28 minutes

Original page 1

NASA Technical Memorandum NASA TM-86535 A PROCESS ACTIVITY MONITOR FOR AOS/VS By R. A. McKosky, S. W. Lindley, and J. S. Chapman Management Systems Office Shuttle Projects Office January 1986 tHASA-Tfl-86535) A PROCESS AC2IVI7Y MOWITOB A03/HP" ? N86-19950 FOB AOS/VS (MAS A) 30 p HC NASA National Aeronauticsand Space Administration George C. Marshall Space Flight Center MSFC - Form 3190 (Rev. May 1983) 0 CSCL 09B Unclas G3/60 05511

Original page 1 of A process activity monitor for AOS/VS

Original page 2

ACCESSION NO. 3. RECIPIENT'S CATALOG NO. 1. REPORT NO. 2 GOVERNMENT NASA TM - 86535 4. TITLE AND SUBTITLE A Process Activity Monitor for AOS/VS 7. AUTHOR(S) TECHNICAL REPORT STANDARD TITLE PAGE 5 REPORT DATE January 1986 6. PERFORMING ORGANIZATION CODE 8. PERFORMING O R G A N I Z A T I O N R E P O R T tf R. A. McKosky,* S. W. Lindley,* and J. S. Chapman 9. PERFORMING ORGANIZATION NAME AND ADDRESS George C. Marshall Space Flight Center Marshall Space Flight Center, Alabama 35812 12 SPONSORING AGENCY NAME AND ADDRESS National Aeronautics and Space Administration Washington, B.C. 20546 15. SUPPLEMENTARY NOTES 10. WORK UNIT NO. 11. CONTRACT OR GRANT NO. 13. TYPE OF REPOR'i & PERIOD COVERED Technical Memorandum 14 SPONSORING AGENCY CODE Prepared by Management Systems Office, MSFC Shuttle Projects Office and *Rockwell International 16. ABSTRACT With the ever increasing concern for computer security, users of computer systems are becoming more sensitive to unauthorized access. One of the initial security concerns for the Shuttle Management Information System was the problem of users leaving their workstations unattended while still connected to the system. This common habit was a concern for two reasons: it ties up resources unnecessarily and it opens the way for unauthorized access to the system. The Data General MV/10000 does not come equipped with an automatic time-out option on interactive peripherals. The purpose of this memorandum is to describe a system which monitors process activity on the system and disconnects those users who show no activity for some time quantum. 17. KEV WORDS Elapsed Time, CPU. Process Activity, PID, Threshold, Process Termination 18. D I S T R I B U T I O N STATEMENT Unclassified — Unlimited 19 SECURITY CLASSIF. (ofthl»i»pem 20. SECURITY CLASSIF. (of thli p«g.) 21. NO. OF PAGES 22. PRICE Unclassified Unclassified 29 NTIS MSFC - Form 3292 (May 1969) For fale by National Technical Information Service. Springfield. Virginia 22161

Original page 2 of A process activity monitor for AOS/VS

Original page 3

TABLE OF CONTENTS I. INTRODUCTION II. SYSTEM DESCRIPTION III. PROBLEM OVERVIEW IV. SOLUTION OVERVIEW V. APPLICATIONS A. Process Activity Monitor B. Process Terminator VI. CONCLUSION, APPENDIX A . Page 1 1 1 2 3 3 3 fVECEDMB PAGE BLANK I9QT nLNED iii

Original page 3 of A process activity monitor for AOS/VS

Original page 4

LIST OF ILLUSTRATIONS Figure . Title Page 1. Process tree for OP 2. PIDACT screen 3. ERP log IV 2 4 5

Original page 4 of A process activity monitor for AOS/VS

Original page 5

TECHNICAL MEMORANDUM A PROCESS ACTIVITY MONITOR FOR AOS/VS I. INTRODUCTION Managers of computer systems are becoming increasingly aware of the necessity to guard against unauthorized access. A primary security concern for any system is an active terminal left unattended by the user. Some systems are equipped with an automatic time-out option. The Data General MV/10000, however, is not. When selecting the MV/10000 to drive the Shuttle Management Information System (SMIS) for the Marshall Space Flight Center's Shuttle Projects Office, analysts and managers agreed that a time-out feature would need to be incorporated into the system. Such a feature would decrease the chance of unauthorized access to the system and free limited system resources. It is the purpose of this memorandum to describe the process activity monitor and process terminator tasks developed for SMIS, by which users registering no CPU activity for some time quantum are disconnected from the system. II. SYSTEM DESCRIPTION The Data General ECLIPSE MV/10000 runs under Advanced Operating System/ Virtual Storage (AOS/VS), a multitasking, multiprogramming, demand-paged, virtual storage operating system. It can support users on a time-sharing basis, run batch jobs, or perform control applications on a real-time basis. The user communicates with AOS/VS from the console via Command Line Interpreter (CLI) commands. AOS/ VS is unique to 32-bit ECLIPSE MV computers, and has the capacity to run up to 256 processes at a time. The MV/10000 process tree begins with AOS/VS, designated as Process Identification number (PID) 0. AOS/VS assigns a PID to each other process. AOS/VS has two sons, PMGR, PID 1, and OP, PID 2. PMGR is the peripheral manager. OP is the "master process" because it is operable only from the master console. EXEC, a son of OP, runs as PID 3. All user processes and the printer queues are sons of EXEC. Most system processes are sons of OP. System processes include peripheral controllers, data base management systems, communication packages and Comprehensive Electronic Office (CEO) office automation software. Figure 1 shows a typical process tree for PID 2 (OP). III. PROBLEM OVERVIEW The goal was to develop a task to monitor CPU activity and terminate any inactive user process. During development it was decided to design two tasks which could run independently, the monitor, and the process terminator. The monitor would provide a quick and easy reference to system activity. The process terminator, when activated, would warn the user, then terminate the process after the threshold of inactivity had been passed.

Original page 5 of A process activity monitor for AOS/VS

Original page 6

OP 2 (OP:OP) 3 (OP:EXEC) 19 (OP:LPB) 20 (OP:LPE1) 21 (OP:LPE) 22 (OP:CON40) 32 (OP:CON89) 33 (OP:CON41) 114 (OP:CON57) 4 (OP:INFOS_II) 9 (OP: 009) 12 (OP:CORBWR) 13 (OP:CORBIW) 14 (OP.-CORCLN) 15 (OP:CORARH) 116 ( O P : N E T O P ) 24 (OP:X25_LMGR) 117 (OP:SVTA) 154 ( O P : R M A ) 157 ( O P : F T A ) :LOCK_CLI :UTIL:EXEC :UTIL:XLPT :UTIL:XLPT :UTIL:XLPT :UTIL:XLPT :UTIL:XLPT :UTIL:XLPT :UTIL:XLPT :INFOS:INFOS_II : LANG:ORACLE :IOR :LANG.-ORACLE:BWR :LANG:ORACLE:BIW :LANG:ORACLE:CLN :LANG:ORACLE:ARH :NET:NETOP :NET:X25_LMGR :NET:SVTA : N E T : R M A :NET:FTA Figure 1. Process tree for OP. However, three basic problems needed to be solved. First, a process was required by which only process trees with inactive terminal sons would be terminated. Second, the updates registered by the CEO clock indicate that the process tree of a CEO user is active, when, in fact, it is not. Therefore, it was necessary to determine the inactivity threshold and terminate only those processes below that limit. The third problem concerned exceptions to the rule, that is, certain users who for various reasons would never be terminated. IV. SOLUTION OVERVIEW The two tasks developed were PIDACT, the process monitor, and ERP, the process terminator. PIDACT provides a visual display of the status of each PID. ERP can be activated or deactivated at any time. If it is determined that a user is inactive, then the user is warned. After a specified number of warnings, the process tree is terminated. A "VIP Table" was developed to ensure that certain users are not subject to termination. Together PIDACT and ERP solve the three problems mentioned in the above section. To ensure that only inactive process trees are terminated, the process tree is traversed using the ?PSTAT system call. This traversal enables the task to find the terminal son and father process of the tree. Next, to ensure that inactive CEO processes are terminated, a threshold of CPU time was needed. This was determined by observing and testing of processes. It was found that active processes typically use more than five milliseconds of CPU time per block minute. For example, pressing a NEW LINE takes about 6 milliseconds. The VIP table, called VIP.DAT, which can be modified by a text editor, was designed to ensure that selected users are not terminated .

Original page 6 of A process activity monitor for AOS/VS

Original page 7

The remaining system calls needed for PIDACT and ERP are: 7SEND, used to send messages to an inactive PID; 7RUNTM, used to get the run time ticks of a process; 7GPRNM, used to get the program path name of a process; and 7GUNM, used to get the owner, username of the father process. ?TERM, used to terminate the process tree, is the only privileged system call, and requires Superprocess privileges. V. APPLICATIONS A. Process Activity Monitor The task which monitors system activity is called PIDACT. PIDACT divides processes into four groups: 1) Father process or OP 2) Active process 3) Inactive terminal son 4) Unassigned PID. These divisions allow the system manager to easily monitor system activity. On the screen, the father process or OP is displayed in normal video; active processes are blinking; inactive terminal sons are shown in reverse video; and the unassigned PIDS are shown as zeros. Figure 2 shows a typical PIDACT display. The PIDs and usernames of those users logged on are shown on the right. The numbers in square brackets are scales, and help locate a PID quickly. PIDACT updates the screen once a minute, and is date and time stamped. To execute PIDACT requires no special privileges. To illustrate how PIDACT works, the three process trees shown in Figure 2 shall be examined. First consider PID 44, a father process with an inactive terminal son process at PID 40. This process tree is subject to the process termination task, ERP. Now consider PID 102. PID 102 is a father process with a son process at 114, which is also a father process. PID 114 has two sons, at PID 116 and PID 32. Both son processes are active, therefore this process tree is active and would not be terminated by ERP. Lastly, consider PID 72. PID 72 is a father process with two sons, PID 73 and PID 78. PID 73 is active, PID 78 is an inactive terminal son. This process tree would be subject to termination. B. Process Terminator The task which terminates processes is called ERP. Approximately once every eight minutes PIDACT determines the CPU activity of all the processes on the system. If activity is below the threshold, the user is warned. If no significant activity is observed after two successive warnings, the process is terminated by ERP. Superprocess privileges are required to terminate the process. Upon warning a user or terminating a process, ERP records the action in a log. Figure 3 shows an example of an ERP log. The following is a list of criteria ERP uses to terminate a process:

Original page 7 of A process activity monitor for AOS/VS

Original page 8

rr; tn asi ?c* g 15 K3 c; ^ si ^m fej gy>r-t* ypj ^» —•- co oo era •—i e—4 co c^ era lo co co r^. r—* I—* r~^ H^ OO »i —^ tr» —i<^ r^» c^ n^ C7> C79 C=3 C=3 C=3 C=3 C=3 rf^f CO er» —t ~ » =5 c->i —T- Lrt r--^ c=s e=s «—i —• to C-l 00 c=a '—» e>j r^o C-J C-I C—I t—I co c=j oo crj «r»oo c=s (1) LTJ un •—« oo oo LTJ r~-. oo c—i e-vi n—i co i—. —<—T- '—' • en cj -=r ur> r^^ H O oo o i—« c—-i r*^,, ur> CT? «g^ —« r^ r^P j Lrj bc> CD c^-i CD oo <=» »—• h^j "* (M 1.0 —. r-. r«-> o-j LJ-J — rx r-«o cr> —> c—4r-"^ Lr> cc> oo '^-^ ^—• r~> ^" be cen r—-jen «•»• era co " ~ ~ - oo = oo oo co era r^ c^ op era C-Jto rjCT — •.—. «=r 01 LO —« I—. I • > —r- ex "~^ f-^7 ~ J f <^ O^7 ' * * r»-> ^! ri~ 0_ — C~-^ C^*' CC3 LT7 CO C C i CT7 OO -=T- <= CO CJ OO r--7 r- > —t- 'f i - era r<-3 T- ••»"' oo o~> •—• c>j r-^^ CT> 1.^7 •—• if) CJ—3 ^. •—i CD r^ o-> ^co cr-j •—• (=1 co cj oo -=t- c=i co -1 f^ CT7 0-3

Original page 8 of A process activity monitor for AOS/VS

Original page 9

PID: 36 1ST WARNING LINDLEY 13: 55 :06 02/25/85 PID: 39 1ST WARNING MCKOSKY 13: 55 :07 02/25/85 PID: 43 1ST WARNING WEAVER PID: 51 1ST WARNING ADAMS PID: 16 1ST WARNING CARTER PID: 46 1ST WARNING BUSH 13: 55 :07 02/25/85 13: 55 :07 02/25/85 13: 55 :07 02/25/85 14; 00 :09 02/25/85 PID: 36 2ND WARNING LINDLEY 00 :09 02/25/85 14: PID: 39 2ND WARNING MCKOSKY 00 :09 02/25/85 PID: 43 2ND WARNING WEAVER PID: 51 2ND WARNING ADAMS PID: 16 2ND WARNING CARTER PID: 103 1ST WARNING NAFUS PID: 90 1ST WARNING SHOTTS 14; 14; 00 ;09 02/25/85 14; 00 :09 02/25/85 14; 00 ;09 02/25/85 14: 00 :09 02/25/85 14; 00 :09 02/25/85 PID: 36 TERMINATION LINDLEY 05 02/25/85 14; PID: 39 TERMINATION MCKOSKY 14; 05 02/25/85 PID: 43 TERMINATION WEAVER PID: 51 TERMINATION ADAMS PID: 57 1ST WARNING SMITH 14; 05 02/25/85 14; 05 02/25/85 14; 05 02/25/85 Figure 3. ERP log. 1) Current CPU time < old CPU time + threshold 2) Current CPU time >= old CPU time 3) USERNAME not in VIP table 4) PID > 3 5) Program name < > OP 6) Father process resolves to EXEC. ERP was designed specifically to terminate processes based upon inactive leaf nodes in the process tree. Since CEO leaves an inactive CEO word processing (CEO_WP) when completing word processing yet not exiting the CEO control program (CEO~CP), the active CEO_CP will be terminated. This feature could be changed by modifying ERP or writing an additional task to monitor and terminate CEO_WP processes only. In addition, if a user initiates co-processes where they are "both leaf nodes in the process tree and only one is active, the process tree is terminated. If the user intends to have an inactive co-process as a leaf node, then he should request that the System Manager place his name in the VIP table. VI. CONCLUSION The PIDACT and ERP tasks are part of the SMIS security system. Though security is the primary consideration, the termination of idle processes also frees limited system resources: terminals, memory, and process capacity. The CPU utilization involved in running ERP is an average 0.2 percent. Each idle process utilizes an average of 0.2 percent. Therefore, for SMIS, the overhead for running ERP is well justified.

Original page 9 of A process activity monitor for AOS/VS

Original page 10

APPENDIX A COMMENT PIDACT - PID ACTIVITY MACRO WRITE [!ASCI I 214] WRITE TO END DISPLAY PERFORM A ^C^B WRITE STRING [JREAD press NEW LINE begin PID ACTIVITY DISPLAY] WIDE X/1=IGN/2=IGN PIDACT NORM WRITE [JASCII 214] COMMENT ?ROC_ERP COMMENT MACRO TO PROC UP THE SRP PID COMMENT TERMINATION PROCESS DEL/1=IGN/2=IGN SAVE.ERP.LOG REN/1=IGN/2=IGN ERP.LOG SAVE.ERP.LOG CRE ERP.LOG PROC/NOBL/INP=@NULL/OUT='3NULL/LIST=ERP.LOG/SUPERP ERP COMMENT WIDE COMMENT MACRO TO PUT DG 460 TERMINAL COMMENT INTO WIDE MODE CHAR/CPL=134 WRITE [JASCII 236 306 330 260 260 270 265] WRITE [JASCII 236 306 313] COMMENT NORM COMMENT MACRO TO PUT DG 460 TERMINAL INTO COMMENT 80 COLUMN MODE CHAR/CPL=80 WRITE [JASCII 236 306 330 260 260 264 277] WRITE [JASCII 236 306 312] PRECEDING PAGE BUNK NOT FILMED

Original page 10 of A process activity monitor for AOS/VS

Original page 11

c SUBROUTINE CURPOS (Nl, N2, IBLK) C I *** C THIS SUBROUTINE WILL PERFORM C CURSOR POSITIONING FOR THE C DATA GENERAL 410 AND 460 TERMINALS C WERE Nl IS THE ROW AND N2 IS THE COLUMN C C THE VALUE IBLK IS A FLAG WHICH INDICATES C THAT THE SCREEN IS TO BE ERASED BEFORE C THE CURSOR IS TO BE POSITIONED C C CALLING PROGRAM SHOULD OUTPUT AFTER CALL C IN THE FOLLOWING FORM: C FORMAT ('#', C THIS WILL SUPRESS THEN NEXT FORMAT FROM C OUTPUTTING A CR C CHARACTER Nl(4) INTEGER Nl, N2, ITMP1, ITMP2, IBLK, I C C N - ARRAY TO CONTAIN ASCII TERM. COMMANDS C Nl ROW C N2 - COLUMN C ITMP1 - INTERUM CALCULATION FOR ROW C ITMP2 - INTERUM CALCULATION FOR COLUMN C IBLK - ERASE SCREEN FLAG (1=YES) C I - LOCAL INDEX C C CHECK IF SCREEN IS TO BE BLANKED 1ST C IF (IBLK.EQ.1) THEN WRITE (, 101) 101 FORMAT (IX,'<036><106><105>') END IF C [ERASE SCREEN C PERFORM INITIAL CALCULATIONS C ITMP1=N1/16 ITMP2=N2/16 C !MOD 16 ROW !MOD 16 COLUMN C CALCULATE COLUMN POSITION C N(1)=CHAR(ITMP2+48) N(2)=CHAR(N2-(lTMP216)+48) C ICOLUMN 1ST ! IN TWO DIGITS C CALCULATE ROW POSITION C N(3)=CHAR(ITMPl+48) N(4)=CHAR(Nl-(ITMPl16)+48) C C OUTPUT THE POSITION C WRITE (*,102) (N(I),I=1,4) !ROW 2ND ! IN NEXT TWO DIGITS IOUTPUT THE FOUR CHAR 102 FORMAT (IX,'<036><106><120>',4A1,$) !SUPRESS CR C RETURN END

Original page 11 of A process activity monitor for AOS/VS

Original page 12

PROGRAM ERP C C WARNS AND THEN TERMINATES C INACTIVE PID'S C INTEGER4 ITIM(256), ICPU(256), IDIS(256) INTEGER4 ETIME, CPUTIM, IERR C DATA ITIM/256W DATA ICPU/2560/ DATA IDIS/2560/ C ! ELAPSED TIME ARRAY !CPU TIME ARRAY !PID ARRAY C SET PROGRAM LIMITS AND FLAGS C IMIN=8 IFIRST=0 IMINCPU=5*IMIN C !MINUTE UPDATE TIME UNITIALIZE FIRST LOOP FLAG !SET CPU MINIMUM CPU ACTIVITY C PERFORM FOR ALL POSSIBLE PIDS C 100 DO 1=1,256 C C GET ELAPSED TIME AND CPU TIME FOR C THE SELECTED PID C K=I CALL RUNTM (K, ETIME, CPUTIM, IERR) C C CHECK IF PID IS IN USE C IF (IERR.NE.O) THEN C C PID IS MOT IN USE C IDIS(I)=I ICPU(I)=0 ITIM(I)=0 C ELSE C !USE ACTUAL PID NO. IZERO OUT CPU TIME 'ZERO OUT ELAPS TIME C PID IS IN USE GET THE FATHER'S PID C WHICH IS CLOSEST TO OP.EXEC C K=I CALL PDAD (K, IDIS(I)) C IF (ICPU( I J-MMINCPU.LT. CPUTIM .OR. & CPUTIM.LT.ICPU(I) & ICPU(I).EQ.O) THEN C .OR. C A CHANGE IN CPU TIME HAS OCCURED C OR A NEW PROCESS HAS TAKEN THIS PID C OR THIS IS THE INITIAL RUN C UPDATE ELAPSED TIME, CPU TIME C AND DISPLAY FIELD C ITIM(I)=ETIME C ELSE C [UPDATE ELAPSED TIME C NO CHANGE IN CPU TIME C CHECK I? THIS PROCESS HAS ANY SONS

Original page 12 of A process activity monitor for AOS/VS

Original page 13

.•=I CALL PIDSOM U<, I?LG) c c IF N'C SCNS TH\N CHECK FOR c WARNING OR TERMINATION c IGNORE ANY PIDS WHICH RESOLVE LESS THAN 4 c IF (IFLG.EO..O .AND. I DIS ( I). GT . 3 ) THEN CALL LIMIT UDIS(I), ETIME, ITIM(I), IMIN) END IF c 2ND IF c 'UPDATE CPU TIME ICPU(I)=CPUTIM c END IF c END DO c IF (IFIRST.SQ.l) THEN c c SET UP TO DELAY 5 MIMUTSS c CALL MDELAY (IMIN) c END IF c SET INITIAL PASS DONE IFIRST=1 c c DO FOREVER c GOTO 100 END % INCLUDE "RUNTM.F77" % INCLUDE "PDAD.F77" %INCLUDE "PIDSON.F77" % INCLUDE "MDELAY.F77" % INCLUDE "UNAME.F77" %INCLUDE "TERM.F77" %INCLUDE "LIMIT.F77" % INCLUDE "SEND.F77" %INCLUDE "VIP.F77" %INCLUDE "TIMDAT.F77" 10

Original page 13 of A process activity monitor for AOS/VS

Original page 14

SUBROUTINE LIMIT (PID, ETIME, OTIME, MIN) C C DETERMINES THE WARNING OR TERMINATION C STATUS OF THE SELECTED PID C INTEGERM PID, ETIME, OTIME, DELTET, MIN INTEGER4 ILIMIT1, ILIMIT2, ILIMIT3 CHARACTER UNM32, TMDT18 C C INITIALIZE LIMIT VALUES C ILIMIT1=1MIN60 IHMIT2=2MIN60 ILIMIT3=3MIN*60 C C CALCULATE DELTA ELAPSED TIME C DELTET=ETIME-OTIME C C CHECK IF IN ACTION STATE C IF (DELTET.GT.ILIMIT1) THEN C C GET USERNAME OF PID C CALL UNAME (PID, UNM) C C CHECK IF THIS PID IS EXEMPT IFLG=0 CALL VIP (UNM, IFLG) IF (IFLG.EQ.O) THEN C C PID IS NOT EXEMPT C C IF (DELTET.GT.ILIMIT1 .AND. DELTET.LE.ILIMIT2) THEN C C ISSUE 1ST WARNING C CALL SEND (PID, 1) CALL TIMDAT (TMDT) WRITE (12, 101) PID, UNM(1:15), TMDT 1 1 101 FORMAT (IX, PID: ,13,' 1ST WARNING ',A15, 2X, A18) END IF C IF (DELTET.GT.ILIMIT2 .AND. DECTET.LE.ILIMIT3) THEN C C ISSUE 2ND WARNING C CALL SEND (PID, 2) CALL TIMDAT (TMDT) WRITE (12, 102) PID, UNM(1:15), TMDT 1 102 FORMAT (IX, PID:',13,' 2ND WARNING ',A15, 2X, A18) END IF C IF (DELTET.GT.ILIMIT3) THEN C C TERMINATE PROCESS C CALL SEND (PID, 3) T CALL TIMDAT ( MDT) WRITE (12, 1):) PID, l'NMii:15), TMDT 11

Original page 14 of A process activity monitor for AOS/VS

Original page 15

END IF C END IF C END IF C RETURN END r***********************************l SUBROUTINE MDELAY (MIN) C C THIS ROUTINE WILL DELAY THE SELECTED C NUMBER OF MINUTES BEFORE RESUMING THE PROCESS C INTEGER4 MIN C C SET UP TO DELAY 1 MINUTE C IPID=179 iWDELAY CALL IACO=100060*MIN JDELAY IN MILLISECONDS IAC1=0 !RESERVED IAC2=0 "RESERVED C C PERFORM WDELAY CALL TO C DELAY MIN MINUTES C IERR=ISYS (IPID, IACO, IAC1, IAC2) C RETURN END 12

Original page 15 of A process activity monitor for AOS/VS

Original page 16

• ** * ; SUBROUTINE PDAD (PIDIN, PIDOUT) C C THIS SUBROUTINE RETURNS THE HIGHEST PID C FATHER BELOW PID 3 IN PIDOUT C INTEGER4 ISYS, IAGO, IAC1, IAC2 INTEGER4 PIDIN, PIDOUT CHARACTER UNM*32 C C CHECK FOR A PID LOWER THAN 4 C IF (PIDIN.GT.3) THEN C C SET CALLIN PID NUMBER C IAC1=PIDIN C C FIND THE FATHER C DO WHILE (IAC1.GT.3) C I=IAC1 C C SET UP TO MAKE FATHER PROCESS CALL C IPID=87 !FATHER PROCESS CALL IACO=I !PID NO. IAC1=0 !RETURN FATHER PID IAC2=0 !RETURN LIST C C THIS CALL WILL RETURN THE FATHER'S C PID IN IAC1 C IERR=ISYS (IPID, IACO, IAC1, IAC2) C END DO C IF (IAC1.LT.3) THEN PIDOUT=IAC1 ELSE CALL UNAME(I, UNM) IF (UNM(1:3).EQ.'OP ') THEN PIDOUT=2 ELSE PIDOUT=I END IF END IF C ELSE C PIDOUT=PIDIN IF (PIDOUT.EQ.3) PIDOUT=2 C ENDIF C RETURN END 13

Original page 16 of A process activity monitor for AOS/VS

Original page 17

PROGRAM PIDACT c c DISPLAYS ACTIVE PID NUMBERS CONTINUOUSLY c ON SCREEN BASED UPON CPU TIME c INTEGER4 ITIM(256), ICPU(256), IDIS(256), USE(256) INTEGER4 ETIME, CPUTIM, IERR, CNT(4) CHARACTER MODE6(256), BLK2, REV2, DIM2, NRM4, NUL2 CHARACTER UNM32, TMDT18 c c INITIALIZE THE FOLLOWING ARRAYS c ICPU - CONTAINING LAST CPU TIME c ITIM - CONTAINING LAST ELAPSED TIME c IDIS - CONTAINS PID NUMBER IF ACTIVE c DATA CNT/40/ DATA ICPU/2560/, ITIM/2560/, IDIS/2560/, USE/2560/ c c SET PROGRAM LIMITS AND FLAGS c IMIN=1 !MINUTE UPDATE TIME IFIRST=0 !INITIALIZE FIRST LOOP FLAG IMINCPU=5IMIN !SET CPU MINIMUM CPU ACTIVITY c c INITIALIZE DISPLAY CHARACTERISTICS c N U L = ' < 0 0 0 > < 0 0 0 > ' .'NULL CHARACTERS BLK='<216xOOO>' [CHARACTER BLINK ON R E V = ' < 2 3 6 > < 3 0 4 > ' [REVERSE VIDIO D I M = ' < 2 3 4 > < 0 0 0 > ' [CHARACTER DIM ON N R M = ' < 2 1 7 > < 2 3 6 > < 3 0 5 > < 2 3 5 > ' !BLINK OFF/REVERSE OF/DIM OFF c c PUT UP FORM c CALL PIDFORM c c c PERFORM FOR ALL POSSIBLE PIDS c J100 DO 1=1,256 c c GET ELAPSED TIME AND CPU TIME FOR c THE SELECTED PID c K=J CALL RUNTM (K, ETIME, CPUTIM, IERR) c c CHECK IF PID IS IN USE c IF (IERR.NE.O) THEN c c PID IS NOT IN USE - SET DISPLAY TO c PID NO. AND SET MODE TO DIM c !USE ACTUAL PID NO. IDIS(I)=I !SET MODE TO DIM MODE(I)=NRM//DIM !CPU TIME ICPU(I)=0 !ELAPSED TIME ITIM(D=0 [DISPLAY PID IDIS(I)=0 [USER NAME ARRAY USE(I)=0 [UPDATE UNUSED CNT CMT(4)=CNT(4)+1 14

Original page 17 of A process activity monitor for AOS/VS

Original page 18

c C PID IS IN USE GET THE FATHER'S PID C WHICH IS CLOSEST TO OP.EXEC C K=I CALL PDAD (K, IDIS(D) USE(IDIS(I))=1 C [UPDATE FOR USER DISP IF (ICPU(I)-HMINCPU.LT.CPUTIM .OR. & CPUTIM.LT.ICPU(I) & ICPU(I).EQ.O) THEN C .OR. C A CHANGE IN CPU TIME HAS OCCURED C OR A NEW PROCESS HAS TAKEN THIS PID C OR THIS IS THE INITIAL RUN C UPDATE ELAPSED TIME, CPU TIME C AND DISPLAY FIELD C ITIM(I)=ETIME MODE(I)=NRM//BLK CNT(2)=CNT(2)+1 C ELSE C [UPDATE ELAPSED TIME !SET BLINK MODE ON [UPDATE ACTIVE COUNT C NO CHANGE IN CPU TIME C CHECK IF THIS PROCESS HAS ANY SONS C K=I CALL PIDSON (K, IFLG) C C IF NO SONS AND NOT OP THEN REVERSE VIDIO C ELSE MAKE DISPLAY NORMAL C IF (IFLG.EQ.O .AND. IDIS(I).NE.2) THEN MODE(I)=NRM//REV !PID HAS NO SONS CNT(3)=CNT(3)+1 [UPDATE INACTIVE COUNT ELSE MODE(I)=NRM//NUL [PID HAS SON(S) CNT(1)=CNT(1)-H END IF C END IF C ICPU(I)=CPUTIM C END IF C END DO C [UPDATE FATHER COUNT [UPDATE CPU TIME C DISPLAY CURRENT ACTIVE PIDS C IN MATRIX FORM ON SCREEN C DO 1=1,241,16 C M=I/16+1 C CALL CURPOS (M,5,0) 'CALC ROW INDEX .'POSITION CURSOR WRITE (*,300) (MODE(K) ,IDIS(K) ,K=I ,I-t-7) C 300 FORMAT ('»',16(A6,14)) C CALL CURPOS 'M,43,3i 'POSITION CURSOR 15

Original page 18 of A process activity monitor for AOS/VS

Original page 19

END DO C C DISPLAY ACTIVE USER NAMES C PRINT ,NRM M=l !INITIAL ROW POSITION N=75 !INITIAL COLUMN POS DO 1=1, 256 IF (USE(I).EQ.I) THEN K=I CALL UNAME (K, UNM) IF ((I.GT.2 .AND. UNM(1:3).NE.'OP ') .OR. I.LE.2) THEN CALL CURPOS (M,N,0) WRITE (, 400) I, UNM(1:8) 400 FORMAT ('#' ,I 5,IX,A8) M=M+1 IF (M.GT.22) THEN N=N+14 M=l END IF END IF END IF END DO C C BLANK OUT ANY UNUSED FIELDS C DO WHILE (N.LT.120) CALL CURPOS (M, N, 0) WRITE (, 500) 500 FORMAT ('#',' ') M=M+1 IF (M.GT.22) THEN N=N+14 M=l END IF END DO C C UPDATE TIME/DATE DISPLAY C CALL TIMDAT (TMDT) CALL CURPOS (0,96,0) WRITE (, 600) NRM, TMDT 600 FORMAT ('#',A4,A18) C C UPDATE DISPLAY COUNTS C DO 1=1,4 M=H-18 CALL CURPOS (M,32,0) WRITE (*,FMT="( '#' , 13)") CNT(I) CNT(I)=0 !RESET COUNTERS END DO C C ZERO OUT USER DISPLAY TABLE C DO 1=1,256 USE(I)=0 END DO C C CHECK FOR INITIAL R'JN CONDITION C DO NOT DELAY IF ONLY R'JN ONCE 16

Original page 19 of A process activity monitor for AOS/VS

Original page 20

IF (IFIRST.EQ.1) THEN c c SET UP TO DELAY 5 MINUTES c CALL MDELAY (IMIN) c END IF c IFIRST=1 !SET INITIAL PASS DONE c c DO FOREVER c GOTO 100 END % INCLUDE "CURPOS.F77" %INCLUDE "RUNTM.F77" %INCLUDE "PDAD.F77" % INCLUDE "PIDSON.F77" %INCLUDE "MDELAY.F77" % INCLUDE "PIDFORM.F77" %INCLUDE "UNAME.F77" % INCLUDE "TIMDAT.F77" 17

Original page 20 of A process activity monitor for AOS/VS

Original page 21

c c SUBROUTINE PIDFORM C C THIS SUBROUTINE WILL LAYOUT A FORM C FOR THE PID ACTIVITY REPORT C CHARACTER MODE6(4), LEGEND22(4) C C DG 400 SERIES CONTROLL CODES C FOR: C NORMAL C BLINK ON C REVERSE VIDIO C DIM ON C 1 DATA MODE/'<217><236><305><235><000><000> , & '<217><236><305><235><216><000>', 1 & '<217><236><305><235><236><304> , 1 & '<217><236><305><235><234><000> / C C EXPLANATION LEGEND C DATA LEGEND/'FATHER PROCESS OR OP ', & 'ACTIVE PROCESS & 'INACTIVE TERMINAL SON ', & 'UNASSIGNED PID '/ C C OUTPUT TOP PID LEGEND C CALL CURPOS (0,5,1) WRITE (, 101) 101 FORMAT ('#',' [0] [1] [2] [3] [4] [5] [6] [7]') C CALL CURPOS (0,43,0) WRITE (, 101) C C OUTPUT SIDE PID LEGENDS C DO 1=1, 256,16 J=I+8 WRITE (, 201)1, J 201 FORMAT (IX,'[',13,']',33X,'[',I 3,' ] ' ) END DO C C OUTPUT BOTTOM PID LEGEND C CALL CURPOS (17,5,0) WRITE (, 101) C CALL CURPOS (17,43,0) WRITE (, 101) C C OUTPUT EXPLANATION LEGENDS C DO 1=1,4 K=I+18 CALL CURPOS (K,10,0) WRITE (, 301) MODE(I), LEGEND!I) 301 FORMAT ( ' }',A6,A22) END DO 18

Original page 21 of A process activity monitor for AOS/VS

Original page 22

END SUBROUTINE PIDSON (PID, FLAG) C C THIS ROUTINE DETERMINES IF THIS PID C HAS ANY SONS C IF YES THEN FLAG=1 C ELSE FLAG=0 C INTEGER4 ISYS, IACO, IAC1, IAC2 INTEGER4 PID, FLAG INTEGER*2 STAT(200) C C PERFORM PSTAT CALL TO DETERMINE C IF SELECTED PID HAS ANY SONS C IPID=5 IACO=PID IAC1=0 IAC2=WORDADDR(STAT) C IERR=ISYS(IPID, IACO, IAC1, IAC2) C C CHECK BIT PATTERN FOR ANY SONS C FLAG=0 DO J=2,17 FLAG=FLAG-t-STAT(J) END DO C C IF SONS EXIST THEN MAKE FLAG = 1 C IF (FLAG.NE.O) FLAG=1 C RETURN END 19

Original page 22 of A process activity monitor for AOS/VS

Original page 23

:****** c SUBROUTINE RUNTM (PID, ETIME, CPUTIM, IERR) C C GETS PID NUMBER AND RETURNS ELAPSED TIME C IN SECONDS AND CPU TIME IN MILLISECONDS C INTEGER4 I SYS, IACO, IAC1, IAC2 INTEGER4 PACU) INTEGER*4 PID, ETIME, CPUTIM, IERR C C SET UP TO MAKE SYSTEM RUN TIME CALL C IPID=24 !RUNTIME CALL IACO=PID !PID NO. IAC1=0 1USING PID IAC2=WORDADDR(PAC) !RETURN LIST C C PERFORM RUNTIME CALL TO GET C ELAPSED TIME AND CPU TIME C IERR=ISYS (IPID, IACO, IAC1, IAC2) C ETIME=PAC(1) !RETURN ELAPSED TIME CPUTIM=PAC(2) !RETURN CPU TIME C RETURN END 20

Original page 23 of A process activity monitor for AOS/VS

Original page 24

SUBROUTINE SEND (PID, C C THIS SUBROUTINE RETy^S 'S^NDS WARNING. C MESSAGE^' TO THfi SEPEQTEP PIP NQ, q UPON THH) THIRD WARNING PRING, §EN.T q THIS ROUTINE WJLL CAL,k POT THE. TERMINATION q PF THE. SELECTED pjp G INTEQER4 I SYS, I AGO, I API, INTEGER4 PID, NUM CHARACTER HESS47, DATA WARN/ '1ST WARNING TERMINAL JNACTJVE FQR 5 S. 'FINAL WARNINQ 9EFORp: {..QQ OFF - INACTIVE }P MIN & 'TERMI'NATION - INACTIVE is c '' c SET MESSAGE; LENGTH c LEN=47 C q GET SE.PEJCTED MESSAGE, HESS=WARN (NUM) C C SET UP TO MAftE f^EINP C ' IPID=206 1S.ENP CALL IACO=PID ' JPID NO. '' IACi=BYTEApDR(MESS)' C C SEND THE MSSSAfiE, TO TH,E,SELEpTEp Pip C IERR,= ISYS (IPIP, IACQ, lAfil, IAC2) C CHECK FQR TERMINATION C ' • '' C REMOVE COMMEJNT5 TO ACTIVATE TERMINATION OPERATION IF (NUM.EQf3) THEN ! CALL TERM(PJD) I E,ND IF ' I C C RETURN END

Original page 24 of A process activity monitor for AOS/VS

Original page 25

SUBROUTINE TERM (PID) C C THIS SUBROUTINE TURNS ON SUPERPROCESS AND THEN C TERMINATES THE SELECTED PID, ALL SON PROCESSES C ARE ACCORDINGLY ALSO TERMINATED C INTEGERM ISYS, IPID, IACO, IAC1, IAC2, PID C C SET UP TO TURN ON SUPERPROCESS C IPID=43 IACO=-1 IAC1=0 IAC2=0 C C TURN ON SUPERPROCESS C .'SUPROC CALL [TURN ON !UNDEFINED !UNDEFINED IERR=ISYS (IPID, IACO, IAC1, IAC2) C C SET UP TO MAKE 7GTERM CALL C IPID=45 IACO=PID IAC1=0 IAC2=0 C 1TERM CALL !PID NO. !CONTAINS PID !NO MESSAGE C TERMINATE THE SELECTED PID C IERR=ISYS (IPID, IACO, IAC1, IAC2) C C SET UP TO TURN OFF SUPERPROCESS C IPID=43 IACO=1 'SUPROC CALL 1TURN OFF IAC1=0 !UNDEFINED IAC2=0 !UNDEFINED C C TERMINATE THE SELECTED PID C IERR=ISYS (IPID, IACO, IAC1, IAC2) C RETURN END 22

Original page 25 of A process activity monitor for AOS/VS

Original page 26

SUBROUTINE TIMDAT (TMDT) C C THIS SUBROUTINE WILL RETURN THE CURRENT C SYSTEM TIME AND DATE IN CHARACTER FORMAT C IN STRING TMDT (OF LENGTH 18) C INTEGER IDATE(3), ITIME(3), IBLD(6) CHARACTER TMDT*18 C C GET SYSTEM DATE AND TIME FOR HEADER C CALL DATE (IDATE) CALL TIME (ITIME) C C SET UP DATE TO BE IN MM/DD/YY FORM C ITMP=IDATE(1)-1900 IDATE(1)=IDATE(2) IDATE(2)=IDATE(3) IDATE(3)=ITMP DO 1=1,3 IBLD(I)=ITIME(I) IBLD(H-3)= IDATE(I) END DO DO 1=1,6 M=(I-1)3+1 N=M+1 ITMP=IBLD(I)/10 IBLD(I)=IBLD(I)-(!TMP10) TMDT(M:M)=CHAR(ITMP-i-48) TMDT(N:N)=CHAR(IBLD(I)+48) END DO TMDT(3:3)=': TMDT(6:6)=': TMDT(9:9)=' TMDT(12:12)= TMDT(15:15)= TMDT(18:18)= RETURN END 23

Original page 26 of A process activity monitor for AOS/VS

Original page 27

SUBROUTINE UNAME (PID, UNM) C C THIS SUBROUTINE WILL RETURN THE USERNAME OF C THE CURRENT PROCESS IN THE CHARACTER C STRING UNM, THE STRING WILL BE TERMINATED C WITH A C CHARACTER UNM32 INTEGER4 ISYS, IACO, IAC1, IAC2, IFLG, PID C C DETERMINE IF THIS IS TO BE THE C CALLING TASK'S PID C IF (PID.LT.O) THEN IFLG=1 ELSE IFLG=0 END IF C IPID=58 !?GUNM CALL IACO=PID !PID NO. OR -1 IAC1=IFLG 1USING PID OR -1 IAC2=BYTEADDR(UNM) 'RETURN LIST C C PERFORM SYSTEM CALL TO GET USERNAME C IERR=ISYS (IPID, IACO, IAC1, IAC2) C C BLANK THE STRING AFTER THE USERNAME C IFLG=0 DO 1=1,32 IF (UNM(I:I).EQ.'<000>') IFLG=1 IF (IFLG.EQ.l) UNM(I:I)=' ' END DO C RETURN END 24

Original page 27 of A process activity monitor for AOS/VS

Original page 28

SUBROUTINE VIP (UNAME, IFLG) C C THIS ROUTINE WILL DETERMINE IF THE C USERNAME PASSED TO IT EXIST IN THE C VIP.DAT FILE, IF YES THEN IFLG=1 C ELSE IFLG=0 C CHARACTER UNAME32, VNAME32 C C INITIALIZE RETURN FLAG TO 0 C IFLG=0 C C OPEN VIP FILE C OPEN (UNIT=21, STATUS='OLD S. FILE='VIP.DAT', & IOSTAT=IERR1, RECFM='DS', FORM='FORMATTED',PAD='YES', & ERR=999) C C READ ONE (1) LINE C 100 READ (21,FMT=101, IOSTAT=IERR2, ERR=999, RETURNRECL=IL) VNAME 101 FORMAT (A32) C C CHECK FOR ZERO RECORD LENGTH C IF (IL.EQ.O) GOTO 999 C C CHECK IF NAME'S MATCH C IF (VNAME.NE.UNAME) GOTO 100 C C A MATCH HAS BEEN FOUND C SET IFLG TO 1 C IFLG=1 C C CLOSE THE VIP FILE AND RETURN TO CALLER C 999 CLOSE (UNIT=21) C RETURN END 25

Original page 28 of A process activity monitor for AOS/VS

Original page 29

APPROVAL A PROCESS ACTIVITY MONITOR FOR AOS/VS By R. A. McKosky, S. W. Lindley, and J. S. Chapman The information in this report has been reviewed for technical content. Review of any information concerning Department of Defense or nuclear energy activities or programs has been made by the MSFC Security Classification Officer. This report, in its entirety, has been determined to be unclassified. .e S. R. REINARTZ Manager, Shuttle Projects Off •&U S. GOVERNMENT PRINTING OFFICE 1986-631-058/20077 26

Original page 29 of A process activity monitor for AOS/VS