TITLE CLKCSS - SCHEDULING ALOGRITHM SUBTTL T. HASTING 6-29-65 ;SCHEDULING ALOGRITHM ;CALL: ; PUSHJ PDP, NXTJOB ; EXIT ;RETURN HIGHEST PRIORITY USER IN AC ITEM ;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE ;ANY OF THE OTHER ACS ;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE INTERNAL NXTJOB, QUANTS EXTERNAL IOCOMP,JOBN,JBTSTS,JOB EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON T=TAC1 ;TEMPORARY AC C=DEVDAT P=DAT NXTJOB: MOVE T, IOCOMP ;NO. OF COMPLETED IO JOBS MOVEM T, IOAVAL ;MAKE SLOW IO LOOK LIKE FAST IO ;KEEP IO DEVICES BUSY HRLZI P, -NUM ;NO. OF IO DEVICES CATEGORIES TO CHECK NXT0: SKIPN @AVALTB(P) ;NON-ZERO IF IO JUST BECOME AVAILABLE NXT1: AOBJN P, NXT0 JUMPG P, NXT4 ;FINISHED YET SETZM @AVALTB(P) ;IO DEVICE AVAIL. ACKNOWLEDGE FACT MOVE T,WAITB(P) ;GET APPROPRIATE JOB STATUS BIT MOVE ITEM,JOBP(P) ;SEARCH FOR WAITING JOB AOS ITEM ;LOOK AT EVERYONE ELSE FIRST NXT2: CAIL ITEM,JOBN ;MODULO JOBN MOVEI ITEM,1 ;SKIP NULL JOB TSNN T,JBTSTS(ITEM) ;IS WAIT BIT SET FOR THIS JOB? JRST NXT3 ;NO. KEEP LOOKING CONO PI,SCNOFF ;YES, TURN SCANNER CHAN. OFF(CONTROL C) HLRZ TAC,JBTSTS(ITEM) ;IS JOB RUNABLE? CAIN TAC,RUNABLE(T) JRST NXT7 ;YES, CLEAR BIT. SET RUN TIME. RETURN CONO PI,SCNON ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN NXT3: CAME ITEM, JOBP(P) ;HAVE ALL USERS BEEN LOOKED AT AOJA ITEM, NXT2 ;NO. KEEP LOOKING JRST NXT1 ;YES. SHOULD NOT HAPPEN ;NO JOBS WAITING TO USE IO DEVICES ;HAS CURENT JOB USED ITS QUANTUM NXT4: MOVEI C,JOBN ;GET READY FOR POSSIBLE LOOP SKIPA ITEM, JOB ;CURRENTLY RUNNING JOB NXT6: AOS ITEM ;LOOK AT NEXT JOB CAIL ITEM, JOBN ;MODULO JOBN MOVEI ITEM, 1 ;SKIP NULL JOB NXT5: HLRZ T, JBTSTS(ITEM) ;IS THIS JOB RUNNABLE CAIN T, RUNABLE JRST NXT9 ;YES,RETURN WITH ITEM SET NXT5A: SOJG C, NXT6 ;NO. LOOKED AT ALL JOBS YET? SETZB ITEM,T ;YES. INDICATE NULL JOB TO RUN AOJA T,NXT8 ;SET TO RUN FOR ONE CLOCK TICK NXT7: MOVEM ITEM, JOBP(P) ;SAVE THIS JOB NO. FOR NEXT TIME TRZ TAC,(T) ;CLEAR WAIT BIT HRLM TAC,JBTSTS(ITEM) ;IN JOB STATUS WORD TRNE T,IOWS ;IS WAIT BIT IOWS? SOS IOCOMP ;YES, SUBTRACT REQUEST COUNT CONO PI,SCNON ;TURN SCANNER CHANNEL BACK ON JRST NXT10 ;AND GO SET RUNNING TIME NXT9: HRRZ T,JBTSTS(ITEM) ;HAS TIME GONE TO ZERO FOR THIS JOB? TRNE T,-1 POPJ PDP, ;NO NXT10: MOVE T, QUANTS(P) ;SET QUANTUM RUNNING TIME FOR THIS QUEU NXT8: HRRM T, JBTSTS(ITEM) CAMN ITEM, JOB ;IS THIS SAME AS OLD JOB? JUMPN ITEM, NXT5A ;AND NOT NULL JOB POPJ PDP, ;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE AVALTB: EXP MTAVAL ;MAG TAPE EXP DCAVAL ;DATA CONTROL EXP DTAVAL ;DECTAPE EXP IOAVAL ;ALL OTHER DEVICES NUM=.-AVALTB IOAVAL: 0 ;FLAG = NO. OF IO COMPLETED JOBS ;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE WAITB: EXP MTW EXP DCW EXP DTW EXP IOWS ;LAST JOB SCHEDULED FOR DEVICE JOBP: REPEAT NUM, < EXP 1 > ;QUANTUM TIMES FOR EACH QUEUE QUANTS: EXP 4 ;MAGTAPE QUEUE EXP 4 ;DATA CONTROL QUEUE EXP 4 ;DECTAPE QUEUE EXP 6 ;IOWAIT SATISFIED QUEUE EXP QUANT1 ;STRAIGHT COMPUTATION QUEUE XP QUANT1,^D15; STRAIGHT COMPUTATION QUEUE END,