A network operating system must provide multitasking support for the multiple users who access the server remotely via the network. This is because only one user at a time uses a desktop computer; however, multiple users simultaneously use server computers.
Multitasking, which is the ability of an operating system to execute more than one program — called a task or a process — at a time. Multitasking operating systems are like the guy who used to spin plates balanced on sticks on the old Ed Sullivan Show. He’d run from plate to plate, trying to keep them all spinning so they wouldn’t fall off the sticks.
Although multitasking creates the appearance that multiple programs are executing on the computer at one time, in reality, a computer with a single processor executes only one program at a time. The operating system switches the CPU from one program to another to create the appearance that several programs are executing simultaneously, but at any given moment, only one program is executing. The others are patiently waiting for their turns.
However, if the computer has more than one CPU, the CPUs can execute programs simultaneously, which is called multiprocessing.
To see multitasking in operation on a Windows computer, press Ctrl+Alt+Delete to bring up the Windows Task Manager and then click the Processes tab. All the tasks currently active on the computer appear.
For multitasking to work reliably, the network operating system must completely isolate the executing programs from each other. Otherwise, one program may perform an operation that adversely affects another program. Multitasking operating systems do this by providing each task with its own unique address space that makes it almost impossible for one task to affect memory that belongs to another task.
In most cases, each program executes as a single task or process within the memory address space allocated to the task. However, a single program can also be split into several tasks. This technique is usually called multithreading, and the program’s tasks are called threads.
The two approaches to multitasking are preemptive and non-preemptive. In preemptive multitasking, the operating system decides how long each task gets to execute before it should step aside so that another task can execute. When a task’s time is up, the operating system’s task manager interrupts the task and switches to the next task in line. All the network operating systems in widespread use today use preemptive multitasking.
The alternative to preemptive multitasking is non-preemptive multitasking. In non-preemptive multitasking, each task that gets control of the CPU is allowed to run until it voluntarily gives up control so that another task can run.
Non-preemptive multitasking requires less operating system overhead because the operating system doesn’t have to keep track of how long each task has run. However, programs have to be carefully written so that they don’t hog the computer all to themselves.