0% found this document useful (0 votes)
45 views94 pages

Chapter 02

This document summarizes key concepts from Chapter 2 of the textbook "Modern Operating Systems" by Andrew S. Tanenbaum regarding processes, threads, and synchronization. The summary includes: 1) The difference between processes and programs, and how processes allow for pseudoparallelism on single-processor systems through rapid switching. 2) The lifecycle of a process including creation, termination, and different possible states like ready, running, and blocked. 3) How threads provide finer-grained parallelism than processes while sharing resources like memory. Challenges with threads include synchronization and lack of independence. 4) Mechanisms for synchronization between concurrent processes/threads like mutual exclusion, semaphores

Uploaded by

Sỹ Nguyễn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views94 pages

Chapter 02

This document summarizes key concepts from Chapter 2 of the textbook "Modern Operating Systems" by Andrew S. Tanenbaum regarding processes, threads, and synchronization. The summary includes: 1) The difference between processes and programs, and how processes allow for pseudoparallelism on single-processor systems through rapid switching. 2) The lifecycle of a process including creation, termination, and different possible states like ready, running, and blocked. 3) How threads provide finer-grained parallelism than processes while sharing resources like memory. Challenges with threads include synchronization and lack of independence. 4) Mechanisms for synchronization between concurrent processes/threads like mutual exclusion, semaphores

Uploaded by

Sỹ Nguyễn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 94

MODERN OPERATING SYSTEMS

Third Edition
ANDREW S. TANENBAUM

Chapter 2
Processes and Threads

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

outline

Process
Threads
Process scheduling
Race condition/synchronization

pseudoparallelism

All modern computers do many things at the


same time
In a uni-processor system, at any instant,
CPU is running only one process
But in a multiprogramming system, CPU
switches from processes quickly, running
each for tens or hundreds of ms

The Process Model

Figure 2-1. (a) Multiprogramming of four programs. (b) Conceptual


model of four independent, sequential processes. (c) Only
one program is active at once.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Advantages and Problems

The parallelism, though a pseudo one, is very


beneficial for users

However, every coin has two sides

Execution non-reproducible

Non-reproducible

Program B
repeat print(N);N:=0;

Example at an instant, N n if execution


sequence is

Program A
repeat N:=N+1;

N: N 1 print(N); N:=0;
10
print(N); N:=0; N: N 1
print(N); N: N 1 N:=0;
10

then, N is:n 1 n
then N is: n 0 1
then N is: n n

Another example:

An I/O process start a tape streamer and wants to


read 1st record
It decides to loop 10,000 time to wait for the

Difference between Process


and Program

Consider an Analogy

A computer scientist baking a cake for his


daughter

And his son came in crying for help

Process Creation
Events which cause process creation:

System initialization.
Execution of a process creation system call by a
running process.
A user request to create a new process.
Initiation of a batch job.

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Process Termination
Events which cause process termination:

Normal exit (voluntary).


Error exit (voluntary).
Fatal error (involuntary).
Killed by another process (involuntary).

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Process States

Figure 2-2. A process can be in running, blocked, or ready state.


Transitions between these states are as shown.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Implementation of Processes (1)

Figure 2-3. The lowest layer of a process-structured operating


system handles interrupts and scheduling. Above that layer
are sequential processes.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Implementation of Processes (2)

Figure 2-4. Some of the fields of a typical process table entry.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Implementation of Processes (3)

Figure 2-5. Skeleton of what the lowest level of the operating


system does when an interrupt occurs.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Modeling Multiprogramming

Figure 2-6. CPU utilization as a function of the number of


processes in memory.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

summary

Pseudoparallelism
Difference between process and program
Lifecycle of process
Multiprogramming degree

Thread Usage (1)

A word processor with three threads

Thread Usage (2)

A multithreaded Web server

Thread Usage (3)

Rough outline of code for previous slide


(a) Dispatcher thread
(b) Worker thread

The Thread Model (2)

Items shared by all threads in a process


Items private to each thread

Thread

Has own program counter, register set, stack


Shares code (text), global data, open files

With other threads within a single Heavy-Weight


Process (HWP)
But not with other HWPs

May have own PCB

Depends on operating system


Context will involve thread ID, program counter,
register set, stack pointer
RAM address space shared with other threads in same
process

Memory management information shared

