Virtual memory addresses the problems of memory management by using secondary storage like hard disks to simulate more main memory than is physically installed. It implements an address translation system using page tables and segmentation to map virtual addresses to physical addresses, with techniques like paging, segmentation, two-level page tables, and translation lookaside buffers. This allows programs to behave as if they have vastly more memory than actually available.