There was a time in the 1980s when a computer did one and only one task at a time. In the times of MS-DOS and CP/M, one could execute an application, exit from it back to the prompt, and then invoke another. Additionally, Unix-like systems used the concept of multiuser usage, where each user could run separate applications. While the OS can be multitasking—running several apps—each application can perform different tasks. For example, downloading a file asynchronously while playing music and updating the progress bar. To understand this concept better, we need to look into these three important topics: processes, multitasking, and threads.