Uni-programming involves running one program at a time on a computer system, with the operating system managing the execution of each program sequentially. Under this approach, programs must go through an input/output phase and a computing phase separately. As a result, the CPU is often idle as it waits for I/O operations to complete, leading to poor CPU usage when only one program is in memory. Some disadvantages of uni-programming include no interaction between the user and computer during program execution, no way to prioritize processes, and low CPU utilization.