Krishnaveni Naik discusses multi-programming in an operating system. Multi-programming allows more than one program to execute concurrently by switching between programs rapidly. There are two main types: multi-user systems that allow multiple users to access a single computer simultaneously, and multitasking systems that permit multiple tasks to run concurrently by allocating CPU and memory resources dynamically between processes. Advantages include reduced response times and improved throughput, while disadvantages include increased complexity in scheduling algorithms and memory management.