94.401 Operating Systems
|
|
|
Location: RC 214 |
|
Classes: Tue 14:30 1 hour, Wed 16:30 1
hour, Fri 15:30 1 hour |
|
Instructor: Thomas Kunz |
|
tkunz@sce.carleton.ca |
|
Office: ME 4474, phone: x3573 |
|
Office Hours: Tuesdays 10-11 am,
Fridays 1-2 pm |
94.401 Operating Systems
|
|
|
|
From calendar: |
|
Introduction to operating system
principles |
|
Structure of an operating system |
|
Management of CPU, processes, and
memory |
|
Dead-lock problems |
|
File systems |
|
Concurrent programming |
|
From course handout: |
|
Introduction to operating system |
|
History, structure of an operating
system |
|
Processes, threads, and concurrency |
|
Memory management; |
|
CPU scheduling; |
|
File management. |
94.401 Operating Systems
|
|
|
Textbook: William Stallings, Operating
Systems: Internals and Design Principles, 4th edition, Prentice Hall 2001,
ISBN 0-13-031999-6. |
|
Prerequisites: Engineering 94.202 or
94.302, and 94.203 or 94.303 |
|
Three assignments, each worth 10% |
|
Midterm in class, worth 20% |
|
Final exam in April exam period, worth
50% |
|
One TA, office hours TBD |
|
Course webpage: http://kunz-pc.sce.carleton.ca/sce401/ |
Computer Systems Overview
|
|
|
|
Basically Chapter 1 in textbook |
|
OS mediates between programs and
hardware |
|
Need some basic understanding of
computer organization and hardware: |
|
processor |
|
memory |
|
I/O |
|
“Left as an exercise to the reader” |
Operating System
|
|
|
|
Is a program that controls the
execution of application programs |
|
OS must relinquish control to user
programs and regain it safely and efficiently |
|
Tells the CPU when to execute other
pgms |
|
Is an interface between the user and
hardware |
|
Masks the details of the hardware to
application programs |
|
Hence OS must deal with hardware
details |
Services Provided by the
OS
|
|
|
|
Facilities for Program creation |
|
editors, compilers, linkers, and
debuggers |
|
Program execution |
|
loading in memory, I/O and file
initialization |
|
Access to I/O and files |
|
deals with the specifics of I/O and
file formats |
|
System access |
|
Protection in access to resources and
data |
|
Resolves conflicts for resource
contention |
|
|
Services Provided by the
OS
|
|
|
|
|
Error Detection |
|
internal and external hardware errors |
|
memory error |
|
device failure |
|
software errors |
|
arithmetic overflow |
|
access forbidden memory locations |
|
Inability of OS to grant request of
application |
|
Error Response |
|
simply report error to the application |
|
Retry the operation |
|
Abort the application |
|
|
Services Provided by the
OS
|
|
|
|
Accounting |
|
collect statistics on resource usage |
|
monitor performance (eg: response time) |
|
used for system parameter tuning to
improve performance |
|
useful for anticipating future
enhancements |
|
used for billing users (on multiuser
systems) |
Evolution of an Operating
System
|
|
|
|
Must adapt to hardware upgrades and new
types of hardware. Examples: |
|
Character vs graphic terminals |
|
Introduction of paging hardware |
|
Must offer new services, eg: internet
support |
|
The need to change the OS on regular
basis place requirements on it’s design |
|
modular construction with clean
interfaces |
|
object oriented methodology |
Simple Batch Systems
|
|
|
Are the first operating systems
(mid-50s) |
|
The user submit a job (written on card
or tape) to a computer operator |
|
The computer operator place a batch of
several jobs on a input device |
|
A special program, the monitor, manages
the execution of each program in the batch |
|
Resident monitor is in main memory and
available for execution |
|
Monitor utilities are loaded when
needed |
The Monitor
|
|
|
|
Monitor reads jobs one at a time from
the input device |
|
Monitor places a job in the user
program area |
|
A monitor instruction branches to the
start of the user program |
|
Execution of user pgm continues until: |
|
end-of-pgm occurs |
|
error occurs |
|
Causes the CPU to fetch its next
instruction from Monitor |
Job Control Language
(JCL)
|
|
|
|
Is the language to provide instructions
to the monitor |
|
what compiler to use |
|
what data to use |
|
Example of job format: ------->> |
|
$FTN loads the compiler and transfers
control to it |
|
$LOAD loads the object code (in place
of compiler) |
|
$RUN transfers control to user program |
Job Control Language
(JCL)
|
|
|
|
Each read instruction (in user pgm)
causes one line of input to be read |
|
|
|
Causes (OS) input routine to be invoke |
|
checks for not reading a JCL line |
|
skip to the next JCL line at completion
of user program |
|
|
Batch OS
|
|
|
Alternates execution between user
program and the monitor program |
|
|
|
Relies on available hardware to
effectively alternate execution from various parts of memory |
|
|
Desirable Hardware
Features
|
|
|
|
Memory protection |
|
do not allow the memory area containing
the monitor to be altered by user programs |
|
Timer |
|
prevents a job from monopolizing the
system |
|
an interrupt occurs when time expires |
|
|
Desirable Hardware
Features
|
|
|
|
Privileged instructions |
|
can be executed only by the monitor |
|
an interrupt occurs if a program tries
these instructions |
|
Interrupts |
|
provides flexibility for relinquishing
control to and regaining control from user programs |
Multiprogrammed Batch
Systems
|
|
|
I/O operations are exceedingly slow
(compared to instruction execution) |
|
A program containing even a very small
number of I/O ops, will spend most of its time waiting for them |
|
Hence: poor CPU usage when only one
program is present in memory |
Multiprogrammed Batch
Systems
|
|
|
If memory can hold several programs,
then CPU can switch to another one whenever a program is awaiting for an I/O
to complete |
|
This is multitasking (multiprogramming) |
Requirements for
Multiprogramming
|
|
|
|
|
Hardware support: |
|
I/O interrupts and (possibly) DMA |
|
in order to execute instructions while
I/O device is busy |
|
Memory management |
|
several ready-to-run jobs must be kept
in memory |
|
Memory protection (data and programs) |
|
Software support from the OS: |
|
Scheduling (which program is to be run
next) |
|
To manage resource contention |
Example: three jobs are
submitted
|
|
|
Almost no contention for resources |
|
All 3 can run in minimum time in a
multitasking environment (assuming JOB2/3 have enough CPU time to keep their
I/O operations active) |
Advantages of
Multiprogramming
Time Sharing Systems
(TSS)
|
|
|
Batch multiprogramming does not support
interaction with users |
|
|
|
TSS extends multiprogramming to handle
multiple interactive jobs |
|
|
|
Processor’s time is shared among
multiple users |
|
|
|
Multiple users simultaneously access
the system through terminals |
Time Sharing Systems
(TSS)
|
|
|
Because of slow human reaction time, a
typical user needs 2 sec of processing time per minute |
|
|
|
Then (about) 30 users should be able to
share the same system without noticeable delay in the computer reaction time |
|
|
|
The file system must be protected
(multiple users…) |
Difficulties with OS
Design
|
|
|
|
Improper synchronization |
|
ensure a program waiting for an I/O
device receives the signal |
|
Failed mutual exclusion |
|
must permit only one program at a time
to perform a transaction on a portion of data |
|
Deadlock |
|
It might happen that 2 or more pgms
wait endlessly after each other to perform an operation. |
An example of deadlock
|
|
|
Program A wants to copy from disk1 to
disk2 and takes control of disk1 |
|
Program B wants to copy from disk2 to
disk1 and takes control of disk2 |
|
|
|
Program A must wait that program B
releases disk2 and program B must wait that program A releases disk1 |
|
Program A and B will wait forever |
Major Achievements of OS
|
|
|
|
To meet the difficult requirements of
multiprogramming and time sharing, there have been 5 major achievements by
OS: |
|
Processes |
|
Memory management |
|
Information protection and security |
|
Scheduling and resource management |
|
System structure |
Process
|
|
|
|
|
|
Introduced to obtain a systematic way
of monitoring and controlling pgm execution |
|
A process is an executable program
with: |
|
associated data (variables, buffers…) |
|
execution context: ie. all the information that |
|
the CPU needs to execute the process |
|
content of the processor registers |
|
the OS needs to manage the process: |
|
priority of the process |
|
the event (if any) after which the
process is waiting |
|
other data (that we will introduce
later) |
A simple implementation
of processes
|
|
|
The process index register contains the
index into the process list of the currently executing process (B) |
|
A process switch from B to A consist of
storing (in memory) B’s context and loading (in CPU registers) A’s context |
|
A data structure that provides
flexibility (to add new features) |
Memory Management
|
|
|
|
The key contribution is virtual memory |
|
It allows programs to address memory
from a logical point of view without regard to the amount that is physically
available |
|
While a program is running only a
portion of the program and data is kept in (real) memory |
|
Other portions are kept in blocks on
disk |
|
the user has access to a memory space
that is larger than real memory |
Virtual Memory
|
|
|
|
All memory references made by a program
are to virtual memory which can be either |
|
a linear address space |
|
a collection of segments
(variable-length blocks) |
|
The hardware (mapper) must map virtual
memory address to real memory address |
|
If a reference is made to a virtual
address not in memory, then |
|
(1) a portion of the content of real
memory is swapped out to disk |
|
(2) the desired block of data is
swapped in |
File System
|
|
|
|
Implements long-term store (often on
disk) |
|
Information stored in named objects
called files |
|
a convenient unit of access and
protection for OS |
|
Files (and portions) may be copied into
virtual memory for manipulation by programs |
Security and Protection
|
|
|
|
Access control to resources |
|
forbid intruders (unauthorized users)
to enter the system |
|
forbid user processes to access
resources which they are not authorized to |
Scheduling and Resource
Management
|
|
|
|
Differential responsiveness |
|
discriminate between different classes
of jobs |
|
Fairness |
|
give equal and fair access to all
processes of the same class |
|
Efficiency |
|
maximize throughput, minimize response
time, and accommodate as many users as possible |
Key Elements for
Scheduling
|
|
|
|
|
OS maintains queues of processes
waiting for some resource |
|
Short term queue of processes in memory
ready to execute |
|
The dispatcher (short term scheduler)
decides who goes next |
|
Long term queue of new jobs waiting to
use the system |
|
OS must not admit too many processes |
|
A queue for each I/O device consisting
of processes that want to use that I/O device |
System Structure
|
|
|
Because of it’s enormous complexity, we
view the OS system as a series of levels |
|
Each level performs a related subset of
functions |
|
Each level relies on the next lower
level to perform more primitive functions |
|
Well defined interfaces: one level can
be modified without affecting other levels |
|
This decomposes a problem into a number
of more manageable sub problems |
Characteristics of Modern
Operating Systems
|
|
|
|
New design elements were introduced
recently |
|
In response to new hardware development |
|
multiprocessor machines |
|
high-speed networks |
|
faster processors and larger memory |
|
In response to new software needs |
|
multimedia applications |
|
Internet and Web access |
|
Client/Server applications |
Microkernel architecture
|
|
|
|
Only a few essential functions in the
kernel |
|
primitive memory management (address
space) |
|
Interprocess communication (IPC) |
|
basic scheduling |
|
Other OS services are provided by
processes running in user mode (servers) |
|
device drivers, file system, virtual
memory… |
|
More flexibility, extensibility,
portability… |
|
A performance penalty by replacing
service calls with message exchanges between process... |
|
|
Multithreading
|
|
|
A process is a collection of one or
more threads that can run simultaneously |
|
Useful when the application consists of
several tasks that do not need to be serialized |
|
Gives the programmer a greater control
over the timing of application-related events |
|
All threads within the same process
share the same data and resources and a part of the process’s execution
context |
|
It is easier to create or destroy a
thread or switch among threads (of the same process) than to do these with
processes |
Symmetric Multiprocessing
(SMP)
|
|
|
A computer with multiple processors |
|
Each processor can perform the same
functions and share same main memory and I/O facilities (symmetric) |
|
The OS schedule processes/threads
across all the processors (real parallelisme) |
|
Existence of multiple processors is
transparent to the user. |
|
Incremental growth: just add another
CPU! |
|
Robustness: a single CPU failure does
not halt the system, only the performance is reduced. |
Example of parallel
execution on SMP