operating systems can run multiple programs at once.
the os is responsible for switching between running tasks, allocating each of them some of the cpu's processing time.
the process of allocating processor time to tasks is known as scheduling.
operating systems can use different scheduling algorithms, including first come first served (fcfs), time slicing and shortest job first (sjf)