Virtual Memory
Virtual Memory
VIRTUAL MEMORY
DEMAND PAGING
COPY-ON-WRITE
PAGE REPLACEMENT
ALLOCATION OF FRAMES
THRASHING
MEMORY-MAPPED FILES
ALLOCATING KERNEL MEMOR
VIRTUAL MEMORY
• Virtual memory – separation of user logical memory from physical
memory
• Only part of the program needs to be in memory for execution
• Logical address space can therefore be much larger than physical address
space
• Allows address spaces to be shared by several processes
• Allows for more efficient process creation
• More programs running concurrently
• Less I/O needed to load or swap processes
VIRTUAL MEMORY (CONT.)
• DEMAND PAGE IN FROM PROGRAM BINARY ON DISK, BUT DISCARD RATHER THAN
PAGING OUT WHEN FREEING FRAME
• USED IN SOLARIS AND CURRENT BSD
• STILL NEED TO WRITE TO SWAP SPACE
• PAGES NOT ASSOCIATED WITH A FILE (LIKE STACK AND HEAP) –
ANONYMOUS MEMORY
• PAGES MODIFIED IN MEMORY BUT NOT YET WRITTEN BACK TO THE FILE
SYSTEM
• MOBILE SYSTEMS
• TYPICALLY DON’T SUPPORT SWAPPING
• INSTEAD, DEMAND PAGE FROM FILE SYSTEM AND RECLAIM READ-ONLY PAGES
(SUCH AS CODE)
COPY-ON-WRITE
• COPY-ON-WRITE (COW) ALLOWS BOTH PARENT AND CHILD PROCESSES TO INITIALLY
SHARE THE SAME PAGES IN MEMORY
• IF EITHER PROCESS MODIFIES A SHARED PAGE, ONLY THEN IS THE PAGE COPIED
• COW ALLOWS MORE EFFICIENT PROCESS CREATION AS ONLY MODIFIED PAGES ARE
COPIED
• VFORK() VARIATION ON FORK() SYSTEM CALL HAS PARENT SUSPEND AND CHILD
USING COPY-ON-WRITE ADDRESS SPACE OF PARENT
• DESIGNED TO HAVE CHILD CALL EXEC()
• VERY EFFICIENT
BEFORE PROCESS 1 MODIFIES PAGE C
AFTER PROCESS 1 MODIFIES PAGE C
WHAT HAPPENS IF THERE IS NO FREE
FRAME?
• USED UP BY PROCESS PAGES
• ALSO IN DEMAND FROM THE KERNEL, I/O BUFFERS, ETC
• HOW MUCH TO ALLOCATE TO EACH?
• PAGE REPLACEMENT – FIND SOME PAGE IN MEMORY, BUT
NOT REALLY IN USE, PAGE IT OUT
• ALGORITHM – TERMINATE? SWAP OUT? REPLACE THE PAGE?
• PERFORMANCE – WANT AN ALGORITHM WHICH WILL RESULT
IN MINIMUM NUMBER OF PAGE FAULTS
• PAGE-REPLACEMENT ALGORITHM
• WANT LOWEST PAGE-FAULT RATE ON BOTH FIRST ACCESS AND RE-ACCESS
15 page faults
• STACK IMPLEMENTATION
• KEEP A STACK OF PAGE NUMBERS IN A DOUBLE LINK FORM:
• PAGE REFERENCED:
• MOVE IT TO THE TOP
• REQUIRES 6 POINTERS TO BE CHANGED
• BUT EACH UPDATE MORE EXPENSIVE
• NO SEARCH FOR REPLACEMENT
LRU ALGORITHM (CONT.)
• LRU AND OPT ARE CASES OF STACK ALGORITHMS THAT
DON’T HAVE BELADY’S ANOMALY
• USE OF A STACK TO RECORD MOST RECENT PAGE
REFERENCES
LRU APPROXIMATION ALGORITHMS
• LRU NEEDS SPECIAL HARDWARE AND STILL SLOW
• REFERENCE BIT
• WITH EACH PAGE ASSOCIATE A BIT, INITIALLY = 0
• WHEN PAGE IS REFERENCED BIT SET TO 1
• REPLACE ANY WITH REFERENCE BIT = 0 (IF ONE EXISTS)
• WE DO NOT KNOW THE ORDER, HOWEVER
LRU APPROXIMATION ALGORITHMS (CONT.)
• SECOND-CHANCE ALGORITHM
• GENERALLY FIFO, PLUS HARDWARE-PROVIDED REFERENCE
BIT
• CLOCK REPLACEMENT
• IF PAGE TO BE REPLACED HAS
• REFERENCE BIT = 0 -> REPLACE IT
• REFERENCE BIT = 1 THEN:
• SET REFERENCE BIT 0, LEAVE PAGE IN MEMORY
• REPLACE NEXT PAGE, SUBJECT TO SAME RULES
SECOND-CHANCE ALGORITHM
ENHANCED SECOND-CHANCE ALGORITHM
• MANY VARIATIONS
FIXED ALLOCATION
• EQUAL ALLOCATION – FOR EXAMPLE, IF THERE ARE 100
FRAMES (AFTER ALLOCATING FRAMES FOR THE OS) AND 5
PROCESSES, GIVE EACH PROCESS 20 FRAMES
• KEEP SOME AS FREE FRAME BUFFER POOL
LOCALITY MODEL
• PROCESS MIGRATES FROM ONE LOCALITY TO ANOTHER
• LOCALITIES MAY OVERLAP
• PROGRAM 2
FOR (I = 0; I < 128; I++)
FOR (J = 0; J < 128; J++)
DATA[I,J] = 0;
• WINDOWS
• SOLARIS
WINDOWS
• USES DEMAND PAGING WITH CLUSTERING. CLUSTERING
BRINGS IN PAGES SURROUNDING THE FAULTING PAGE
• PROCESSES ARE ASSIGNED WORKING SET MINIMUM AND
WORKING SET MAXIMUM
• WORKING SET MINIMUM IS THE MINIMUM NUMBER OF PAGES
THE PROCESS IS GUARANTEED TO HAVE IN MEMORY
• A PROCESS MAY BE ASSIGNED AS MANY PAGES UP TO ITS
WORKING SET MAXIMUM
• WHEN THE AMOUNT OF FREE MEMORY IN THE SYSTEM FALLS
BELOW A THRESHOLD, AUTOMATIC WORKING SET TRIMMING
IS PERFORMED TO RESTORE THE AMOUNT OF FREE MEMORY
• WORKING SET TRIMMING REMOVES PAGES FROM PROCESSES
THAT HAVE PAGES IN EXCESS OF THEIR WORKING SET
MINIMUM
SOLARIS
• MAINTAINS A LIST OF FREE PAGES TO ASSIGN FAULTING
PROCESSES
• LOTSFREE – THRESHOLD PARAMETER (AMOUNT OF FREE
MEMORY) TO BEGIN PAGING
• DESFREE – THRESHOLD PARAMETER TO INCREASING PAGING
• MINFREE – THRESHOLD PARAMETER TO BEING SWAPPING
• PAGING IS PERFORMED BY PAGEOUT PROCESS
• PAGEOUT SCANS PAGES USING MODIFIED CLOCK ALGORITHM
• SCANRATE IS THE RATE AT WHICH PAGES ARE SCANNED. THIS
RANGES FROM SLOWSCAN TO FASTSCAN
• PAGEOUT IS CALLED MORE FREQUENTLY DEPENDING UPON THE
AMOUNT OF FREE MEMORY AVAILABLE
• PRIORITY PAGING GIVES PRIORITY TO PROCESS CODE PAGES
SOLARIS 2 PAGE SCANNER
END OF CHAPTER 10
Operating System Concepts – 10th Edition Silberschatz, Galvin and Gagne ©2018
PERFORMANCE OF DEMAND PAGING
• STAGES IN DEMAND PAGING (WORSE CASE)
1. TRAP TO THE OPERATING SYSTEM
4. CHECK THAT THE PAGE REFERENCE WAS LEGAL AND DETERMINE THE LOCATION OF THE PAGE ON THE DISK
8. SAVE THE REGISTERS AND PROCESS STATE FOR THE OTHER USER
10. CORRECT THE PAGE TABLE AND OTHER TABLES TO SHOW PAGE IS NOW IN MEMORY
12. RESTORE THE USER REGISTERS, PROCESS STATE, AND NEW PAGE TABLE, AND THEN RESUME THE
INTERRUPTED INSTRUCTION
NEED FOR PAGE REPLACEMENT
PRIORITY ALLOCATION
• USE A PROPORTIONAL ALLOCATION SCHEME USING
PRIORITIES RATHER THAN SIZE