1 TITLE CLKCSS - SCHEDULING ALOGRITHM
\r
2 SUBTTL T. HASTING 6-29-65
\r
3 ;SCHEDULING ALOGRITHM
\r
6 ; EXIT ;RETURN HIGHEST PRIORITY USER IN AC ITEM
\r
8 ;NEXJOB ASSUMES NO ACS SET EXCEPT PDP AND THAT IS MAY USE
\r
9 ;ANY OF THE OTHER ACS
\r
10 ;EXECUTION REQUIRES ROUGHLY 37 CYCLES FOR NORMAL CASE
\r
12 INTERNAL NXTJOB, QUANTS
\r
13 EXTERNAL IOCOMP,JOBN,JBTSTS,JOB
\r
14 EXTERNAL MTAVAL,DCAVAL,DTAVAL,SCNOFF,SCNON
\r
16 T=TAC1 ;TEMPORARY AC
\r
20 NXTJOB: MOVE T, IOCOMP ;NO. OF COMPLETED IO JOBS
\r
21 MOVEM T, IOAVAL ;MAKE SLOW IO LOOK LIKE FAST IO
\r
23 ;KEEP IO DEVICES BUSY
\r
24 HRLZI P, -NUM ;NO. OF IO DEVICES CATEGORIES TO CHECK
\r
25 NXT0: SKIPN @AVALTB(P) ;NON-ZERO IF IO JUST BECOME AVAILABLE
\r
27 JUMPG P, NXT4 ;FINISHED YET
\r
28 SETZM @AVALTB(P) ;IO DEVICE AVAIL. ACKNOWLEDGE FACT
\r
29 MOVE T,WAITB(P) ;GET APPROPRIATE JOB STATUS BIT
\r
30 MOVE ITEM,JOBP(P) ;SEARCH FOR WAITING JOB
\r
31 AOS ITEM ;LOOK AT EVERYONE ELSE FIRST
\r
32 NXT2: CAIL ITEM,JOBN ;MODULO JOBN
\r
33 MOVEI ITEM,1 ;SKIP NULL JOB
\r
34 TSNN T,JBTSTS(ITEM) ;IS WAIT BIT SET FOR THIS JOB?
\r
35 JRST NXT3 ;NO. KEEP LOOKING
\r
36 CONO PI,SCNOFF ;YES, TURN SCANNER CHAN. OFF(CONTROL C)
\r
37 HLRZ TAC,JBTSTS(ITEM) ;IS JOB RUNABLE?
\r
39 JRST NXT7 ;YES, CLEAR BIT. SET RUN TIME. RETURN
\r
40 CONO PI,SCNON ;NO. TURN SCANNER CHAN. ON. KEEP LOOKIN
\r
41 NXT3: CAME ITEM, JOBP(P) ;HAVE ALL USERS BEEN LOOKED AT
\r
42 AOJA ITEM, NXT2 ;NO. KEEP LOOKING
\r
43 JRST NXT1 ;YES. SHOULD NOT HAPPEN
\r
45 ;NO JOBS WAITING TO USE IO DEVICES
\r
46 ;HAS CURENT JOB USED ITS QUANTUM
\r
48 NXT4: MOVEI C,JOBN ;GET READY FOR POSSIBLE LOOP
\r
49 SKIPA ITEM, JOB ;CURRENTLY RUNNING JOB
\r
51 NXT6: AOS ITEM ;LOOK AT NEXT JOB
\r
52 CAIL ITEM, JOBN ;MODULO JOBN
\r
53 MOVEI ITEM, 1 ;SKIP NULL JOB
\r
55 NXT5: HLRZ T, JBTSTS(ITEM) ;IS THIS JOB RUNNABLE
\r
57 JRST NXT9 ;YES,RETURN WITH ITEM SET
\r
58 NXT5A: SOJG C, NXT6 ;NO. LOOKED AT ALL JOBS YET?
\r
59 SETZB ITEM,T ;YES. INDICATE NULL JOB TO RUN
\r
60 AOJA T,NXT8 ;SET TO RUN FOR ONE CLOCK TICK
\r
62 NXT7: MOVEM ITEM, JOBP(P) ;SAVE THIS JOB NO. FOR NEXT TIME
\r
63 TRZ TAC,(T) ;CLEAR WAIT BIT
\r
64 HRLM TAC,JBTSTS(ITEM) ;IN JOB STATUS WORD
\r
65 TRNE T,IOWS ;IS WAIT BIT IOWS?
\r
66 SOS IOCOMP ;YES, SUBTRACT REQUEST COUNT
\r
67 CONO PI,SCNON ;TURN SCANNER CHANNEL BACK ON
\r
68 JRST NXT10 ;AND GO SET RUNNING TIME
\r
70 NXT9: HRRZ T,JBTSTS(ITEM) ;HAS TIME GONE TO ZERO FOR THIS JOB?
\r
73 NXT10: MOVE T, QUANTS(P) ;SET QUANTUM RUNNING TIME FOR THIS QUEU
\r
74 NXT8: HRRM T, JBTSTS(ITEM)
\r
75 CAMN ITEM, JOB ;IS THIS SAME AS OLD JOB?
\r
76 JUMPN ITEM, NXT5A ;AND NOT NULL JOB
\r
79 ;FLAGS SET NON-ZERO WHEN IO DEVICES BECOME AVAILABLE
\r
81 AVALTB: EXP MTAVAL ;MAG TAPE
\r
82 EXP DCAVAL ;DATA CONTROL
\r
84 EXP IOAVAL ;ALL OTHER DEVICES
\r
87 IOAVAL: 0 ;FLAG = NO. OF IO COMPLETED JOBS
\r
89 ;BIT IN STATUS WORD MEANING JOB WAITING TO USE DEVICE
\r
95 ;LAST JOB SCHEDULED FOR DEVICE
\r
100 ;QUANTUM TIMES FOR EACH QUEUE
\r
102 QUANTS: EXP 4 ;MAGTAPE QUEUE
\r
103 EXP 4 ;DATA CONTROL QUEUE
\r
104 EXP 4 ;DECTAPE QUEUE
\r
105 EXP 6 ;IOWAIT SATISFIED QUEUE
\r
106 EXP QUANT1 ;STRAIGHT COMPUTATION QUEUE
\r
108 XP QUANT1,^D15; STRAIGHT COMPUTATION QUEUE
\r