PAGING, SWAPPING, AND WORKING SET ADJUSTMENT ----------------------------------------------------------------------------- . VIRTUAL MEMORY . DEFINITIONS . WHERE A PAGE CAN BE . PAGING . MODIFIED PAGE WRITING . SWAPPER . WORKING SET ADJUSTMENT ----------------------------------------------------------------------------- VIRTUAL MEMORY . EACH PROCESS HAS - INDEPENDENT ADDRESS SPACE - LARGE ADDRESS SPACE - SOME PAGES IN PHYSICAL MEMORY - MANY PAGES IN FILES . SYSTEM MUST MANAGE - WHICH PROCESSES ARE IN MAIN MEMORY - HOW MUCH MEMORY A PROCESS CAN USE - WHICH PAGES ARE IN MAIN MEMORY ----------------------------------------------------------------------------- DEFINITIONS . BALANCE SET - PROCESSES CURRENTLY RESIDENT IN MAIN MEMORY . WORKING SET - THE ACTUAL PROCESS PAGES CURRENTLY IN MAIN MEMORY . WORKING SET SIZE - NUMBER OF PAGES A PROCESS IS CURRENTLY ENTITLED TO HAVE IN MAIN MEMORY . WORKING SET COUNT - NUMBER OF PAGES A PROCESS CURRENTLY HAS IN MAIN MEMORY . PAGING - MOVING A PAGE INTO OR OUT OF THE WORKING SET . SWAPPING - MOVING A PROCESS INTO OR OUT OF THE BALANCE SET ----------------------------------------------------------------------------- WHERE CAN A PAGE BE? . IN THE WORKING SET . AN IMAGE FILE - HAS NEVER BEEN PAGED IN - READ ONLY, PAGED IN, DISCARDED . FREE LIST - AVAILABLE FOR REUSE . MODIFIED LIST . PAGE FILE - MODIFIED, PAGED OUT . SWAP FILE . MEMORY COPY OFTEN DUPLICATED IN A FILE ----------------------------------------------------------------------------- PAGING .ASSUME PAGE NOT IN WORKING SET . PAGE TABLE ENTRY (PTE) CONTAINS LOCATION . PAGEFAULT CODE CAN - READ IT (FILE) - CHANGE ITS STATE (FREE OR MODIFIED) - INITIALIZE IT (DEMAND ZERO) . PAGEFAULT MAY - REMOVE A PAGE FROM WORKING SET - READ ADDITIONAL PAGES - WAIT FOR PHYSICAL MEMORY - WAIT FOR MODIFIED LIST WRITE . GLOBAL PAGES TREATED SLIGHTLY DIFFERENTLY ----------------------------------------------------------------------------- PAGING FROM AN IMAGE +--------------+ +--------------+ | | | | IMAGE: | READ ONLY | | COPY ON | | | | REFERENCE | | | | | +--------------+ +--------------+ | | | | V V +--------------+ +--------------+ +--------+ | | | | | | WORKING | EXACT | +--->| MODIFIED | | DEMAND | SET: | COPY | | | COPY |<--+ +--| ZERO | | | | | | | | +--------+ +--------------+ | +--------------+ | | | ^ | | ^ | | | | | | | | | V | | V | | | +--------------+ | +--------------+ | | | |-----------+ | | | | PAGE | FREE LIST | | MODIFIED | | | CACHES: | |<---------------| LIST |<-----+ | | | | | +--------------+ +--------------+ | | | | | V | +--------------+ | | | | PAGE FILE: | PAGE FILE |---+ | | +--------------+ ----------------------------------------------------------------------------- MODIFIED PAGE WRITING . TRIGGERED BY - MODIFIED LIST TOO BIG - FREE LIST TOO SMALL - OCCASIONALLY TO FORCE OUT CERTAIN PAGES . I/O GROUPED BY - DESTINATION - PROCESS VIRTUAL ADDRESS . PAGES MAY BE WRITTEN TO - PAGE FILE - WRITABLE SECTION FILE - SWAP FILE . PAGE MOVES TO FREE LIST AFTER THE WRITE . ALL THIS DONE IN THE SWAPPER PROCESS ----------------------------------------------------------------------------- MODIFIED PAGE WRITING SYSGEN PARAMETERS . MPW_WRTCLUSTER: DESIRED SIZE OF A WRITE . MPW_HILIMIT: LIST SIZE TO TRIGGER WRITING . MPW_LOLIMIT: NO MORE WRITES BELOW THIS SIZE . MPW_THRESH: INSWAP WON'T CAUSE WRITE BELOW THIS SIZE . FREELIM: MINIMUM FREE PAGE LIST SIZE . FREEGOAL: FREE PAGE LIST GOAL IF BELOW MINIMUM . MPW_WAITLIMIT: PROCESS WAITS IF LIST ABOVE THIS SIZE ----------------------------------------------------------------------------- WORKING SET SIZES . WORKING SET COUNT: NUMBER OF PAGES A PROCESS CURRENTLY HAS IN MAIN MEMORY . WORKING SET SIZE: NUMBER OF PAGES A PROCESS IS CURRENTLY ENTITLED TO HAVE IN MAIN MEMORY . WORKING SET DEFAULT: INITIAL WORKING SET SIZE FOR EACH NEW IMAGE . WORKING SET QUOTA: PROCESS IN GUARANTEED AN INCREASE TO THIS WORKING SET SIZE; MAXIMUM WORKING SET SIZE FOR OUTSWAP . WORKING SE EXTENT: PROCESS MAY GROW TO THIS WORKING SET SIZE IF SUFFICIENT FREE MEMORY AVAILABLE ----------------------------------------------------------------------------- CHANGING WORKING SET SIZE . EXPLICIT CONTROL - DCL COMMAND - SYSTEM SERVICE . QUANTUM END - CHANGE SIZE BASED ON: . PAGEFAULT RATE . PERCENTAGE OF UNUSED WORKING SET ENTRIES . FREE LIST SIZE IF ABOVE QUOTA . SWAPPER - CAN REDUCE WORKING SET SIZE TO . QUOTA . SWPOUTPGCNT . PAGEFAULT CODE WILL USE FREE WORKING SET ENTRIES - ALWAYS IF BELOW QUOTA - IF FREE LIST BIG ENOUGH IF ABOVE QUOTA ----------------------------------------------------------------------------- WORKING SET PARAMETERS . PROCESS CREATION - DEFAULT - MINIMUM - MAXIMUM . WSMAX: MAXIMUM WORKING SET SIZE . GROWLIM: FREE PAGES NEEDED TO USE FREE WORKING SET LIST ENTRY OF ABOVE QUOTA . BORROWLIM: FREE PAGES NEEDED TO GROW WORKING SET ABOVE QUOTA . AWSTIME: CPU TIME NEEDED FOR QUANTUM END ADJUSTMENT . AWSMIN: MINIMUM SIZE AFTER QUANTUM END ADJUSTMENT . PFRATH: FAULT RATE FOR QUANTUM END INCREASE . PFRATL: FAULT RATE FOR QUANTUM END DECREASE; DIGITAL RECOMMENDS THIS BE DISABLED (0) . WSINC: SIZE OF QUANTUM END INCREASE . WSDEC: SIZE OF QUANTUM END DECREASE ----------------------------------------------------------------------------- SWAPPER FUNCTIONS . SEVERAL FUNCTIONS . BASIC CHECKS ON REQUEST AND EVERY SECOND . ACTIONS THAT MAY RESULT (IN ORDER) - CHECK IF FREE PAGES NEEDED - WRITE MODIFIED PAGES IF SUFFICIENT - SWAP IF NOT ENOUGH MODIFIED PAGES - CHECK FOR INSWAP CANDIDATE - SWAP IF NOT ENOUGH FREE PAGES . WHEN OUTSWAP REQUESTED - CLEAN UP PROCESS HEADERS - ENOUGH FREE PAGES? - WRITE MODIFIED PAGES IF SUFFICIENT - SWAP OF SHRINK PROCESSES ----------------------------------------------------------------------------- SHRINKING AND SWAPPING . THREE WAYS TO GET MEMORY FROM PROCESS - TRIM TO QUOTA - TRIM TO SWPOUTPGCNT - SWAP . PROCESSES DIVIDED INTO CLASSES BASED ON STATE - SUSPENDED - DORMANT - LOCAL EVENT FLAG, NO DIRECT I/O . . . - COMPUTABLE . CLASSES GROUPED BY PROBABILITY OF BEING COMPUTABLE . BY CLASS, SHRINK ALL PROCESSES TO QUOTA - ONLY SUSPENDED AND DORMANT SWAPPED . FOR EACH CLASS - SHRINK TO SWPOUTPGCNT IF REQUESTED - SWAP . MOVE ON TO NEXT CLASS AFTER SWAPPING . RELATIVE PROCESS PRIORITIES RELEVANT FOR SOME CLASSES - NEVER SWAP COMPUTABLE FOR LOWER PRIORITY INSWAP - NON-COMPUTABLE PRIORITY IGNORED AFTER FAILURES ----------------------------------------------------------------------------- SWAP CONTROLS . ASSEMBLY TIME TABLES . SYSGEN PARAMETERS . SWPOUTPGCNT: SHRINK TO THIS SIZE BEFORE SWAP . SWPRATE: RATE OF OUTSWAPS TO INSWAP LOW PRIORITY PROCESSES . SWPFAIL: FAILED OUTSWAP ATTEMPTS BEFORE IGNORING PRIORITY AND INITIAL QUANTUM