$L1 CM APPENDIX 1 $B5 $L1 C A HIGHLY CONCURRENT SHEDULING ALGORITHM. $P3 @AS MENTIONED IN SECTION 4.2, THE STATUS MARK OF A PROCESS IS INTERPRETED AS: $A INDENT=2 .PROCESS$_STATUS = 1 MEANS 'READY' $B0 .PROCESS$_STATUS = 0 MEANS 'RUNNING' $A INDENT=0 @FURTHER VALUES OF THE STATUS MARK AND THEIR INTERPRETATION ARE GIVEN IN THE SEQUEL. $P @IN THE FOLLOWING, WE EMPLOY THE NOTATION: $A INDENT=2 .ITS S,LABEL $C+3 [S=S-1 ; %IF S<0 %THEN -> LABEL] $B0 .IRE S,LABEL $C+3 [S=S+1 ; %IF S<=0 %THEN -> LABEL] $A INDENT=0 WHERE THE BRACKETS INDICATE INDIVISIBILITY. .(ITS AND .IRE ARE AN ABBREVIATION FOR @INTERRUPTING @TEST AND @SET AND @INTERRUPTING @R@ELEASE). $V0 $P @A MODIFIED VERSION OF THE SCHEDULER ALGORITHM OF FIGURE 4.2-5A IS SHOWN IN FIGURE .A1. @THE NEW VERSION DIFFERS FROM THE ORIGINAL IN THAT THE %THEN PART OF THE $B0 $T2 %IF .PROCESS # .NULL $B0 STATEMENT HAS BEEN REPLACED BY THE CODE ENCLOSED IN A BOX IN FIGURE .A1. @NOTE THAT THE STATUS MARK IS USED AS AN INTEGER ONLY FOR THE PURPOSE OF COMPARISON; ITS VALUE IS MODIFIED ONLY BY THE .ITS AND .IRE INSTRUCTIONS. $P @THE NEW VERSION ALLOWS THE CONCURRENT EXECUTION OF THE INSTRUCTION: $B0 $T2 .ITS .PROCESS$_STATUS,DOIRE $B0 BY ANY NUMBER OF SCHEDULERS (PROCESSORS) PROVIDED THAT THE CURRENT CONTENTS OF THE LOCAL VARIABLE .PROCESS IS DIFFERENT IN EACH CASE. @MOREOVER, THE INSTRUCTION CAN BE EXECUTED PRECISELY AT THE SAME TIME IF THE RELEVANT DATA RESIDE IN DIFFERENT MEMORY BANKS. $P @THE PRICE PAID FOR THE INCREASE IN CONCURRENCY IS A CERTAIN DEGREE OF NON-DETERMINACY IN THE VALUE OF THE STATUS MARK OF PROCESSES. $P @SUPPOSE THERE ARE N+1 PROCESSORS, I. E. SCHEDULERS, IN THE SYSTEM. @ASSUME THAT THE N+1 SCHEDULERS EXECUTE THE STATEMENT: $B0 $T2 %IF .PROCESS$_STATUS = 1 %THEN %START $B0 SIMULTANEOUSLY; THAT THE LOCAL VARIABLE .PROCESS OF EACH SCHEDULER HAPPENS TO CONTAIN THE CAPABILITY FOR PROCESS .A; AND THAT @A IS 'READY'. @THEN ALL THE SCHEDULERS WILL EXECUTE THE CODE UNDER DISCUSSION. $P @THE SINGLE SCHEDULER WHICH ACHIEVES THE 1 -> 0 TRANSITION WILL ACTIVATE .A. @EVERY ONE OF THE REMAINING N SCHEDULERS WILL EXECUTE THE PAIR OF INSTRUCTIONS: $B0 $T2 .ITS .PROCESS$_STATUS,DOIRE $B0 $T2 .IRE .PROCESS$_STATUS,REPEAT $B0 WHICH MODIFY THE VALUE OF .A$_STATUS. @THE SEQUENCE OF EXECUTIONS, EXCLUDING THE .ITS WHICH CAUSED THE 1 -> 0 TRANSITION, CAN BE REPRESENTED BY THE STRING: $B0 $T2 S = .X1,X2, $.$.$. ,@XN $B0 WHERE .X1=ITS AND @XN=@I@R@E. @IT IS NOT DIFFICULT TO VERIFY THAT, DUE TO THE PARTIAL ORDERING IN THE EXECUTION OF EACH PAIR OF INSTRUCTIONS, THE RELATION: $A TAB=1,5,7,53,53 $B0 $T2 -N <= .A$_STATUS <= 0 $T4 (1) $B0 HOLDS AFTER THE EXECUTION OF EVERY INSTRUCTION IN THE STRING. @FURTHERMORE, THE VALUE OF THE VARIABLE AFTER THE 2*N INSTRUCTIONS HAVE BEEN EXECUTED IS: $B0 $T2 .A$_STATUS=0 $B0 AND THIS MEANS THAT PROCESS @A IS RUNNING. $P @ASSUME THAT THE VALUE OF .A$_STATUS IS NOT MODIFIED BY ANY OTHER INSTRUCTION IN THE SYSTEM. @THEN, AFTER A SCHEDULER HAS COMPLETED ITS PAIR .$(ITS$,IRE) IT WILL IGNORE PROCESS @A SINCE RELATION (1) GUARANTEES THAT THE STATEMENT: $B0 $T2 %IF .PROCESS$_STATUS = 1 $B0 CANNOT BE TRUE. @RELATION (1) ALSO GUARANTEES THAT EVERY SCHEDULER WILL TAKE THE 'DOIRE' BRANCH WHEN IT EXECUTES ITS .ITS AND WILL NOT TAKE THE 'TRY AGAIN' BRANCH AS A RESULT OF THE EXECUTION OF .IRE. $P @A FURTHER COMPLICATION ARISES FROM THE FACT THAT, THEORETICALLY, @A MAY WISH TO EXECUTE $B0 $T2 BLOCK-PROCESS(@A) $B0 AT ANY INSTATNT FOLLOWING THE 0->1 TRANSITION EFFECTED BY THE FIRST EXECUTION OF .ITS. @MOREOVER, THIS COULD BE FOLLOWED BY A $B0 $T2 WAKE-UP-PROCESS(@A) $B0 ISSUED FROM ANOTHER PROCESS. @THE TWO LAST STATEMENTS HAVE TO MODIFY THE VALUE OF .A$_STATUS WHICH MAY BE SUFFERING A SERIES OF TRANSITIONS. @IN OTHER WORDS, ANY ASSIGNEMENT TO .A$_STATUS MAY BE INTERLEAVED AT ANY POINT WITHIN THE STRING, S, OF INSTRUCTIONS WHICH ARE BEING EXECUTED BY THE N UNSUCCESSFUL SCHEDULERS. $P @SUPPOSE THAT BLOCK-PROCESS EXECUTES AN ASSIGNMENT OF THE FORM: $B0 $T2 .A$_STATUS=B $B0 WHERE @B IS A POSITIVE INTEGER. @THEN, ASSUMING THAT WAKE-UP-PROCESS DOES NOT ACT UNTIL STRING S HAS BEEN EXECUTED BY ALL THE SCHEDULERS, THE FINAL VALUE OF .A$_STATUS SATISFIES: $B0 $T2 @B <= .A$_STATUS <= @B+N $B0 @SIMILARLY, IF WAKE-UP-PROCESS EXECUTES: $B0 $T2 .A$_STATUS=W $B0 WHERE @W IS A POSITIVE INTEGER, THEN THE RELATION: $B0 $T2 @W <= .A$_STATUS <= @W+N $B0 HOLDS AFTER THE STRING HAS BEEN COMPLETELY EXECUTED. @NOTE THAT WAKE-UP-PROCESS(@A) CANNOT TAKE PLACE BEFORE BLOCK-PROCESS(@A) HAS BEEN EXECUTED. @THIS IS DISCUSSED IN DETAIL IN SECTION 4.1. @THEREFORE, ANY TWO VALUES OF @B AND @W WHICH SATISFY: $B0 $T2 @B > 1 $C+4 ; $C+4 @W > @B+N $B0 ARE SUFFICIENT TO DETERMINE THE STATUS OF A PROCESS UNAMBIGUOUSLY. @THE PROBLEM IS THAT IT BECOMES NECESSARY TO EXECUTE A STATEMENT OF THE FORM: $B0 $T2 %IF .A$_STATUS > @B+N %THEN .A$_STATUS=1 $B0 BEFORE THE PROCESS CAN BE ACTIVATED AGAIN BY A SCHEDULER EXECUTING THE PROPOSED ALGORITHM. @MOREOVER, THE EXECUTION OF THE STATEMENT MUST BE MUTUALLY EXCLUSIVE. @BARRING THE IMPLEMENTATION OF THE STATEMENT IN HARDWARE THIS REQUIRES A CRITICAL SECTION PROTECTED BY A CYCLING SEMAPHORE GLOBAL TO ALL THE SCHEDULERS AND THIS IS WHAT WE ARE ATTEMPTING TO AVOID. $P @WE ARE FORCED TO CONCLUDE THAT ANY MODIFICATION TO THE VALUE OF THE STATUS MARK MUST BE PERFORMED VIA THE .ITS AND .IRE INSTRUCTIONS. $P @SUPPOSE THE PROGRAMS FOR THE BLOCK-PROCESS AND WAKE-UP-PROCESS OPERATORS ARE OF THE FORM: $A INDENT=2 $A TEMPA=TAB; TAB=1,3,5,7,12,28,30,32,32,37 %ROUTINE BLOCK-PROCESS(@P) $T6 %ROUTINE WAKE-UP-PROCESS(@P) $B0 $A NLS=1 $T5 $. $T10 $. $B0 $T5 $. $T10 $. $B0 $T5 $. $T10 $. $B $A NLS=2 $T4 .ITS .P$_STATUS,CONTINUE $T9 .IRE .P$_STATUS,AGAIN $B0 $T4 *DISASTER* $T9 *DISASTER* $B0 $T3 CONTINUE: $T7 AGAIN: $B0 $T5 $. $T9 .IRE .P$_STATUS, CONTINUE $B0 $T5 $. $T7 CONTINUE: $B0 $A NLS=1 $T5 $. $T10 $. $B0 $T2 %END $T10 $. $B0 $T10 $. $B0 $A NLS=2 $T6 %END $A TAB=TEMPA; INDENT=0 $B2 AND THAT THE VALUE OF THE STATUS MARK IS NOT MODIFIED BY ANY OTHER STATEMENT IN THE SYSTEM. $P @THE THREE ADDITIONAL ORDERED ELEMENTS: $B0 $T2 .$(ITS$) .$(IRE1$) .$(IRE2$) $B0 MAY BE MERGED AT ANY POINT IN STRING S. @THE STRING: $B0 $T2 S' = S1$.(@I@T@S)$.S2$.(@I@R@E1)$.S3$.(@I@R@E2)$.S4 $B0 REPRESENTS THE ORIGINAL STRING, S , MERGED WITH THE EXTRA ELEMENTS. @THE '.' STANDS FOR THE CONCATENATION OPERATOR. @BECAUSE OF RELATION (1) IT FOLLOWS THAT AFTER .$(ITS$) IS EXECUTED, $B0 $T2 -(N-+1) <= .A$_STATUS <= -1 $B0 HOLDS. @CLEARLY, THIS NEW INVARIANT DOES NOT AFFECT THE BEHAVIOUR OF THE SCHEDULERS WHICH WILL EXECUTE SUB-STRING S2. @IT IS IMPORTANT TO NOTE THAT, THROUGHOUT THE EXECUTION OF S2, AN EXTERNAL OBSERVER OF THE VALUE OF .A$_STATUS CAN ONLY CONCLUDE THAT @A IS RUNNING WHEN, IN FACT, IT IS BLOCKED. $P @FOLLOWING THE EXECUTION OF .$(IRE1$) THE RELATION (1) IS RE-ESTABLISHED. @IN FACT, THE EXTRA PAIR .$(ITS$)$,$(IRE1$) ACTS AS IF A NEW SCHEDULER HAD ENTERED THE GAME IN THE MEANWHILE. @RELATION (1) REMAINS INVARIANT THROUGHOUT THE EXECUTION OF S3. @FINALLY, FOLLOWING THE EXECUTION OF .$(IRE2$) THE PREVAILING RELATION BECOMES: $B0 $T2 -N+1 <= .A$_STATUS <= 1 $T5 (3) $B0 @ACCORDING TO RELATION (3) THE PROCESS MAY APPEAR TO BE READY AT ANY POINT DURING THE EXECUTION OF S4. $P @NOW WE MUST EXPLORE TWO CASES: A) S4 IS EMPTY AND B) S4 IS NON-EMPTY. @CASE A) IS TRIVIAL (@BESIDES BEING TRIVIAL, IT IS PROBABLY THE ONLY PRACTICAL POSSIBILITY!). @IT MEANS THAT NO SCHEDULER IS ENGAGED IN THE 'TRANSITORY' .ITS .IRE; HENCE, THE INITIAL POSITION HAS BEEN REACHED. @PROCESS @A IS MARKED 'READY' AND IT WILL BE ACTIVATED WHEN ONE OR MORE SCHEDULERS GET ITS CAPABILITY FROM .PROCESS .LIST. $P @THE OUTCOME OF CASE B) DEPENDS ON THE FORM OF S4. @IT IS CERTAINLY POSSIBLE FOR THE UPPER BOUND IN (3) TO BE REACHED AT ANY POINT IN THE EXECUTION OF S4, INCLUDING BEFORE THE EXECUTION OF S4 IS STARTED. @WHEN IT IS REACHED, THE REMAINING SUB-STRING OF S4, SAY S5, IS SUCH THAT $B0 $T2 #@I@T@S(S5) = #@I@R@E(S5) $B0 AND $B0 $T2 S5 = .ITS, $.$.$. .$,IRE OR S5 = EMPTY $B0 WHERE #@I@T@S(S) GIVES THE NUMBER OF @I@T@SS IN STRING S; SIMILARLY FOR .#IRE. $P @SUPPOSE THAT S5 IS NOT EMPTY AND THAT S5 IS A PROPER SUBSTRING OF S4 (I. E. S5 AND S4 ARE NOT EQUAL). @THIS IMPLIES THAT THE 0->1 TRANSITION WAS CAUSED BY THE .IRE EXECUTED BY A SCHEDULER; NOT BY THE EXTRA .$(IRE2) ORIGINATED FROM SOME ACTIVE, NORMAL PROCESS. @THE SCHEDULER WHICH CAUSES THE 0->1 TRANSITION WILL GO TO 'TRY AGAIN'. @THIS SIMPLY MEANS THAT A FURTHER (ORDERED) PAIR .ITS$,IRE WILL BE MERGED WITH STRING S5. @IN PARTICULAR, S5 MAY BE EMPTY. @THIS IMPLIES THAT THE SCHEDULER WHICH PERFORMED THE LAST .IRE SUDDENLY DETECTED THAT A PROCESS BECAME READY. @MOREOVER, NOTE THAT .A$_STATUS WILL CONTAIN THE VALUE 1 FOR SOME TIME; I. E. UNTIL THE SCHEDULER WHICH IS EN ROUTE TO 'TRY AGAIN' OR ANY OTHER SCHEDULER WHICH IS YET TO PRODUCE ONE OF THE .ITS$,IRE PAIRS OF S5 EXECUTES THE .ITS WHICH CAUSES THE 1->0 TRANSITION. @DURING THIS TIME, IT IS POSSIBLE FOR ALL THE REMAINING SCHEDULERS (THE ONES WHICH HAD ALREADY PERFORMED THEIR .ITS$,IRE PAIRS AND CONTINUED TO SEARCH FOR ANOTHER READY PROCESS) TO EXECUTE THE $B0 $T2 %IF .PROCESS$_STATUS=1 %THEN %START $B0 STATEMENT WITH CONTENTS( .PROCESS)=A. @THIS PUTS THE GAME IN THE STARTING POSITION: N+1 SCHEDULERS ARE EAGER TO EXECUTE .ITS .A$_STATUS,DOIRE. @AT MOST ONE WILL BE SUCCESSFUL IN ACHIEVING THE 1->0 TRANSITION; PROCESS @A WILL BE ACTIVATED ONLY BY THE SUCCESSFUL SCHEDULER AND THE REMAINING N SCHEDULERS WILL BEGIN THE 'TRANSITORY' EXECUTION OF .ITS$,IRE. $P @STRICTLY, THE COMPLETE S5 MAY NOT BE PRODUCED. @NOTE THAT, IF ONE OF THE SCHEDULERS WHICH WERE TO PRODUCE A PAIR OF ELEMENTS OF S5 IS THE SUCCESSFUL ONE, THE MATCHING .IRE WILL NOT BE EXECUTED. $P @THE CASE S4=S5; I. E. THE 0->1 TRANSITION WAS CAUSED BY THE EXTRA .$(IRE2) IS EQUIVALENT TO THE ABOVE CASE EXCEPT THAT NO SCHEDULER WILL HAVE TAKEN THE 'TRY AGAIN' BRANCH. $P @WITHOUT THE $B0 $T2 %IF .PROCESS$_STATUS=1 %THEN %START $B0 STATEMENT IT WOULD BE POSSIBLE TO HAVE A CONTINUOUS STREAM OF SCHEDULERS EXECUTING .ITS$,IRE PAIRS ON THE SAME STATUS MARK. @AS A RESULT, STRING S WOULD APPEAR TO BE OF INFINITE LENGTH. @WHEREAS THIS CANNOT RESULT IN THE ACTIVATION OF ONE PROCESS BY MORE THAN ONE SCHEDULER, IT COULD CAUSE THE INDEFINITE POSTPONEMENT OF THE DECISION TO ACTIVATE A PROCESS (AN 'AFTER YOU, AFTER YOU, $.$.$. ' SITUATION [@DI65]). @IN ORDER TO SEE THIS, SUPPOSE THE TWO SCHEDULERS .SCH1 AND .SCH2 ALWAYS LOOK AT THE STATUS OF PROCESS @A AND THAT THE SPEEDS OF THE TWO SCHEDULERS ARE SUCH THAT STRING S' IS OF THE FORM: $B0 $T2 S' = S1$.S2$.S3$. $.$.$. $B0 WHERE $B0 $T2 S1 = .(ITS),ITS1,(IRE1),(IRE2),ITS2 $B0 $T2 SI = .IRE$1$,ITS$1$,IRE$2$,ITS2 $C+2 ; I>1 $B0 @HERE @I@T@SI DENOTES THAT @S@C@HI PERFORMED THE OPERATION. @THE ELEMENTS ENCLOSED IN BRACKETS CORRESPOND TO THE BLOCK/WAKE-UP SIGNALS. @ACCORDING TO SUB-STRING S1, PROCESS @A WAS BLOCKED WHEN .SCH1 EXECUTED THE FIRST .ITS1; THEN THE WAKE-UP SIGNAL ARRIVED. @THIS WAS FOLLOWED BY THE EXECUTION OF .ITS2 BY .SCH2. @THEREAFTER, THE SCHEDULER WHICH EXECUTES ITS .IRE GETS ROUND THE CYCLE AND PERFORMS ANOTHER .ITS BEFORE THE SCHEDULER WHICH ALREADY EXECUTED AN .ITS HAS HAD THE OPPORTUNITY OF ISSUING THE CORRESPONDING .IRE. @THE IMPLICATION IS THAT .A$_STATUS WILL NEVER REACH THE VALUE 1; THEREFORE, SCHEDULERS .SCH1 AND .SCH2 WILL CYCLE FOREVER. $P @WE HAVE SHOWN THAT THE SCHEDULING ALGORITHM PRECLUDES THE CATASTROPHIC CIRCUMSTANCE IS WHICH A PROCESS IS ACTIVATED BY MORE THAN ONE PROCESSOR. @EQUIVALENTLY, THE INTERPRETATION: $B0 $T2 .PROCESS$_STATUS = 1 MEANS 'READY' $B0 IS NOT AMBIGUOUS AND AT MOST ONE SCHEDULER IS CAPABLE OF TRANSFORMING A PROCESS' STATUS FROM 'READY' TO 'RUNNING', @IN CONTRAST, THE INTERPRETATION $B0 $T2 .PROCESS$_STATUS = -1 MEANS 'BLOCKED' $B0 IS VALID ONLY IF STRINGS S2, S3 AND S4 ARE EMPTY OR WHEN S3 AND S4 ARE EMPTY AND THE COMPLETE S2 HAS BEEN EXECUTED. @FORTUNATELY, SCHEDULERS IGNORE 'BLOCKED' AND 'RUNNING' PROCESSES; THEREFORE THEY ARE NOT AFFECTED BY THE 'TRANSIENT' 'BLOCKED'/'RUNNING' AMBIGUITY. $P @ON THE OTHER HAND, THE INTERPRETATION $B0 $T2 .PROCESS$_STATUS=0 MEANS 'RUNNING' $B0 IS VALID ONLY IF THE TRANSITION TO ZERO TOOK PLACE FROM ABOVE. @CLEARLY, THE INTERPRETATION IS NOT CORRECT AFTER THE EXECUTION OF .$(IRE1). @EVEN THE EXECUTION OF .$(IRE2) MAY CAUSE A -1->0 TRANSITION ALTHOUGH IT SHOULD LEAVE THE PROCESS IN THE READY STATUS. @NEVERTHELESS, THE STATUS WILL REACH THE READY VALUE PROVIDED THAT SCHEDULERS DO NOT STOP AT THE WRONG PLACE; I. E. IMMEDIATELY AFTER PERFORMING THE .ITS. $P @LET US NOW ANALISE THE AMBIGUITIES FROM THE VIEWPOINT OF THE PROCESS MANAGER. $P @A NECESSARY CONDITION FOR THE PROCESS MANAGER TO EXECUTE $B0 $T2 .UPDATE$(PROCESS .LIST) $B0 IS THAT THE SCHEDULERS BE OUTSIDE THE READER'S CRITICAL SECTION. @THIS IMPLIES THAT THE VALUE OF EVERY STATUS MARK IS IN THE STEADY STATE. @IN OTHER WORDS, NO SCHEDULER CAN BE ENGAGED IN THE EXECUTION OF .ITS OR .IRE AND EVERY PROCESS WHICH HAS EXECUTED .ITS IS EITHER SUSPENDED BECAUSE A NORMAL PROCESS IS RUNNING OR IT HAS ALSO EXECUTED THE CORRESPONDING .IRE. @IN TERMS OF STRING S', IF ONE OF THE EXTRA ELEMENTS HAS APPEARED, THEN THE REMAINING SUBSTRINGS SI ; I>1 ARE EMPTY. @THEREFORE, IF THE PROCESS MANAGER OBSERVES THAT $B0 $T2 .Z$_STATUS = -1 $B0 FOR AN ARBITRARY PROCESS .Z, IT CAN CONCLUDE THAT @Z IS BLOCKED ALTHOUGH IT MAY CHANGE TO READY AT ANY INSTANT. @IT IS IMPORTANT TO NOTE THAT @Z CANNOT CHANGE FROM BLOCKED TO RUNNING UNTIL A SCHEDULER IS ALLOWED TO ENTER THE CRITICAL SECTION. @SINCE A SCHEDULER CANNOT ENTER THE CRITICAL SECTION UNTIL THE MANAGER HAS EXITED, IT FOLLOWS THAT THE LATTER MAY REMOVE THE CAPABILITY FOR @Z FROM .PROCESS .LIST. @CONSEQUENTLY, THE MANAGER IS IN ULTIMATE CONTROL OF THE ACTIVATION OF BLOCKED PROCESSES. @HOWEVER, THE MANAGER CANNOT CONCLUDE FROM $B0 $T2 .Z$_STATUS = 0 $B0 @THAT THE PROCESS IS RUNNING; IT MAY BE THAT A CURRENTLY ACTIVE PROCESS IS CAUSING THE -1->0->1 TRANSITION OF .Z$_STATUS. @THIS IS INCONVENIENT, FOR EXAMPLE, IF THE MANAGER WISHES TO FORCE @Z TO YIELD THE PROCESSOR TO A HIGHER PRIORITY PROCESS. @IN ORDER TO SOLVE THIS PROBLEM THE MANAGER MUST USE ADDITIONAL INFORMATION DEPOSITED BY THE SCHEDULER IN THE STATE WORD OF THE ACTIVATED PROCESS; FOR INSTANCE, THE SCHEDULER'S IDENTIFIER. @THE SCHEDULER WOULD BE IN CHARGE OF REMOVING THE IDENTIFIER FROM THE STATE WORD OF A PROCESS WHICH BLOCKS. @ALTERNATIVELY, THE MANAGER MAY WAIT A FEW MEMORY CYCLES TO SEE IF THE VALUE OF .Z$_STATUS CHANGES FROM 0->1. @RECALL THAT THE TWO .ITS OPERATIONS ISSUED BY THE WAKE-UP-PROCESS OPERATOR TAKE PLACE IN NON-INTERRUPTIBLE MODE. $P @FINALLY, NOTE THAT THE PROCESS MANAGER IS IN CHARGE OF SETTING THE VALUES WHICH DETERMINE THE NEXT CAPABILITY WHICH WILL BE RETURNED BY THE 'NEXT PROCESS' ROUTINE OF EVERY SCHEDULER. $E