Next Homework Preview MPI OpenMP Virtual Memory Naive (Old) Model Copy entire Programmers Model, store in RAM Problems unable to grow processes fragmentation / loss of space no checks for overwriting processes no space / system for extra processes - (esentially use DMTCP) Relative Addresses - Basic Solution Registers Base Register - starts at top of the text - always added to the offset Bound Register - the size of the region - prevents overwriting creates relative addresses that are easy to address and calculate Address Space - the memory region of a process Virtual Address Space - given the whole memory size minus the OS (Ex: 1GB) Physical Address Space - the size of the RAM Paging - avoiding fragmentation Possible Approaches Put each region in its own section - not good enough divide into very small pieces (4KB) - good enough, but we need to implement this no base address for processes anymore Page Tables Summary Each Virtual Address is translated into a page number or set of numbers and an offset Available for each process Example: 0x00410123 Page #: 0x00410 Offset: 123 - max size of the hex number = the size of the page Problem 1 Million Pages with 4GB VA size Size Per Page Table Entry: 8 Page Tables Cumulative Size: 8 Million (per process) 200 Processes -> 1.6GB for storage of page tables - way too much Not scalable to even be feasible with 64 bit system Solution Multiple levels of paging