Operating System Lecture Note 2015
Operating System Lecture Note 2015
COLLEGE OF INFORMATICS
DEPARTMENT OF COMPUTER SCIENCE
BY: Kibebu M.
2015
E.C
.
1
Chapter 1 :- Introduction
Unit Structure
Introduction to Operating System
Definition of Operating system
Functions and Purpose of Operating System
System calls/Programs
Fundamental of Operating System
Operating System Services
Operating System Components
Types of Operating System
Batch System
Time Sharing System
Multiprogramming
2
Definition of Operating Systems
An Operating system is a program that controls the execution
of application programs and acts as an interface between the user
of a computer and the computer hardware.
A more common definition is that the operating system is the
one program running at all times on the computer (usually called
the kernel), with all else being applications programs.
An Operating system is concerned with the allocation of
resources and services, such as memory, processors, devices and
information.
An operating system is a software that manages the computer
hardware. The hardware must provide appropriate mechanisms
to ensure the correct operation of the computer system and to
prevent user programs from interfering with the proper operation
of the system 3
Functions of Operating System
Operating system performs three functions:
Convenience: An OS makes a computer more convenient to
use.
Efficiency: An OS allows the computer system resources to
be used in an efficient manner.
Ability to Evolve: An OS should be constructed in such a
way as to permit the effective development, testing and
introduction of new system functions without at the same time
interfering with service
4
Operating System as User Interface
Every general purpose computer consists of the hardware,
operating system, system programs, application programs.
The hardware consists of memory, CPU, ALU, I/O devices,
peripheral device and storage device.
System program consists of compilers, loaders,editors,OS
The application program consists of business program,
database program.
The fig. 1.1 shows the conceptual view of a computer system
5
Cont…
7
Goal(Purpose) of operating system
OS is designed to serve the following purposes :
1) . Resource Management: Disk, CPU cycles, etc. must be managed
efficiently to maximize overall system performance. It controls
the allocation and use of the computing system‘s resources among
the various user and tasks.
2) . Resource Abstraction: Software interface to simplify use of
hardware resources . It provides an interface between the computer
hardware and the programmer that simplifies and makes feasible for
coding, creation, debugging of application programs
3) Virtualization: Supports resource sharing – gives each process the
appearance of an unshared resource
8
System Calls // Programs
System calls provide the interface between a process and
the operating system.
Some of system calls are assembler, compiler, interpreter
and loader.
9
Assembler
Input to an assembler is an assembly language program.
Output is an object program plus information that enables the
loader to prepare the object program for execution.
At one time, the computer programmer had at his disposal a
basic machine that interpreted, through hardware, certain
fundamental instructions.
He would program this computer by writing a series of ones
and zeros(machine language), place them into the memory of
the machine.
10
Compiler
The high level languages – examples are FORTRAN,
COBOL, ALGOL and PL/I – are processed by compilers and
interpreters.
A compilers is a program that accepts a source program in a
―high-level language‖ and produces a corresponding object
program.
An interpreter is a program that appears to execute a source
program as if it was machine language. The same name
(FORTRAN, COBOL etc) is often used to designate both a
compiler and its associated language.
11
Loader
A loader is a routine that loads an object program and
prepares it for execution. There are various loading
schemes: absolute, relocating and direct-linking.
Loader is a program that places programs into
memory and prepares them for execution.
In a simple loading scheme, the assembler outputs the
machine language translation of a program on a
secondary device and a loader is placed in core.
The loader places into memory the machine language
version of the user‘s program and transfers control to it.
Since the loader program is much smaller than the
assembler, those makes more core available to user‘s
program. 12
Fundamental of Operating System
Basic concepts
Operating System Services
Operating System Components
Types of operating system
Batch System
Time Sharing System
Multiprogramming
Spooling
Properties of operating system
13
Operating System Services
An operating system provides services to programs and to
the users of those programs. It provided by one environment
for the execution of programs. The services provided by one
operating system is difficult than other operating system.
Operating system makes the programming task easier.
The common service provided by the operating system is
listed below.
1. Program execution
2. I/O operation
3. File system manipulation
4. Communications
5. Error detection
14
Cont…
1. Program execution: Operating system loads a program into memory and
executes the program. The program must be able to end its execution,
either normally or abnormally.
2. I/O Operation : I/O means any file or any specific I/O device. Program
may require any I/O device while running. So operating system must
provide the required I/O.
3. File system manipulation : Program needs to read a file or write a file.
The operating system gives the permission to the program for operation on
file.
4. Communication : Data transfer between two processes is required for
some time. The both processes are on the one computer or on different
computer but connected through computer network. Communication may
be implemented by two methods:
a. Shared memory
b. Message passing.
5. Error detection : error may occur in CPU, in I/O devices or in the
memory hardware. The operating system constantly needs to be aware of
possible errors. It should take the appropriate action to ensure correct and
consistent computing. Operating system with multiple users provides
following services: 1. Resource Allocation
2. Accounting
3. Protection
15
Cont…
1) Resource Allocation :
If there are more than one user or jobs running at the same time, then
resources must be allocated to each of them. Operating system manages
different types of resources require special allocation code, i.e. main memory
CPU cycles and file storage.
There are some resources which require only general request and release
code. For allocating CPU, CPU scheduling algorithms are used for better
utilization of CPU.
2) Accounting :
Logs of each user must be kept. It is also necessary to keep record of which
user how much and what kinds of computer resources. This log is used for
accounting purposes.
3) Protection :
Protection involves ensuring that all access to system resources is controlled.
Security starts with each user having to authenticate to the system, usually by
means of a password. External I/O devices must be also protected from
invalid access attempts.
In protection, all the access to the resources is controlled. In multiprocessing
environment, it is possible that, one process to interface with the other, or
with the operating system, so protection is required.
16
Operating System Components
Modern operating systems share the goal of supporting
the system components. The system components are :
Process Management
Main-Memory Management
Secondary-Storage Management
I/O System Management
File Management
Protection System
Networking
Command-Interpreter System
17
Cont…
Process Management
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 major activities of an operating system in regard to
memory-management are:
o Keep track of which part of memory are currently being
used and by whom.
o Decide which processes are loaded into memory when
memory space becomes available.
o •Allocate and deallocate memory space as needed..
19
Cont…
20
Cont…
File Management
Protection System
22
Networking(Distributed system)
23
Cont…
Command-Interpreter System
24
Type of Operating system
Batch System
Batch operating system is one where programs and
data are collected together in a batch before processing
starts.
A job is predefined sequence of commands, programs
and data that are combined in to a single unit called job.
Memory management in batch system is very simple.
Memory is usually divided into two areas : Operating
system and user program area.
25
Cont…
26
Cont…
Advantages of Batch System
Move much of the work of the operator to the computer.
Increased performance since it was possible for job to
start as soon as the previous job finished.
Disadvantages of Batch System
Turn around time can be large from user standpoint.
Difficult to debug program.
A job could enter an infinite loop.
A job could corrupt the monitor, thus affecting pending
jobs.
Due to lack of protection scheme, one batch job can
affect pending jobs.
27
Time Sharing System
28
Cont…
29
Multiprogramming
When two or more programs are in memory at the same time,
sharing the processor is referred to the multiprogramming
operating system. Multiprogramming assumes a single processor
that is being shared. It increases CPU utilization by organizing
jobs so that the CPU always has one to execute.
The operating system keeps several jobs in memory at a time. This
set of jobs is a subset of the jobs kept in the job pool. The
operating system picks and begins to execute one of the job in the
memory. Multiprogrammed system provide an environment in
which the various system resources are utilized effectively, but
they do not provide for user interaction with the computer system.
Jobs entering into the system are kept into the memory. Operating
system picks the job and begins to execute one of the job in the
memory.
30
Cont…
31
Spooling
Acronym for simultaneous peripheral operations on line.
Spooling refers to putting jobs in a buffer, a special area in memory or on
a disk where a device can access them when it is ready.
Spooling is useful because device access data that different rates. The
buffer provides a waiting station where data can rest while the slower
device catches up. Fig 2.3 shows the spooling.
32
Cont…
33
Essential Properties of the Operating System
Batch : Jobs with similar needs are batched together and run through
the computer as a group by an operator or automatic job sequencer.
Performance is increased by attempting to keep CPU and I/O devices
busy at all times through buffering , off line operation, spooling and
multiprogramming. A Batch system is good for executing large jobs
that need little interaction, it can be submitted and picked up latter.
Time sharing : Uses CPU s scheduling and multiprogramming to
provide economical interactive use of a system. The CPU switches
rapidly from one user to another i.e. the CPU is shared between a
number of interactive users. Instead of having a job defined by
spooled card images, each program reads its next control instructions
from the terminal and output is normally printed immediately on the
screen.
Interactive : User is on line with computer system and interacts
with it via an interface. It is typically composed of many short
transactions where the result of the next transaction may be
unpredictable. Response time needs to be short since the user
submits and waits for the result.
34
Cont…
35
Chapter 2:
Process and process Management
Unit Structure
Process Management
Concept of Process
Process State
Process Management
Operation on processes
Thread managements
Introduction of Thread
Types of Thread
Difference between Process and Thread
Concurrency
Principle of concurrency
Race Condition
36
Process concepts
A process is an instance of a program in execution. It encompasses the
static concept of program and the dynamic aspect of execution. As the
process runs, its context (state) changes – register contents, memory
contents, etc., are modified by execution.
process is a sequential program in execution. A process defines the
fundamental unit of computation for the computer. Components of the process
are:
Object program
Data
Resources
Status of the process execution
Object program i.e. code to be executed.
Data is used to for executing the program.
While executing the program, it may require some resources.
Last component(Status of the process execution) is used for verifying
the status of the process execution.
A process can run to completion only when all requested resources have been
allocated to the process. Two or more processes could be executing the same
program each using their own data and resources.
Process exists in a limited span of time.
37
Processes and Programs
Process is a dynamic entity, that is a program in execution. A
process is a sequence of information executions. Process exists
in a limited span of time. Two or more processes could be
executing the same program, each using their own data and
resources.
Program is a static entity made up of program statement.
Program contains the instructions. A program exists at single
place in space and continues to exist. A program does not
perform the action by itself.
38
Cont…
Process state
When process executes, it changes state. Process state is defined as the
current activity of the process.
Process contains five states. Each process is in one of the states
New
Ready
Running
Waiting
Terminated (exit)
• New- a process that has just been created
• Ready- ready processes are waiting to have the processor. Allocating
to them by the operating system so that they can run.
• Running- the process that is currently being executed. A running
process processes all the resources needed for its execution, including
the processor.
• Waiting- a process that can not execute until some event occurs. Such
as the completion of an I/O operation. The running process may
become suspended by invoking an I/O routine.
39
Cont…
Terminated- a process that has been released from the pool of
executable process by the OS.
Fig. 3.1 shows the general form of the process state transition diagram.
40
Cont…
When ever process changes state, the OS reacts by placing the PCB
in the list that corresponds to its new state. Only one process can
run on any processor at any instant and many processes may be in
ready and waiting state.
Suspended processes:- Characteristics of suspended processes
1. Suspended process is not immediately available for execution.
2. The process may or may not be waiting on an event.
3. For preventing the execution, process is suspend by OS, parent
process, process itself and an agent.
4. Process may not be removed from the suspended state until the
agent orders the removal.
Reasons for process suspension
1. Swapping
2. Timing
3. Interactive user request
4. Parent process request 41
Cont…
Swapping : is used to move all of a process from main
memory to disk .OS needs to release required main memory
to bring in a process that is ready to execute.
Timing : Process may be suspended while waiting for the
next time interval.
Interactive user request : Process may be suspended for
debugging purpose by user.
Parent process request : To modify the suspended process
or to coordinate the activity of various descendants.
42
Process Control Block (PCB)
PCB – is the data structure used by the OS. OS groups all
information that needs about a particular process.
PCB- Information associated with each process. which contains :
Process ID (name, number)
Process state
Priority, owner, etc...
Program counter
CPU registers
CPU scheduling information
Memory-management information
Accounting information
I/O status information
43
Fig. 3.2 Process Control Block
Pointer Process State
Process Number
Program Counter
CPU registers
Memory Allocation
Event Information
44
Cont…
Pointer : Pointer points to another process control block. Pointer is used for
maintaining the scheduling list.
Process State : Process state may be new, ready, running, waiting and so on
Program Counter : It indicates the address of the next instruction to be
executed for this process.
Event information : For a process in the blocked state this field contains
information concerning the event for which the process is waiting.
CPU register : It indicates general purpose register, stack pointers, index
registers and accumulators etc. number of register and type of register totally
depends upon the computer architecture.
Memory Management Information : This information may include the value
of base and limit register. This information is useful for deallocating the
memory when the process terminates.
Accounting Information : This information includes the amount of CPU and
real time used, time limits, job or process numbers, account numbers
Process control block also includes the information about CPU scheduling,
I/O resource management, file management information, priority and so.
The PCB simply serves as the repository for any information that may vary
from process to process
45
Process Management / Process Scheduling
Multiprogramming operating system allows more than one
process to be loaded into the executable memory at a time and
for the loaded process to share the CPU using time
multiplexing.
The scheduling mechanism is the part of the process
manager that handles the removal of the running process from
the CPU and the selection of another process on the basis of
particular strategy
46
Scheduling Queues
When the process enters into the system, they are put into a job
queue. This queue consists of all processes in the system. The
operating system also has other queues.
Device queue is a queue for which a list of processes waiting for
a particular I/O device. Each device has its own device queue.
Fig. 3.3 shows the queuing diagram of process scheduling. In the
fig 3.3,
queue is represented by rectangular box.
47
Cont…
49
Schedules
Schedulers are of two types.
1. Long Term Scheduler
2. Short Term Scheduler
50
Cont…
Long Term Scheduler
It is also called job scheduler.
Long term scheduler determines which programs are admitted to the
system for processing. Job scheduler selects processes from the queue and
loads them into memory for execution. Process loads into the memory for
CPU scheduler.
The primary objective of the job scheduler is to provide a balanced mix
of jobs, such as I/O bound and processor bound. It also controls the degree
of multiprogramming. If the degree of multiprogramming is stable, then the
average rate of process creation must be equal to the average departure rate
of processes leaving the system.
On same systems, the long term scheduler may be absent or minimal.
Time-sharing operating systems have no long term scheduler. When
process changes the state from new to ready, then there is a long term
scheduler.
I.e. - Long-term scheduler (job scheduler) - selects which processes should
be brought into the ready queue.
- Long-term scheduler is invoked very infrequently (seconds, minutes)
`=> (may be slow). The long-term scheduler controls the degree
of multiprogramming.
51
Cont…
52
Cont…
53
Cont…
Context Switch
Sometimes called process switch
A context switch involves two processes:
54
Operation on Processes
Several operations are possible on the process. Process must be created and
deleted dynamically. Operating system must provide the environment for
the process operation. We discuss the two main operations on processes.
A. Create a process
B.Terminate a process
Process Creation
Parent process creates children processes, which, in turn create other
processes, forming a tree of processes.
• When a process creates a new process, two possibilities exist in
terms of execution.
1. The parent continues to execute concurrently with its children.
2. The parent waits until some or all of its children have terminated
55
Cont…
56
Cont…
57
Cont…
Process Termination
Process executes last statement and asks the operating system
to delete it (exit).
Output data from child to parent (via fork).
Process' resources are deallocated by operating system.
Parent may terminate execution of children processes (abort).
Child has exceeded allocated resources.
Task assigned to child is no longer required.
Parent is exiting.
Operating system does not allow child to continue if its parent
terminates.
Cascading termination.
58
Cont…
59
Thread concepts
A thread is a flow of execution through the process code,
with its own program counter, system registers and stack.
Threads are a popular way to improve application
performance through parallelism. A thread is sometimes
called a light weight process.
Threads represent a software approach to improving
performance of operating system by reducing the over head
thread is equivalent to a classical process. Each thread belongs
to exactly one process and no thread can exist outside a
process. Each thread represents a separate flow of control.
Fig. 4.1shows the single and multithreaded process.
60
Cont….
61
Cont…
A thread (or lightweight process) is a basic unit of CPU utilization;
it consists of:
program counter
register set
stack space
A thread shares with its peer threads its:
code section
data section
operating-system resources
A traditional or heavyweight process is equal to a task with one thread.
In a task containing multiple threads, while one server thread is blocked and
waiting, a second thread in the same task could run.
Cooperation of multiple threads in same job confers higher throughput and
improved performance.
Applications that require sharing a common buffer (producer-consumer
problem) benefit from thread utilization.
Threads provide a mechanism that allows sequential processes to make
blocking system calls while also achieving parallelism.
62
Types of Thread
Threads is implemented in two ways :
1. User Level
2. Kernel Level
User Level Thread
In a user thread, all of the work of thread management is done
by the application and the kernel is not aware of the existence
of threads.
The thread library contains code for creating and destroying
threads, for passing message and data between threads, for
scheduling thread execution and for saving and restoring
thread contexts.
The application begins with a single thread and begins
running in that thread.
User level threads are generally fast to create and manage 63
Cont…
64
Kernel Level Threads
In Kernel level thread, thread management done by the
Kernel. There is no thread management code in the
application area.
Kernel threads are supported directly by the operating
system. Any application can be programmed to be
multithreaded. All of the threads within an application are
supported within a single process.
The Kernel maintains context information for the process as
a whole and for individuals threads within the process.
Scheduling by the Kernel is done on a thread basis. The
Kernel performs thread creation, scheduling and management
in Kernel space. Kernel threads are generally slower to create
and manage than the user threads.
65
Cont…
66
Cont…
Advantages of Thread
1. Thread minimize context switching time.
2. Use of threads provides concurrency within a process.
3. Efficient communication.
4. Economy- It is more economical to create and context
switch threads.
5. Utilization of multiprocessor architectures –
The benefits of multithreading can be greatly increased in a
multiprocessor architecture.
67
Cont… Difference between User Level
and Kernel Level Thread
User Level Threads Kernel Level Thread
• User level thread are faster to create •Kernel level thread are slower to
and manage create and manage.
• Implemented by a thread library at •Operating system support directly
the user level. to Kernel threads.
• User level thread can run on any •Kernel level threads are specific
operating system. to the operating system.
• Support provided at the user level •Support may be provided by
called user level thread. kernel is called Kernel level
• Multithread application cannot take threads.
advantage of multiprocessing. •Kernel routines themselves can
be multithreaded
68
Cont… Difference between Process and Thread
Process
Process is called heavy weight process.
Process switching needs interface with operating system.
In multiple process implementation each process executes the same code but
has its own memory and file resources.
If one server process is blocked no other server process can execute until the
first process unblocked.
Multiple redundant process uses more resources than multiple threaded.
In multiple process each process operates independently of the others.
Thread
Thread is called light weight process.
Thread switching does not need to call a operating system and cause an
interrupt to the Kernel.
All threads can share same set of open files, child processes.
While one server thread is blocked and waiting, second thread in the same task
could run.
Multiple threaded process uses fewer resources than multiple redundant
process.
One thread can read, write or even completely wipe out another threads stack.
69
Concurrency concept
Concurrent processes executing in the operating system may
be either:-
Cooperating processes or
Independent processes
A process is independent if it cannot affect or be affected by the
other processes executing in the system.
On the other hand, a process is cooperating if it can affect or be
affected by the other processes executing in the system.
Cooperating processes may either directly share a logical
address space(that is, both code and data), or be allowed to share
data only through files. The former case is achieved through the
use of lightweight processes or threads.
70
Cont…
Processes (or threads) that cooperate to solve problems must
exchange information. Two approaches:
◦ Shared memory (Shared memory is more efficient (no copying),
but isn’t always possible)
◦ Message passing (copying information from one process address
space to another)
There are several reasons for providing an environment that allows
process cooperation
Information sharing
Computation speedup
Modularity
Convenience
71
Race condition
When several processes access and manipulate the
same data concurrently and the outcome of the
execution depends on the particular order in which the
access takes place, is called a race condition. this
condition may result in data inconsistency.
A race condition occurs when multiple processes or
threads read and write data items so that the final result
depends on the order of execution of instructions in the
multiple processes.
72
Cont…
Suppose that two processes, P1 and P2, share the global variable a. At
some point in its execution, P1 updates a to the value 1, and at some point
in its execution, P2 updates a to the value 2. Thus, the two tasks are in a
race to write variable a. In this example the "loser" of the race (the process
that updates last) determines the final value of a.
Therefore Operating System Concerns of following things
1. The operating system must be able to keep track of the various
processes
2. The operating system must allocate and deallocate various resources for
each active process.
3. The operating system must protect the data and physical resources of
each process against unintended interference by other processes.
4. The functioning of a process, and the output it produces, must be
independent of the speed at which its execution is carried out relative to
the speed of other concurrent processes.
73
Cont…
74
Critical-Section
A critical section is the code that accesses shared data or
resources.
The important feature of the system is that, when one process is
executing in its critical section, no other process is to be
allowed to execute in its critical section. Thus, the execution of
critical sections by the processes is mutually exclusive in
time. Otherwise result critical-section problem
The critical-section problem is to design a protocol that the
75
Cont…
76
Chapter 3: CPU Scheduling
Introduction
CPU scheduling is the basis of multi programmed operating systems.
By switching the CPU among processes, the operating system can
make the computer more productive
When a computer is multi-programmed, it frequently has multiple
processes computing for the CPU at the same time.
This situation occurs whenever two or more processes are
simultaneously in the ready state.
If only one CPU is available, a choice has to be made which process
to run next.
The part of the operating system that makes the choice is called the
scheduler and the algorithm it uses is called the scheduling
algorithm.
77
CPU Scheduling
Back in the old days of batch systems with input in the form of
79
Cont…
Preemptive Scheduling
CPU scheduling decisions may take place under the
following four circumstances:
1. When a process switches from the running state to the
waiting state (for. example, I/O request, or invocation of wait
for the termination of one of the child processes).
2. When a process switches from the running state to the ready
state (for example, when an interrupt occurs).
3. When a process switches from the waiting state to the ready
state (for example, completion of I/O).
4. When a process terminates.
80
CPU Scheduling :- Scheduling Criteria
◦ Max throughput
82
CPU Scheduling
Scheduling Algorithms
1. First-Come, First-Served (FCFS) Scheduling
The simplest of all scheduling algorithm is non-preemptive FCFS
scheduling algorithm.
Processes are assigned the CPU in the order they request it.
When the first job enters the system from the outside in the
morning, it is started immediately and allowed to run as long as it
wants too.
As other jobs come in, they are put onto the end of the queue.
When the running process blocks, the first process on the queue
is run next.
When a blocked process becomes ready, like a newly arrived job,
it is put on the end of the queue.
83
CPU Scheduling
Example:
Process Burst time
P1 = 24, P2 = 3, P3 = 3
Suppose that the processes arrive in the order: P1, P2,
P3.
A diagram to show this schedule is:
84
CPU Scheduling
2. Shortest Job First (SJF) Scheduling
It is a non preemptive batch algorithm that assumes the run times
are known in advance.
Associate with each process the length of its next CPU burst. Use
these lengths to schedule the process with the shortest time.
When several equally important jobs are sitting in the input queue
waiting to be started, the scheduler picks the shortest job first.
For example: here we found four jobs A, B, C, and D with run
times of 8, 4, 4, and 4 minutes respectively.
85
CPU Scheduling
86
CPU Scheduling
87
CPU Scheduling
3.
88
CPU Scheduling
4. Round-Robin (RR)Scheduling
One of the oldest, simplest, fairest, and mostly used algorithm
Each process is assigned a time interval called its quantum, which it
is allowed to run.
If the process is still running at the end of the quantum, the CPU is
preempted and given to another process.
It is easy to implement, all the scheduler needs to do is maintain a list
of runnable processes.
When the process uses up its quantum, it is put on the end of the list.
The only interesting issue with round robin is the length of the
quantum
89
CPU Scheduling
Fig. Round-Robin scheduling (a) the list of runnable processes. (b) the list of
runnable processes after B uses up its quantum.
Setting the quantum too short causes too many processes switches
and lowers the CPU efficiency. But setting it too long may cause
poor response to short interactive request. A quantum around 20-
50 msec. is often a reasonable compromise
90
CPU Scheduling
91
CPU Scheduling
5. Priority Scheduling
Round-Robin scheduling makes the implicit assumption that all
processes are equally important.
The need to take external factors into account leads to priority
scheduling.
The basic idea is each process is assigned a priority, and the runnable
process with the highest priority is allowed to run.
(smallest integer means highest priority).
It can be preemptive or non-preemptive.
Problem: starvation (or indefinite blocking) – low priority processes
may never execute.
Solution: aging as time progresses increase the priority of the process.
92
CPU Scheduling
Summary
FCFS simple but causes short jobs to wait for long jobs.
SJF is optimal giving shortest waiting time but need to know
length of next burst.
SJF is a type of priority scheduling - may suffer from starvation
- prevent using aging
RR is gives good response time, it is preemptive. Problem
selecting the quantum.
Multiple queue Algorithms use the best of each algorithm by
having more than one queue. Feedback queues allow jobs to
move from queue to queue.
93
CPU Scheduling
Exercise
Suppose that the ff jobs arrive as indicated for scheduling and execution on
single CPU.
Job Arrival time Size (msec.) Priority
J1 0 12 1(Gold)
J2 2 4 3(Bronze)
J3 5 2 1(Gold)
J4 8 10 3(Bronze)
J5 10 6 2(Silver)
1. Draw a Gantt chart showing FCFS and calculate Avg. wait. Time and Avg. turn around time
2. Draw a Gantt chart showing non preemptive SJF and calculate Avg. wait. Time and
Avg. turn around time
3. Draw a Gantt chart showing SRTF and calculate Avg. wait. Time and Avg. turn around time
4. Draw a Gantt chart showing RR (q=4 msec.) and calculate Avg. wait. Time and Avg. turn
around time
5. Draw a Gantt chart showing Preemptive Priority and calculate Avg. wait. time and
Avg. turn around time 94
CHAPTER 4 :- DEADLOCK
Unit Structure
• Introduction
• Deadlock Characterization
• Method for Handling Deadlock
• Deadlock Prevention Recovery
• Avoidance and Protection
• Deadlock Detection
95
Objectives
96
Introduction
In a multiprogramming environment, several processes may compete
for a finite number of resources. A process requests resources; if the
resources are not available at that time, the process enters a wait
state. It may happen that waiting processes will never again change
state, because the resources they have requested are held by other
waiting processes. This situation is called a deadlock.
If a process requests an instance of a resource type, the allocation of
any instance of the type will satisfy the request. If it will not, then
the instances are not identical, and the resource type classes have not
been defined properly.
A process must request a resource before using it, and must release
the resource after using it. A process may request as many resources
as it requires to carry out its designated task.
97
Cont…
Under the normal mode of operation, a process may utilize a
resource in only the following sequence:
1. Request: If the request cannot be granted immediately, then the
requesting process must wait until it can acquire the resource.
2. Use: The process can operate on the resource.
3. Release: The process releases the resource
98
Deadlock Characterization
In a deadlock, processes never finish executing and system
resources are tied up, preventing other jobs from ever
starting.
Necessary Conditions
99
Cont…
1. Mutual exclusion: At least one resource must be held in a non-
sharable mode; that is, only one process at a time can use the
resource. If another process requests that resource, the requesting
process must be delayed until the resource has been released.
2. Hold and wait : There must exist a process that is holding at least
one resource and is waiting to acquire additional resources that are
currently being held by other processes.
3. No preemption : Resources cannot be preempted; that is, a
resource can be released only voluntarily by the process holding it,
after that process, has completed its task.
4. Circular wait: There must exist a set {P0, P1, ..., Pn } of waiting
processes such that P0 is waiting for a resource that is held by P1,
P1 is waiting for a resource that is held by P2, …., Pn-1 is waiting
for a resource that is held by Pn, and Pn is waiting for a resource
that is held by P0.
100
Methods for Handling Deadlocks
101
Deadlock Prevention
For a deadlock to occur, each of the four necessary-conditions
must hold. By ensuring that at least on one these conditions
cannot hold, we can prevent the occurrence of a deadlock.
◦ Mutual Exclusion – not required for sharable resources; must
hold for non sharable resources
◦ Hold and Wait – must guarantee that whenever a process requests
a resource, it does not hold any other resources.
◦ No Preemption – If a process that is holding some resources
requests another resource that cannot be immediately allocated to
it, then all resources currently being held are released.
◦ Circular Wait – impose a total ordering of all resource types, and
require that each process requests resources in an increasing order
of enumeration.
102
Deadlock Avoidance
Requires that the system has some additional a priori information
available.
Simplest and most useful model requires that each process declare the
maximum number of resources of each type that it may need.
The deadlock-avoidance algorithm dynamically examines the
resource-allocation state to ensure that there can never be a circular-
wait condition.
Resource-allocation state is defined by the number of available and
allocated resources, and the maximum demands of the processes.
103
Deadlock Detection
If a system does not employ either a deadlock-prevention or
a deadlock avoidance algorithm, then a deadlock situation
may occur. In this environment, the system must provide:
◦ An algorithm that examines the state of the system to determine
whether a deadlock has Occurred.
◦ An algorithm to recover from the deadlock
104
Summary
A deadlocked state occurs when two or more processes are waiting
indefinitely for an event that can be caused only one of the waiting
processes. There are three principal methods for dealing with
deadlocks:
◦ Use some protocol to prevent or avoid deadlocks, entering that the system
will never enter a deadlocked state.
◦ Allow the system to enter a deadlocked state, detect it, and then recover.
◦ Ignore the problem altogether and pretend that deadlocks never occur in
the system.
Deadlock occur only when some process makes a request that cannot
e granted immediately.
105
Chapter 5: Memory and Device Management
5.1 Memory Management
Introduction
Memory is an important resource that must be carefully
managed.
The average home computer nowadays has a thousand times as
much memory as the IBM 7094.
Programs expand to fill the memory available to hold them.
Ideally every programmer like an infinitely large, infinitely fast,
nonvolatile and inexpensive memory.
Unfortunately technology does not provide such memories.
Consequently, most computers have a memory hierarchy.
Small amount, very fast, expensive and volatile (cache memory)
Tens of megabytes, medium speed, volatile (RAM)
Tens or hundreds of gigabytes, slow, cheap and nonvolatile (disk storage)
106
Cont…
It is the job of the operating system to coordinate how these
memories are used.
In this chapter we will study how OS manage memory.
The part of the OS that manages the memory hierarchy is called
the memory manager.
It keeps track of which parts of memory are in use and which
parts are not in use, to allocate memory to processes when they
need it and deallocate it when they are done, and to manage
swapping b/n main memory and disk when main memory is too
small to hold all the processes
There are a number of d/t memory management schemes ranging
from simple to highly sophisticated.
107
Cont…
Program must be brought into memory and placed within a
process for it to be executed.
User programs go through several steps before being executed.
108
Cont…
Address binding of instructions and data to memory addresses can happen at three stages:
Compile time: If memory location known a priori, absolute code can be generated;
must recompile code if starting location changes.
Load time: Must generate relocatable code if memory location is not known at compile
time.
Execution time: Binding delayed until run time if the process can be moved during its
execution from one memory segment to another. Need hardware support for address
maps (e.g., base and limit registers).
Dynamic Loading - routine is not loaded until it is called.
o Better memory-space utilization; unused routine is never loaded.
o Useful when large amounts of code are needed to handle infrequently occurring cases.
Dynamic Linking - linking postponed until execution time.
o Small piece of code, stub, used to locate the appropriate memory-resident library
routine.
o Stub replaces itself with the address of the routine, and executes the routine.
o Operating system needed to check if routine is in processes' memory address.
109
Cont…
Basic memory management
Memory management can be divided into two classes: those that
move processes back and forth b/n main memory and disk during
execution (swapping and paging) and those that do not.
Mono-programming without swapping or paging
The simplest possible memory management scheme is to run
just one program at a time, sharing the memory b/n that program
and the OS.
110
Cont…
Multiprogramming with fixed partitions
Most modern systems allow multiple processes to run at the same time.
111
Cont…
Logical versus Physical Address Space
The concept of a logical address space that is bound to a separate physical address
space is central to proper memory management.
Logical address - generated by the CPU; also referred to as virtual address.
Physical address - address seen by the memory unit.
Logical and physical addresses are the same in compile-time and load-time
address-binding schemes; logical (virtual) and physical addresses differ in
execution-time address-binding scheme.
Memory-management unit (MMU) - hardware device that maps virtual to physical
address.
112
Cont…
In MMU scheme, the value in a relocation register is added to every
address generated by a user process at the time it is sent to memory.
The user program deals with logical addresses; it never sees the real
physical addresses.
Swapping
A process can be swapped temporarily out of memory to a backing
store, and then brought back into memory for continued execution.
Backing store - fast disk large enough to accommodate copies of all
memory images for all users; must provide direct access to these
memory images.
Major part of swap time is transfer time; total transfer time is directly
proportional to the amount of memory swapped.
113
Cont…
Paging
Divide physical memory into fixed-sized blocks called frames (size is
power of 2, between 512 bytes and 8192 bytes).
Divide logical memory into blocks of same size called pages.
Keep track of all free frames.
To run a program of size n pages, need to find n free frames and load
program.
Set up a page table to translate logical to physical addresses.
Address generated by CPU is divided into:
Page number (p) - used as an index into a page table which
contains base address of each page in physical memory.
Page offset (d) - combined with base address to define the physical
memory address that is sent to the memory unit.
114
Cont…
115
Cont…
116
Cont…
Segmentation
memory-management scheme that supports user view of memory.
A program is a collection of segments. A segment is a logical unit
117
Cont…
118