Making Single-Threaded Code Multithreaded (1

Conflicts between threads over the use of a global variable

Making Single-Threaded Code Multithreaded (2

Threads can have private global variables

Threads: Benefits

User responsiveness

Resource sharing: economy

Memory is shared (i.e., address space shared)


Open files, sockets shared

Speed

When one thread blocks, another may handle user I/O


But: depends on threading implementation

E.g., Solaris: thread creation about 30x faster than


heavyweight process creation; context switch about 5x
faster with thread

Utilizing hardware parallelism

Like heavy weight processes, can also make use of


multiprocessor architectures

Threads: Drawbacks

Synchronization

Access to shared memory or shared variables must be


controlled if the memory or variables are changed
Can add complexity, bugs to program code
E.g., need to be very careful to avoid race conditions,
deadlocks and other problems

Lack of independence

Threads not independent, within a Heavy-Weight


Process (HWP)
The RAM address space is shared; No memory
protection from each other
The stacks of each thread are intended to be in
separate RAM, but if one thread has a problem (e.g.,
with pointers or array addressing), it could write over
the stack of another thread

Interprocess Communication
Race Conditions

Two processes want to access shared memory at same time

Therac-25

Between June 1985 and January 1987, some


cancer patients being treated with radiation were
injured & killed due to faulty software

Massive overdoses to 6 patients, killing 3

Software had a race condition associated with


command screen
Software was improperly synchronized!!
See also

p. 340-341 Quinn (2006), Ethics for the Information Age

Nancy G. Leveson, Clark S. Turner, "An Investigation of the Therac-25


Accidents," Computer, vol. 26, no. 7, pp. 18-41, July 1993

http://doi.ieeecomputersociety.org/10.1109/MC.1993.274940

Concepts

Race condition

Two or more processes are reading or writing


some shared data and the final result depends on
who runs precisely when

In our former example, the possibilities are


various

Concetps

Mutual exclusion

Prohibit more than one process from reading and


writing the shared data at the same time

Critical region

Part of the program where the shared memory is


accessed

Critical Regions (1)


Four conditions to provide mutual exclusion
1.
2.

3.

4.

No two processes simultaneously in critical region


No assumptions made about speeds or numbers of
CPUs
No process running outside its critical region may block
another process
No process must wait forever to enter its critical region

Critical Section Problem


do {
entry section
critical section
exit section
remainder section
} while (TRUE);

General structure of a typical process Pi

30

Critical Regions (2)

Mutual exclusion using critical regions

Mutual Exclusion with Busy Waiting

Disable interrupt

After entering critical region, disable all interrupts


Since clock is just an interrupt, no CPU
preemption can occur
Disabling interrupt is useful for OS itself, but not
for users

Mutual Exclusion with busy


waiting

Lock variable

A software solution
A single, shared variable (lock), before entering
critical region, programs test the variable, if 0, no
contest; if 1, the critical region is occupied
What is the problem?
An analogy: the notepad on the door

Mutual Exclusion with Busy Waiting :


strict alternation

Proposed solution to critical region problem


(a) Process 0.

(b) Process 1.

Concepts

Busy waiting

Continuously testing a variable until some value


appears

Spin lock

A lock using busy waiting is call a spin lock

Mutual Exclusion with Busy Waiting


(2) : a workable method

Peterson's solution for achieving mutual exclusion

Mutual Exclusion with Busy Waiting


(3)

Entering and leaving a critical region using the


TSL instruction

Sleep and wakeup

Drawback of Busy waiting

A lower priority process has entered critical region


A higher priority process comes and preempts the
lower priority process, it wastes CPU in busy
waiting, while the lower priority dont come out
Priority inversion/deadlock

Block instead of busy waiting

Wakeup sleep

Producer-consumer problem

Two processes share a common, fixed-sized


buffer

Producer puts information into the buffer

Consumer takes information from buffer

A simple solution

Sleep and Wakeup

Producer-consumer problem with fatal race condition

Producer-Consumer Problem

What can be the problem?

Signal missing

Shared variable: counter


Same old problem caused by concurrency
When consumer read count with a 0 but didnt fall
asleep in time, then the signal will be lost

Semaphore

Proposed by Dijkstra, introducing a new type of


variable
Atomic Action

Down (P)

A single, indivisible action


Check a semaphore to see whether its 0, if so, sleep; else,
decrements the value and go on

Up (v)

Check the semaphore


If processes are waiting on the semaphore, OS will chose
on to proceed, and complete its down
Consider as a sign of number of resources

Semaphore

Solve producer-consumer problem

Full: counting the slots that are full; initial value


0
Empty: counting the slots that are empty, initial
value N
Mutex: prevent access the buffer at the same
time, initial value 0 (binary semaphore)
Synchronization/mutual exclusion

Semaphores

The producer-consumer problem using semaphores

Mutexes

Implementation of mutex_lock and mutex_unlock

A problem

What would happen if the downs in


producers code were reversed in order?

Mutexes in Pthreads (1)

Figure 2-30. Some of the Pthreads calls relating to mutexes.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Mutexes in Pthreads (2)

Figure 2-31. Some of the Pthreads calls relating


to condition variables.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Mutexes in Pthreads (3)

...

Figure 2-32. Using threads to solve


the producer-consumer problem.

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Classic IPC Problems

Dining philosopher problem

A philosopher either eat or think


If goes hungry, try to get up two forks and eat

Reader Writer problem

Models access to a database

Dining Philosophers Problem (1)

Figure 2-44. Lunch time in the Philosophy Department.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Dining Philosophers Problem (2)

Figure 2-45. A nonsolution to the dining philosophers problem.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Dining Philosophers Problem (3)

...
Figure 2-46. A solution to the dining philosophers problem.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Dining Philosophers Problem (4)


...

...
Figure 2-46. A solution to the dining philosophers problem.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Dining Philosophers Problem (5)


...

Figure 2-46. A solution to the dining philosophers problem.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

The Readers and Writers Problem (1)

...
Figure 2-47. A solution to the readers and writers problem.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

The Readers and Writers Problem (2)


...

Figure 2-47. A solution to the readers and writers problem.


Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Reader-Writer Problem

What is the disadvantage of the solution?

Writer faces the risk of starvation

scheduling

Which process to run next?


When a process is running, should CPU run
to its end, or switch between different jobs?

Process switching is expensive

Switch between user mode and kernel mode


Current process must be saved
Memory map must be saved
Cache flushed and reloaded

Scheduling Process Behavior

Figure 2-38. Bursts of CPU usage alternate with periods of waiting


for I/O. (a) A CPU-bound process. (b) An I/O-bound process.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Note

When CPU gets faster, processes are getting


more I/O bounded

A basic idea is if an I/O bound process wants


to run, it should get a change quickly

Concepts

Preemptive algorithm

If a process is still running at the end of its time


interval, it is suspended and another process is
picked up

Nonpreemptive

Picks a process to run and then lets it run till it


blocks or it voluntarily releases the CPU

Categories of Scheduling Algorithms

Different environments need different


scheduling algorithms

Batch

Interactive

Still in wide use in business world


Non-preemptive algorithms reduces process switches
Preemptive is necessary

Real time

Processes run quickly and block

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Scheduling Algorithm Goals

Figure 2-39. Some goals of the scheduling algorithm under


different circumstances.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Scheduling in Batch Systems

First-come first-served
Shortest job first

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

FCFS
Process

Arrive
time

Service
time

Start time

Finish
time

Turnar Weighted
ound turnaroun
d

100

101

100

101

102

100

100

100

102

202

199

1.99

FCFS is advantageous for which kind of


jobs?

FCFS

Disadvantage:

One CPU-bound process runs for 1 sec at a time


Many I/O bound processes that use little CPU
time but each has to perform 1000 disk reads

Shortest Job First

Figure 2-40. An example of shortest job first scheduling.


(a) Running four jobs in the original order. (b) Running them
in shortest job first order.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Shortest Job First

Turnaround times: shortest job first is


provably optimal

But only when all the jobs are available


simultaneously

Shortest job first

SJF

FCFS

Process

Arrive time

Service Time

Finish time

18

13

turnaround

16

weighted

2.67

3.1

1.5

2.25

2.1

finish

12

14

18

turnaround

10

11

14

weighted

5.5

3.5

2.8

Compare:

Average Turnaround time


Short job
Long job

average

Scheduling in Interactive Systems

Round-robin scheduling
Priority scheduling
Multiple queues
Shortest process next
Guaranteed scheduling
Lottery scheduling
Fair-share scheduling

Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Round-Robin Scheduling

Figure 2-41. Round-robin scheduling.


(a) The list of runnable processes. (b) The list of runnable
processes after B uses up its quantum.
Tanenbaum, Modern Operating Systems 3 e, (c) 2008 Prentice-Hall, Inc. All rights reserved. 0-13-6006639

Example: RR with Time Quantum = 20

Arrival time = 0
Time quantum =20

Process

Burst Time

P1

53

P2

17

P3

68

p4

24

The Gantt chart is

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3
0 20 37 57 77 97 117 121 134 154162

Typically, higher average turnaround than SJF, but better


response

Size of time quantum

The performance of RR depends heavily on


the size of time quantum
Time quantum

Too big = FCFS


Too small:

Hardware: Process sharing


Software: context switch, high overhead, low CPU
utilization

Must be large with respect to context switch

Context switch

If the quantum is 4msec, and context switch


is 1msec, then 20% of CPU time is wasted

If the quantum if 100msec, the wasted time is


1%, but less responsive

A quantum around 20-50 msec is reasonable

Turnaround Time Varies With The Time Quantum

Will the average turnaround time improve


as q increase?
80% CPU burst should be shorter than q

Priority scheduling

Each priority has a priority number

The highest priority can be scheduled first

If all priorities equal, then it is FCFS

Example

E.g.:

Process

Burst Time

Priority

P1

10

P2

P3

P4

P5

Priority (nonpreemprive)

Average waiting time


= (6 + 0 + 16 + 18 + 1) /5 = 8.2

Multiple Queues

CTSS

Only one process in memory


It is wise to give large quantum to CPU-bound
process and small quantum to interactive process
Priority classes

Highest class run for one quantum; next-highest for two


quanta, and so on
When a process used up its quantum, it will be moved to
the next class

Example of Multiple Queues

Three queues:

Q0 time quantum 8 milliseconds, FCFS


Q1 time quantum 16 milliseconds, FCFS
Q2 FCFS

Multiple queues

It is not good for process that firstly CPUbounded, but later interactive

Whenever a carriage return was typed at the


terminal, the process belonging to the terminal
was moved to the highest priority class
What happened?

Shortest Process Next

In interactive systems, it is hard to predict the


remaining time of a process
Make estimate based on past behavior and
run the shortest estimated running time

T0 , T0 / 2 + T1 / 2, T0 / 4 + T1 / 4 + T2 / 2....

Aging:

Estimate next value in a series by taking the


weighted averaged of the current and previous
estimate

Priority inversion

Priority inversion

When the higher-priority process needs to read or


modify kernel data that are currently being
accessed by another, lower-priority process
The high-priority process would be waiting for a
lower-priority one to finish

E.g.:

Priority: P1<PRT3<PRT2
PRT3 preempt P1; PRT2 waits for P1;
PRT2 waits for PRT3

Priority Inversion in
Pathfinder

The landing on Mars of Pathfinder was flawless


But days later, Pathfinder began to experience
series of system resets, casing data loss
VxWorks provides preemptive priority scheduling
of threads. Tasks on the Pathfinder spacecraft
were executed as threads with priorities that
were assigned in the usual manner reflecting the
relative urgency of these tasks.

Priority Inversion in
Pathfinder

"information bus

bus management task

a shared memory area used for passing information


between different components of the spacecraft.
ran frequently with high priority to move certain kinds of
data in and out of the information bus. Access to the bus
was synchronized with mutual exclusion locks (mutexes).

meteorological data gathering task ran as an


infrequent, low priority thread, used the information
bus to publish its data.
a communications task that ran with medium
priority.

Priority Inversion in
Pathfinder

What would happen if the (medium priority)


communications task to be scheduled during
the short interval while the (high priority)
information bus thread was blocked waiting
for the (low priority) meteorological data
thread?
A watchdog would notice that the information
bus thread hasnt been executed for some
time; and would reset the system

Priority inversion (cont.)

Solution

Priority-inheritance (lending)

PRT2 lends its priory to P1, thus PRT3 could not preempt P1

Priority inheritance must be transitive

E.g.:

Priority: P1<PRT3<PRT2

Priority Inversion

Ceiling Protocol

One way to solve priority inversion is to use the priority


ceiling protocol, which gives each shared resource a
predefined priority ceiling.
When a task acquires a shared resource, the task is
hoisted (has its priority temporarily raised) to the
priority ceiling of that resource.
The priority ceiling must be higher than the highest
priority of all tasks that can access the resource,
thereby ensuring that a task owning a shared resource
won't be preempted by any other task attempting to
access the same resource.
When the hoisted task releases the resource, the task
is returned to its original priority level.

Exercises

Compare reading a file using a singlethreaded file server and a multithreaded one.

It takes 15 msec to get a request for work,


dispatch it, and do the rest of the necessary
processing, if the data are in the cache
One-third of the time, it will need disk operation,
additional 75 msec is needed
How many requests/sec can the server handle if it
is single threaded? If it is multithreaded?

Exercises

Measurements of a certain system have shown


that the average process run for a T before
blocking on I/O. A process switch requires a time
of S. For round-robin scheduling with quantum
Q, give the CPU efficiency for each of the
following.
Q=
Q >T
S <Q<T
Q=S
Q0

Exercise

Five batch jobs A through E, arrive at a


computer center at almost the same time, and
the estimated running time are 10,6,2,4,and 8
minutes, with priorities 3,5,2,1,4, 5 being the
highest. Computer the average turnaround time
of the following algorithms.

Round robin
Priority scheduling
FCFS
Shortest job first

Exercise

The aging algorithm with a=1/2 is being used


to predict run times. The previous four runs,
from oldest to most recent, are 40, 20,40 and
15 msec. What is the prediction of next time?

Exercise

A process running on CTSS needs 30 quanta


to complete. How many times must it be
swapped in?

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy