This document summarizes memory allocation and management techniques in computer systems. It compares uniprogramming and multiprogramming systems, discussing how multiprogramming improves processor utilization by allowing multiple processes to occupy memory simultaneously. It describes different types of queues used in memory and processor scheduling. It also discusses fixed and variable partitioning for allocating memory to processes, noting variable partitioning is more advantageous as it allows reallocating memory. Finally, it provides an example of virtual to physical address mapping in MIPS R2/3000 architecture.