System software that manages computer hardware and software resources and provides common services for computer programs
Operating System
Behaves as a resource manager
Schedules jobs according to priority
Makes a communication link between user and system
Ability to fetch programs in memory as required
Helps in file management
Provides multiprogramming
Provides program editors and debugging aids
Provides disk maintenance ability
Process
An instance of a program running in a computer
File
A collection of data or information that has a name, called the filename
Types of files
Data files
Text files
Program files
Directory files
Operating system
Schedules and controls the running of several programs at once
Provides program editors that help the user to modify and update the program lines
Debugging aids provided by the operating system helps the user to detect and rename errors in programs
Disk maintenance ability of operating system checks the validity of data stored on diskettes and other storage to make corrections to erroneous data
System call
A way for programs to interact with the operating system
Shell
A software interface that's often a command line interface that enables the user to interact with the computer
Kernel
The first section of the operating system to load into memory, responsible for disk drive management, interrupt handler, file management, memory management, process management, etc.
Virtual machine (VM)
A software program or operating system that exhibits the behavior of a separate computer and is capable of running applications and programs like a separate computer
History of operating systems
1. First operating system created by General Motors in 1956
2. IBM mainframe operating systems in the 1960s
3. First version of Unix developed in the late 1960s
4. Microsoft Windows developed in response to IBM's request for an operating system for personal computers
Generations of operating systems
First Generation (1940's to early 1950's)
Second Generation (1955-1965)
Third Generation (1965-1980)
Fourth Generation (1980-Present Day)
Main structures of operating systems
Monolithic architecture
Layered architecture
Virtual memory architecture
Client/server architecture
Monolithic architecture
Operating system resides on kernel, system call involved for switching from user mode to kernel mode
Operating system examines parameters of system call to determine which one to carry out
Operating system indexes into a table to call the procedure that carries out the system call
Control is given back to user mode when system call is finished
Layered architecture
Operating system is broken up into number of layers, with hardware at the bottom and user interface at the top
Each layer only uses functions and services of the layer below it
Allows for simplified debugging as errors are confined to a single layer
Virtual memory architecture
Creates an illusion of a real machine, allowing multiple operating systems to run on a single real machine
Control program creates the environment for virtual machines
Conversation monitor system provides features for program development
Remote spooling communication system provides ability to transmit and receive files in distributed system
Interactive problem control system used to fix virtual machine software problems
Client/server architecture
Moves maximum code into higher level user processes, minimizing work of kernel
Kernel handles communication between client and server processes
Allows for adaptability to distributed systems as client does not need to know location of server
Types of operating systems
Batch operating system
Time-sharing operating system
Distributed operating system
Batch operating system
Users do not interact directly with the computer, jobs are prepared offline and submitted in batches
Batch operating system
Lack of interaction between user and job
CPU often idle due to slower speed of I/O devices compared to CPU
Difficult to provide desired priority
Time-sharing operating system
Enables multiple users to use the same computer system simultaneously by sharing the processor's time
Time-sharing operating system
Objective is to minimize response time, not maximize processor use
Provides quick response time
Avoids duplication of software
Reduces CPU idle time
Time-sharing operating system
Problem of reliability
Security and integrity issues for user programs and data
Data communication problems
Distributed operating system
Uses multiple central processors to serve multiple real-time applications and users, with processors communicating through communication lines
Distributed operating system
Allows resource sharing between sites
Speeds up data exchange via electronic mail
Allows continued operation if one site fails
Provides better service to customers
Reduces load on host computer
Reduces data processing delays
Distributed systems
Multiple central processors serve multiple real-time applications and multiple users, with data processing jobs distributed among the processors
Distributed systems
Processors communicate through various communication lines (such as high-speed buses or telephone lines)
Processors may vary in size and function and are referred to as sites, nodes, computers, etc.
Advantages of distributed systems
Resource sharing facility allows users to access resources at other sites
Speeds up data exchange via electronic mail
If one site fails, remaining sites can continue operating
Better service to customers
Reduces load on host computer
Reduces delays in data processing
Network Operating System
Runs on a server and provides the server the capability to manage data, users, groups, security, applications, and other networking functions
Examples of network operating systems
Microsoft Windows Server 2003
Microsoft Windows Server 2008
UNIX
Linux
Mac OS X
Novell NetWare
BSD
Advantages of network operating systems
Centralized servers are highly stable
Security is server managed
Upgrades to new technologies and hardware can be easily integrated
Remote access to servers is possible from different locations and types of systems
Disadvantages of network operating systems
High cost of buying and running a server
Dependency on a central location for most operations
Regular maintenance and updates are required
Real-time system
A data processing system in which the time interval required to process and respond to inputs is so small that it controls the environment
Real-time systems
Have well-defined, fixed time constraints, otherwise the system will fail
Used in scientific experiments, medical imaging systems, industrial control systems, weapon systems, robots, air traffic control systems, etc.
Hard real-time systems
Guarantee that critical tasks complete on time, have limited or missing secondary storage, and almost never use virtual memory
Soft real-time systems
Less restrictive, with critical real-time tasks getting priority over other tasks, used in multimedia, virtual reality, advanced scientific projects like undersea exploration and planetary rovers
Batch processing
1. OS defines a job with predefined sequence of commands, programs and data as a single unit
2. OS keeps multiple jobs in memory and executes them in first-come-first-served order
3. When a job completes, its memory is released and output is copied to an output spool
Advantages of batch processing
Takes work off the operator
Increased performance as new jobs start as soon as previous ones finish
Disadvantages of batch processing
Difficult to debug programs
Jobs can enter infinite loops
Lack of protection scheme means one job can affect others
Multitasking
Multiple jobs are executed by the CPU simultaneously by rapidly switching between them, giving users the impression of concurrent execution