multiprogramming as a way to allow multiple programs being resident in main memory and (apparently) running at the same time.
Then, multitasking refers to multiple tasks running (apparently) simultaneously by sharing the CPU time.
Finally, multiprocessing describes systems having multiple CPU
No multiprogramming no memory protection needed...