Operating Systems
Chapter one
Introduction
Topics
• What is an operating system?
• Operating System Functions
• Operating System Goals
• Computer System Components
• History of Operating System
• Types of Operating System
What is an Operating system
• A program that acts as an intermediary
between a user of a computer and the
computer hardware
• A systems program which controls and
manages all the computer's resources and
provides a base upon which application
programs can be written
Operating System functions
• Extending the machine: hiding the internal
complication of the hardware and presenting
simple view that is simpler and easier to use
– E.g. files instead of physical disk addresses
• Managing resources : provides an orderly and
controlled allocation of resources ( processers,
memories, printers ,etc) among various
programs competing for them
– E.g. printing service, space and time multiplexing
Operating system goals
• Execute user programs and make solving
user problems easier
• Make the computer system convenient
to use
• Use the computer hardware in an
efficient manner
Computer System Components
• Hardware - provides basic computing resources
(CPU, memory, I/O devices).
• Operating system - controls and coordinates the
use of the hardware among the various
application programs for the various users.
• Applications programs - define the ways in which
the system resources are used to solve the
computing problems of the users (compilers,
database systems, video games, business pro
grams).
• Users (people, machines, other computers).
Computer System
Cont’d
• Early Software
– Assemblers
– Loaders
– Linkers
– Libraries of common subroutines
– Compilers
– Device drivers
Operating System
• Resource allocator - manages and allocates
resources.
• Control program - controls the execution of
user programs and operation of I/O devices.
• Kernel - the one program running at all times
(all else being application programs).
Early Systems - bare machine (early 1950s) - First Generation
• Structure
– Large machines run from console
– Single user system
– Programmer/User as operator
– Paper tape or punched cards
• Secure
• Inefficient use of expensive resources
– Low CPU utilization
– Significant amount of setup time
Simple Batch Systems - Second Generation
• Use an operator (somebody to work the machine)
• Add a card reader (a device to read programs written
on punched cards)
• Reduce setup time by batching similar jobs
• Automatic job sequencing - automatically transfers
control from one job to another. First rudimentary
operating system
• Resident monitor
– initial control in monitor
– control transfers to job
– when job completes control transfers back to monitor
Problems
• How does the monitor know about the nature
of the job (e.g., Fortran versus Assembly) or
which program to execute?
• How does the monitor distinguish
– job from job?
– data from program?
• Solution: introduce control cards
– Special cards that tell the resident monitor which
programs to run
Control Cards
Cont’d
• Parts of resident monitor
– Control card interpreter - responsible for reading and
carrying out instructions on the cards.
– Loader - loads systems programs and applications
programs into memory.
– Device drivers - know special characteristics and
properties for each of the system's I/O devices.
• Problem: Slow Performance - since I/O and CPU
could not overlap, and card reader very slow.
• Solution: Off-line operation - speed up
computation by loading jobs into memory from
tapes and card reading and line printing done off-
line using smaller machines.
Cont’d
Cont’d
• Advantage of off-line operation - main computer
not constrained by the speed of the card readers
and line printers, but only by the speed of faster
magnetic tape units.
• No changes need to be made to the application
programs to change from direct to off-line I/O
operation.
• Real gain - possibility of using multiple reader to-
tape and tape-to-printer systems for one CPU.
• Spooling - overlap the I/O of one job with the
computation of another job
Cont’d
Cont’d
• (Simultaneous Peripheral Operation On Line)
Simple Multiprogramming.
– While executing one job, the operating system
reads the next job from the card reader into a
storage area on the disk (job queue).
– outputs the printout of previous job from disk to
the line printer.
– Job pool - data structure that allows the operating
system to select which job to run next, in order to
increase CPU utilization.
Multiprogramming and Time Sharing-
Third Generation
• Multiprogramming
• Several jobs are kept in main memory at the
same time, and the CPU is shared between
them
• Each job is called a process
OS Features Needed for
Multiprogramming
• I/O routine supplied by the system.
• Memory management - the system must
allocate the memory to several jobs.
• CPU scheduling - the system must choose
among several jobs ready to run.
• Allocation of devices.
Time-Sharing Systems- Interactive
Computing
• Most efficient for many users to share a large
computer.
• The CPU is shared between several processes.
• Each process belongs to a user and I/O is
to/from a separate terminal for each user.
• On-line file system must be available for users
to access data and code
Personal-Computer Systems - Fourth
Generation
• Personal computers - computer system
dedicated to a single user.
• I/O devices - keyboards, mice, display screens,
small printers.
• User convenience and responsiveness.
• Can adopt technology developed for larger
operating systems; often individuals have sole
use of computer and do not need advanced
CPU utilization or protection features.
Parallel Systems - multiprocessor systems with more than
one CPU
• Tightly coupled system - processors share memory and a clock;
communication usually takes place through the shared
memory.
• Advantages of parallel systems:
– Increased throughput
– Economical
– Increased reliability
• Symmetric multiprocessing
– Each processor runs an identical copy of the operating system.
– Many processes can run at once without performance deterioration.
• Asymmetric multiprocessing
– Each processor is assigned a specific task; master processor
schedules and allocates work to slave processors.
– More common in extremely large systems
Types of Operating system
• Mainframe Operating system: operating systems
heavily oriented towards processing many jobs at
once most of which need intensive input output.
Typically they offer three kinds of jobs
– Batch: routine jobs without interactive user present
– Transaction processing: large number of small jobs
– Time sharing: multiple remote users run jobs at once
• Server Operating system: run on servers that
serve multiple users over a network and allow
users to share hardware and software resources.
– Can provide print service, file service or web service
Cont’d
• Multi Processor Operating system: multiple CPU
in one system, a variation on server OS with some
special features for communication and
connectivity
• Personal Computer Operating system: provide a
good interface for a single user
• Real Time Operating system: Often used as a
control device in a dedicated application such as
controlling, scientific experiments, medical
imaging systems, industrial control systems, and
some display systems
Cont’d
• Embedded Operating System: run on the
computers that control devices that are not
generally thought of as computers such as Tv,
microwave ovens and DVD
• Smart Card Operating System: handle only a
single function such as electronic payments
Operating system components
• Process Management
• Main-Memory Management
• Secondary-Storage Management
• I/O System Management
• File Management
• Protection System
• Networking
• Command-Interpreter System
Process Management
• A process is a program in execution. A process needs
certain resources, including CPU time, memory, files,
and I/O devices, to accomplish its task.
• The operating system is responsible for the following
activities in connection with process management:
– process creation and deletion.
– process suspension and resumption (scheduling).
– provision or mechanisms for:
• process synchronization
• process communication
• Process management is usually performed by the
kernel
Main-Memory Management
• Memory is a large array of words or bytes, each with
its own address. It is a repository of quickly
accessible data shared by the CPU and I/O devices.
• The operating system is responsible for the following
activities in connection with memory management:
– Keep track of which parts of memory are currently being
used and by whom.
– Decide which processes to load when memory space
becomes available.
– Allocate and deallocate memory space as needed. e.g.
the C function 'malloc' (or 'New' in Pascal) allocates a
specified amount of memory; this happens via an OS call.
The functions 'free'(C) and 'Dispose'(Pascal) deallocate
this memory.
I/O System Management
• The I/O system consists of:
– A buffer-caching system
– A general device-driver interface
– Drivers for specific hardware devices (device
drivers)
• Device Drivers
– Must have access to I/O hardware
– Must be able to handle interrupts.
– Communicate with other parts of the OS (File
system, Networking etc)
File Management
• A file is a collection of related information.
• Commonly, files represent programs (both source and
object forms) and data.
• Files may also be used to represent devices (e.g. lpt1: in
DOS).
• The operating system is responsible for the following
activities in connection with file management:
– File creation and deletion.
– Directory creation and deletion.
– Support of primitives for manipulating files and directories.
– Mapping files onto secondary storage e.g. free space
allocation.
– File backup on stable (non-volatile) storage media
Protection System
• Protection refers to a mechanism for
controlling access by programs, processes, or
users to both system and user resources.
• Operating Systems commonly control access
by using permissions.
• All system resources have an owner and a
permission associated with them.
• Users may be combined into groups for the
purpose of protection. e.g. in UNIX every file
has an owner and a group.
Cont’d
• The following is a listing of all the information about a file
• rwx-rx-r-- martin staff 382983 Jan 18 10:20 notes305.html
• The first field is the protection information; it shows the
permissions for the owner, then the group, then everybody else.
• The first rwx means that the owner has read, write and execute
permissions.
• The next rx means that the group has read and execute
permissions.
• The next r-- means that all other users have only read
permission.
• The name of the owner of the file is martin; the name of the
group for the file is staff; the length of the file is 382983 bytes;
the file was created on Jan 18 at 10:20 and the name of the file
is: notes305.html
• There is usually a special user corresponding to the system
administrator, this user has permission to do anything. On UNIX
systems this user is called root
Networking (Distributed Systems)
• A distributed system is a collection of processors
that do not share memory or a clock.
• Each processor has its own local memory.
• The processors in the system are connected
through a communication network.
• A distributed system provides user access to various
system resources.
• Access to a shared resource allows:
– Computation speed-up
– Increased data availability
– Enhanced reliability
Command-Interpreter
• Many commands are given to the operating
system by control statements which deal with:
– process creation and management (e.g. running a
program)
– I/O handling (e.g. set terminal type)
– secondary-storage management (e.g. format a disk)
– main-memory management (e.g. specify virtual
memory parameters)
– file-system access (e.g. print file)
– protection (e.g. set permissions)
– networking (e.g. set IP address)
Cont’d
• The program that reads and interprets control
statements is called variously:
– command-line interpreter
– shell (in UNIX)
• Its function is to get and execute the next
command statement.
• Some operating systems have no command
line interpreter and use a GUI for all
• system administration (e.g. NT).
Operating-System Services
• Program execution - ability to load a program into
memory and to run it.
• I/O operations - since user programs cannot execute I/O
operations directly, the operating system must provide
some means to perform I/O.
• File-system manipulation - capability to read, write,
create, and delete files.
• Communications - exchange of information between
processes executing either on the same computer or on
different systems tied together by a network.
Implemented via shared memory or message passing.
• Error detection - ensure correct computing by detecting
errors in the CPU and memory hardware, in I/O devices,
or in user programs.
Cont’d
• Additional operating-system functions exist not for
helping the user, but rather for ensuring efficient system
operation.
• Resource allocation - allocating resources to multiple
users or multiple processes running at the same time.
• Accounting - keep track of and record which users use
how much and what kinds of computer resources for
account billing or for accumulating usage statistics.
• Protection - ensuring that all access to system resources
is controlled.
System Calls
• System calls provide the interface between a
running program and the operating system.
– Generally available as an assembly-language instruction
to generate a software interrupt. (e.g. INT 21H in DOS)
– Systems programming languages such as C allow
system calls to be made directly.
• Three general methods are used to pass
parameters between a running program and the
operating system:
– Pass parameters in registers.
– Store the parameters in a table in memory, and the
table address is passed as a parameter in a register.
– Push (store) the parameters onto the stack by the
program, and pop off the stack by the operating system.
System Programs
• System programs provide a convenient environment
for program development and execution. They can be
divided into:
– File manipulation
– Status information
– File modification
– Programming-language support
– Program loading and execution
– Communications
– Application programs
• Most users' view of the operation system is defined by
system programs, not the actual system calls.
System Structure - Simple Approach
• MS-DOS - written to provide the most functionality in the
least space; it was not divided into modules. MS-DOS has
some structure, but its interfaces and levels of functionality
are not well separated.
• UNIX - limited by hardware functionality, the original UNIX
operating system had limited structuring. The UNIX OS
consists of two separable parts:
– the systems programs.
– the kernel, which consists of everything below the system-call
interface and above the physical hardware. Provides the file system,
CPU scheduling, memory management, and other operating-system
functions; a large number of functions for one level.
• Often this is called a Monolithic Kernel
Cont’d
• Many modern operating systems use a
Microkernel - The kernel provides
• only the following minimal services.
– Inter process communication.
– Memory management.
– Low level process management.
– Low Level I/O
• All other services are provided by user level
processes
System Structure - Layered Approach
• The operating system is divided into a number of
layers (levels), each built on top of lower layers.
• The bottom layer (layer 0) is the hardware; the
highest (layer N) is the user interface.
• With modularity, layers are selected such that each
uses functions (operations) and services of only
lower-level layers.
• A layered design was first used in the THE operating
system of Dijkstra in 1968.
• Its six layers are as follows:
Cont’d
Level 5: user programs
_______________________________________________
Level 4: buffering for input and output devices
_______________________________________________
Level 3: operator-console device driver
_______________________________________________
Level 2: memory management
_______________________________________________
Level 1: CPU scheduling
_______________________________________________
Level 0: hardware
_______________________________________________
Virtual Machines
• A virtual machine takes the layered approach to its logical
conclusion. It treats hardware and the operating system kernel
as though they were all hardware.
• A virtual machine provides an interface identical to the
underlying bare hardware.
• The operating system creates the illusion of multiple processes,
each executing on its own processor with its own (virtual)
memory.
• The resources of the physical computer are shared to create the
virtual machines.
– CPU scheduling can create the appearance that users have their own
processor.
– Spooling and a file system can provide virtual I/O.
– A terminal serves as the virtual machine console.
Advantages and Disadvantages of Virtual
Machines
• The virtual-machine concept provides complete protection of
system resources since each virtual machine is isolated from
all other virtual machines.
• This isolation, however, permits no direct sharing of
resources.
• A virtual-machine system is a perfect vehicle for operating-
systems research and development. System development is
done on the virtual machine, instead of on a physical machine
and so does not disrupt normal system operation.
• The virtual machine concept is difficult to implement due to
the effort required to provide an exact duplicate of the
underlying machine.
System Design Goals
Mechanisms and Policies
• User goals - operating system should be
convenient to use, easy to learn, reliable, safe, and
fast.
• System goals - operating system should be easy to
design, implement, and maintain, as well as
flexible, reliable, error-free, and efficient.
• Mechanisms determine how to do something;
policies decide what will be done.
• The separation of policy from mechanism is a very
important principle; it allows maximum flexibility if
policy decisions are to be changed later.
System Implementation
• Traditionally written in assembly language, operating
systems are now mostly written in higher level languages.
• Code written in a high-level language:
– can be written faster.
– is more compact.
– is easier to understand and debug.
• An operating system is far easier to port (move to some
other hardware) if it is written in a high level language.
• The first OS to be written in a high-level language was
UNIX, at the time there were very few suitable languages
and so a new one was developed from an existing
language called B - it was called C
Booting
• Modern operating systems are designed to run on
machines with a wide range of different hardware.
• Booting - starting a computer by loading the kernel.
• Bootstrap program - code stored in ROM that is
able to locate the kernel, load it into memory, and
start its execution.
• Once the kernel is loaded it must identify all the
hardware present in the machine and load relevant
device drivers.