announcement no deadline
play

Announcement (No deadline extension for the rest of quarter) - PowerPoint PPT Presentation

Announcement (No deadline extension for the rest of quarter) Project 2 final deadline is Tuesday midnight May 19 Project 0 resubmission for autograding : June 1 (changed) Project 0 score =max(old score, old score *0.10 + new score


  1. Announcement (No deadline extension for the rest of quarter)  Project 2 final deadline is Tuesday midnight May 19  Project 0 resubmission for autograding : June 1 (changed)  Project 0 score =max(old score, old score *0.10 + new score *0.90).  Donot print “shell>” prompt.  Project 3A (May 29).  Harness code is released and will be updated.  Optional Project 3B (June 4). -- You can use Project 3B to replace midterm OR one of project scores: Project 1, 2, 3A . 5/28/2015 1

  2. Project 3A CS 170, Tao Yang

  3. High-level Summary  Objective: Virtual memory management for program execution when memory is not enough.  vm directory for 3A is empty  Need to come up a design and code  you donot have to follow harness code  Test C programs ~cs170/nachos-projtest/proj3a  Amount of work  ~300 lines or less of code in vm ( few changes in userprog)  Simplification is allowed using Linux file I/O instead of Nachos file I/O in swap space management 5/28/2015 3

  4. Test program that needs more than 32 pages #include "syscall.h" C program binary nachos – x binary char array[128*32]; main() { Project 2 VM char *str = "Hello world!\n"; code management array[0]=‘a’; Write(hello_str, strlen(str)+1, 1); } Execution result

  5. Sawp in/swap out Disk Initially allocate 0 memory page to program B. Store B’s pages in swap space Bring a page into memory ONLY when it is needed

  6. Sawp in/swap out Disk Swap Space 512 sectors (128B/sector) Directory Files Swap Space Manager get/put/free Virtual Memory Manager free page management replacement management swap-in/out

  7. Example 1  Assume SWAP has 10 free sectors. Memory has 3 free pages. Program A’s virtual pages: 0, 1, 2,3 Use a random replacement policy  Load binary of program A:  Allocate 4 sectors in SWAP: 4, 5, 6,7.  Copy virtual page content of A to sectors 4, 5, 6, 7 in SWAP  Notice NO memory pages are allocated to program A.  Execute program A and read code in virtual addr 0.  Page fault  need to fetch virtual page 0 of A  Allocate one free memory page to virtual page 0.  Allocate Frame #1  Load sector #4 from disk to Frame #1.  Resume the instruction execution at virtual addr 0. 5/28/2015 7

  8. Example 1 with 3-page memory and 10-sector SWAP Disk Memory frames SWAP with 10 sectors 0 4,5,6,7 used for Program A: 1 Vpage 0, 1, 2,3 2 Directory Page table A Files 0 Invalid Program A binary 1 Invalid 2 Invalid 3 Invalid Program A needs 4 virtual pages

  9. Example 1 with 3-page memory and 10-sector SWAP Disk Memory frames SWAP with 10 sectors 0 4,5,6,7 used for Program A: 1 Vpage 0, 1, 2,3 2 Directory Page table A Files 0 1 Program A binary 1 Invalid 2 Invalid 3 Invalid Program A needs 4 virtual pages

  10. Example 2  Assume SWAP has 6 free sectors left.  Program A’s pages occupy Sectors #4,5,6,7.  Memory is used by Program A’s virtual pages: 0, 1, 2  Occupy frames 1, 0, 2  Access virtual address of A in 3*128 +2:  That is virtual page #3.  Identify frame #0 as victim  Copy out content of Frame #0 (virtual page #1 of A) to Sector #5 in SWAP  Copy Sector #7 from SWAP to Frame #0.  Set up page table entry for the victim address space and current address space properly.  Resume the instruction execution to access virtual addr 3*128+2. 5/28/2015 10

  11. Example 2: Program A needs Virtual Page 3 Disk Memory frames SWAP with 10 sectors 0 4,5,6,7 used for Program A: 1 Vpage 0, 1, 2,3 2 Directory Page table A Files 0 1 Program A binary 1 0 2 2 3 Invalid Frame #0 (for page #1 of A) is victim

  12. Example 2 after virtual page 3 is loaded Disk Memory frames SWAP with 10 sectors Swap in 0 4,5,6,7 used for Program A: 1 Vpage 0, 1, 2,3 Swap out 2 Directory Page table A Files 0 1 Program A binary 1 invalid 2 2 3 0 Frame #0 (for page #1 of A) is victim

  13. Example 3: Program B is loaded Disk Memory frames SWAP with 10 sectors 0 0, 1, 2 used for program B. 1 4,5,6,7 used for Program A 2 Directory Page table A Program B binary 0 1 Program A binary 1 invalid 2 2 3 0 Page table B Program B needs 3 virtual pages 0 invalid 1 invalid 2 invalid

  14. Example 3  Assume Program B is loaded by Exec()  Program B needs 3 pages.  Allocate 3 free sectors in SWAP.  Program B’s pages occupy Sectors #0, 1,2  Access virtual address 0 of B:  That is virtual page #0 of B  Identify Frame #2 as victim  Copy out content of Frame #2 (virtual page #2 of A) to Sector #6 in SWAP  Copy Sector #0 from SWAP to memory frame #2.  Set up page table entry for the victim address space and current address space properly  Resume the instruction execution to access virtual addr 0 of program B 5/28/2015 14

  15. Example 3: after addr 0 of Program B is accessed Disk Memory frames SWAP with 10 sectors 0 0, 1, 2 used for program B. 1 4,5,6,7 used for Program A 2 Directory Page table A Program B binary 0 1 Program A binary 1 invalid 2 invalid 3 0 Page table B 0 2 1 invalid Frame #2 (for page #2 of A) 2 invalid is victim

  16. How to access a sector in SWAP?  Page size = sector size =128 bytes  Access sector x  Open the SWAP file  Seek position: x*128 in the SWAP file  Length 128.  Functions to write/read sector content  Use Nachos OpenFile’s ReadAt(), WriteAt()  Or Linux file read/write.  How to determine a sector is available?  Use a bitmap. Or any method you want. 16

  17. How to set up the initial content of virtual page?  See Project 2 implementation/solution on how to set up n virtual pages of an address space (addrspace.cc)  Read the binary from disk  Set up code/data/stack etc.  For project 3A, instead of allocating n memory frames for this address space  Allocate n free disk sectors in SWAP  Copy content of n virtual pages one by one to these sectors using Write().  If duplicating a child address space from a parent space, make sure you use the latest in-memory copy of parent pages if they have been modified (dirty). 17

  18. Project 3A: Virtual Memory  Work on vm subdirectory mainly  + addrspace.cc/.h and exception.cc in userprog  Create/manage a backing store (a file called SWAP using the OpenFile class).  Implement a page fault handler with dirty bit handling and a page replacement policy (LRU or second chance)  Test under various conditions:  One process with an address space larger than physical memory.  Concurrent processes with combined address space larger than physical memory. 5/28/2015 18

  19. Report to be submitted  P3A_WRITEUP Summarize what is completed, what is not. 1. describe the design of VM 2.  Describe design options and their trade-offs.  List/explain main components and code modification in implementing your design Summarize the test effort (what is passed, 3. the purpose of each test) 5/28/2015 19

  20. Start with Sample Code  Makefiles + harness code  SWAP space manager (but Dani combines this manager with VM page manager)  Used to maintain information about pages that are currently in swap space.  Flag dirty pages.  VM page manager  Handle a page fault at particular address.  Identify a victim page by LRU or second- chance code.  Swap-out/swap-in 5/28/2015 20

  21. Questions  How many pages to allocate when handling Exec(binary) or Fork(function)?  0, proportionally, completely?  If not, where are new or updated pages stored?  When will a page fault exception be generated?  Where to check if a page is not in memory?  Find a physical page  Who manages a set of memory pages used?  How to find a free page (victim page)?  When to actually do a swap out (write to disk)?  Where to get page content from disk? 5/28/2015 21

  22. Getting Started  Read machine/translate.cc and machine.cc:  In Machine:Translate() for virtual address Assembly code: read translation, PageFaultException is detected when data the desired page is not in memory.  In Machine:ReadMem, Translate() is called for translating the desired virtual memory address and machine->RaiseException() is called with PageFaultException error. Translate Addr  In Machine:RaiseException()  registers[BadVAddrReg] stores bad address.  Change to system mode.  Call ExceptionHandler Page fault

  23. What is next  Read mipssim.cc  Machine->ReadMem() is called in executing each instruction.  If PageFaultException is detected, the exception handler should load the desired page.  The hardware will try again.  Need to expand exception.cc to handle PageFaultException.  Once handled, return to user mode and restart the instruction caused the fault

  24. User Instruction Execution Re-execute if Machine:Run () Exception is raised OneInstruction () ReadMem () WriteMem () Machine:Translate() Page writing? Set dirty bit Cannot find this page? Raise PageFaultException ExceptionHandler() Deal with PageFaultException

  25. Files to be modified for Part A  New files in directory vm  Virtual memory manager  Swap space manager  Directory userprog (extension to Project 2)  exception.cc  Extension to handle PageFaultException  Addrspace.cc/.h  Prepare code/data for SWAP backstore.  Virtual address translation -> paging if needed

Recommend


More recommend