This document discusses different techniques for organizing main memory, including contiguous allocation, segmentation, and paging. Contiguous allocation allocates each process to a single contiguous block of memory, limiting multiprogramming. Segmentation and paging allow non-contiguous allocation through memory mappings. Paging maps virtual to physical addresses using a page table, with pages typically being 4KB each. Context switch time can increase significantly if processes need to be swapped in from disk. Fragmentation also limits available memory as free spaces become scattered and non-contiguous.