copyright © 2000, daniel w. lewis. all rights reserved. chapter 8 scheduling

23
Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Upload: antwan-gilbert

Post on 13-Dec-2015

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

CHAPTER 8

SCHEDULING

Page 2: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Objective: Selecting Thread to Run

Scheduler selects a

thread to run

Processor relinquished

MultipleWaiting Threads

A Single Running Thread

Context Switch

Page 3: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Thread States: Initial View

Ready

Inactive

Running

Thread unknown to scheduler.

Thread waiting for scheduler to give it a turn.

Page 4: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Time-Sliced Scheduling

• Each thread runs for a fixed amount of time.

• Threads are run in a round-robin sequence.

• Appropriate for regular multi-programming environments.

• Poor response time performance.

• Need better strategy for real-time systems.

Page 5: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Pending Threads

• Threads must often wait for an event to occur or some shared resource to become available.

• Simply moving the task back to the ready state isn't appropriate because it may run again later only to discover that it must continue to wait, thus adding unnecessary task switching overhead.

Page 6: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Thread States: Revised View

Running

Pending

Inactive

Ready

Thread waiting for an external event or shared resource.

Thread waiting for scheduler to give it control.

Page 7: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

State of Thread A

Interrupt Routine

Run-Time

Kernel

State of Thread B

Context SwitchContext Switch

Pending Running

Running Ready

Non-Preemptive Context Switch

Running

Yield CallYield Call

Interrupted

PostPost

Ready

Page 8: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Non-Preemptive Thread States

Running

Inactive

Ready

Pending

YieldingInterrupted

Page 9: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

State of Thread A

Interrupt Routine

Run-Time

Kernel

State of Thread B Pending Running

Running Ready

Preemptive Context Switch

Interrupted

Ready Interrupted

Post

Context Switch

Page 10: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Preemptive Thread States

Running

Inactive

Ready

Pending

Interrupted

Page 11: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Priority-Based Scheduling

• Each thread is assigned a priority number.

• Static priorities never change.

• Dynamic priorities can vary during execution. – Required to avoid Priority Inversion Problem.

Page 12: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Priority Inversion

Priority Inversion

Resource Owned by

High-Priority Thread

State

Run-Time Kernel

Low-Priority Thread

State

RunningRunning Pending

RunningReady Ready

Low-Priority Thread High-Priority Thread

Request resource

Release Resource

Page 13: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Priority Inversion

• Bounded Priority Inversion– Duration is no longer than that of the critical

section where the lower-priority thread owns the resource.

• Unbounded Priority Inversion– Occurs when a third (medium-priority) thread

preempts the low-priority thread during the inversion for an indefinite amount of time.

Page 14: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Mars Pathfinder Suffered Unbounded Priority Inversion

Low-priority meteorological thread

• Acquired the (shared) bus.

Medium-priority, long-running, communications thread

• Woke up and preempted the meteorological thread.

High-priority bus management thread

• Woke up and was blocked because it couldn't acquire the bus; when it couldn't meet its deadline it reinitialized the computer via a hardware reset.

Page 15: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Limiting the Duration of an Unbounded Priority Inversion

• Objective:– To prevent low-priority thread from being preempted

by medium-priority thread during the priority inversion.

• Strategies:– Priority Inheritance Protocol

– Priority Ceiling Protocol

• Technique:– Manipulate thread priorities at run-time.

Page 16: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Priority Inheritance Protocol

• When a high-priority thread attempts to lock a mutex already locked by a lower-priority thread, the Priority Inheritance Protocol (PIP) temporarily raises the priority of the low-priority thread to match that of the blocked thread until the low-priority thread unlocks the mutex.

• Advantage: It is transparent to the application.• Disadvantage: Adds complexity to the kernel.

Page 17: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Priority Ceiling Protocol• Priority of the low-priority thread is raised

immediately when it locks the mutex rather than waiting for a subsequent lock attempt by a higher-priority thread.

• Advantage: Easy to implement.• Disadvantage: The priority ceiling value must be

predetermined for use with the mutex; this value must be the highest among all the threads that attempt to lock the same mutex.

Page 18: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Assigning Priorities

• Scheduling: Threads with higher priority are scheduled to run first.

• Objective: Assign priorities in such a way that all outputs are computed before their deadlines.

Page 19: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Assignment Strategies

• Deadline-Driven Assignment– Assign highest priorities to threads with

shortest deadlines.

• Rate Monotonic Assignment– Assign highest priorities to threads that run

most frequently without regard to deadlines.

Page 20: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Deadlock

Page 21: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Deadlock

• Definition: Two or more threads are blocked waiting on each other's resources.

• Necessary Condition: Threads require exclusive access to two or more shared resources simultaneously.

Page 22: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Entering Deadlock

Thread T1:

Mutex M1:

Mutex M2:

Thread T2:

Pending on M2Ready RunningRunning

Locked by T1

Pending on M1RunningReady

Locked by T2

Page 23: Copyright © 2000, Daniel W. Lewis. All Rights Reserved. CHAPTER 8 SCHEDULING

Copyright © 2000, Daniel W. Lewis. All Rights Reserved.

Preventing Deadlock

1. Require all threads to acquire resources in the same order.

• Often locks resources longer than necessary.• Occasionally there is no order that is

convenient for all threads.

2. Require threads to release all resources and start over if any one resource can't be acquired.