Bigger and faster systems allow multiple task in memory at same time.
Monitor responsible for
Giving each task a share of time (most often while the other tasks
were waiting for I/O to complete).
Providing I/O for each task
Application calls a system routine to draw character on screen
Rather than directly talking to video card.
Guarding each task from the other tasks.
At this point, the monitor basically became the OS.
Early jobs were "batch" meaning all info about task was defined before
hand and left to the OS to complete.
OS runs each task to completion unless waiting for I/O.
OS switches to another task while waiting.
No interaction with user.
Problems
Users want to interact with task as it is running.
Some tasks tend to consume most of the resources.
Solution
To solve both problems,
OS must distribute the processing of each task more evenly.
Known as time sharing (and priority).
OS allows each task a small portion of time (time slice)
To compute and access system resources including I/O.
As each task's turn ends,
The OS preserves snapshot of resources or environment of current task.
OS recalls snapshot of another task to be re-activated and runs it.
This swapping is called context switching.
Context switching takes time and additional resources to implement.
Time slices should be small enough to cause task to appear as if running
concurrently and continuously.
If time slice too big,
Interactive programs difficult to work with.
If time slice too small,
then the overhead of the context switching becomes burdensome.
Next