CSci 430: Programming Project

profileunique12
lect-ch10.pdf

Chapter 10 Multiprocessor and Real-Time

Scheduling Seventh Edition By William Stallings

Operating Systems: Internals

and Design Principles

Classifications of Multiprocessor Systems ● Loosely coupled or distributed multiprocessor,

or cluster ● Functionally specialized processors ● Tightly coupled multiprocessor

Synchronization Granularity and Processes

Independent Parallelism

 No explicit synchronization among processes

 each represents a separate, independent application or job

 Typical use is in a time- sharing system

Coarse and Very Coarse-Grained

Parallelism  Synchronization among processes, but at a very gross

level

 Good for concurrent processes running on a multiprogrammed uniprocessor  can be supported on a multiprocessor with little or no

change to user software

Medium-Grained Parallelism

 Single application can be effectively implemented as a collection of threads within a single process

 programmer must explicitly specify the potential parallelism of an application

 there needs to be a high degree of coordination and interaction among the threads of an application, leading to a medium-grain level of synchronization

 Because the various threads of an application interact so frequently, scheduling decisions concerning one thread may affect the performance of the entire application

Fine-Grained Parallelism

 Represents a much more complex use of parallelism than is found in the use of threads

 Is a specialized and fragmented area with many different approaches

Design Issues ● Assignment of

processes to processors

● Use of multiprogramming on individual processors

● Actual dispatching of a process

 The approach taken will depend on the degree of granularity of applications and the number of processors available

Assignment of Processes to Processors

 Simplest: treat processors as pooled resource and assign processes on demand (assume uniform/symmetric architecture)

 Should this assignment be static or dynamic? – Static assignment: process stays on processor it is

assigned for lifetime – Dynamic assignment: process can change processor.

 Advantage of static assignment: less overhead, local caching, gang scheduling

 A disadvantage of static assignment is that one processor can be idle, with an empty queue, while another processor has a backlog

 to prevent this situation, a common queue can be used  another option is dynamic load balancing

Assignment of Processes to Processors

 Both dynamic and static methods require some way of assigning a process to a processor

 Approaches:  Master/Slave  Peer

Master/Slave Architecture

 Key kernel functions always run on a particular processor

 Master is responsible for scheduling

 Slave sends service request to the master

 Is simple and requires little enhancement to a uniprocessor multiprogramming operating system

 Conflict resolution is simplified because one processor has control of all memory and I/O resources

Peer Architecture

 Kernel can execute on any processor

 Each processor does self-scheduling from the pool of available processes

Process Scheduling  Usually processes are not dedicated to processors

 A single queue is used for all processors  if some sort of priority scheme is used, there are multiple

queues based on priority

 System is viewed as being a multi-server queuing architecture

Thread Scheduling  Thread execution is separated from the rest of the definition of a

process

 An application can be a set of threads that cooperate and execute concurrently in the same address space

 On a uniprocessor, threads can be used as a program structuring aid and to overlap I/O with processing

 In a multiprocessor system threads can be used to exploit true parallelism in an application

 Dramatic gains in performance are possible in multi-processor systems

 Small differences in thread management and scheduling can have an impact on applications that require significant interaction among threads

Approaches to Thread Scheduling

a set of related thread scheduled to run on a set of processors at the same time, on a one-to-one basis

processes are not assigned to a particular processor

provides implicit scheduling defined by the assignment of threads to processors

the number of threads in a process can be altered during the course of execution

● Load Sharing ● Gang Scheduling ● Dedicated (static) processor assignment ● Dynamic scheduling

Load Sharing  Simplest approach and carries over most directly from a

uniprocessor environment – Load distributed evenly across processors

– No centralized schedule required

– Global queue can be organized and accessed using any scheduling scheme (ch 9)

 Versions of load sharing:  first-come-first-served  smallest number of threads first  preemptive smallest number of threads first

Disadvantages of Load Sharing

 Central queue occupies a region of memory that must be accessed in a manner that enforces mutual exclusion

 can lead to bottlenecks

 Preemptive threads are unlikely to resume execution on the same processor

 caching can become less efficient

 If all threads are treated as a common pool of threads, it is unlikely that all of the threads of a program will gain access to processors at the same time

 the process switches involved may seriously compromise performance

Gang Scheduling  Simultaneous scheduling of the threads that make up a

single process – If closely related processes execute in parallel,

synchronization blocking may be reduced

– Scheduling overhead may be reduced since single scheduling decision affects number of processors and processes/threads

 Useful for medium-grained to fine-grained parallel applications whose performance severely degrades when any part of the application is not running while other parts are ready to run

 Also beneficial for any parallel application

Figure 10.2

Example of Scheduling Groups

With Four and One Threads

Dedicated Processor Assignment

 When an application is scheduled, each of its threads is assigned to a processor that remains dedicated to that thread until the application runs to completion

 If a thread of an application is blocked waiting for I/O or for synchronization with another thread, then that thread’s processor remains idle

 there is no multiprogramming of processors

 Defense of this strategy:  in a highly parallel system, with tens or hundreds of processors,

processor utilization is no longer so important as a metric for effectiveness or performance

 the total avoidance of process switching during the lifetime of a program should result in a substantial speedup of that program

Figure 10.3 Application Speedup as a Function of Number of Threads

Dynamic Scheduling

 For some applications it is possible to provide language and system tools that permit the number of threads in the process to be altered dynamically

 this would allow the operating system to adjust the load to improve utilization

 Both the operating system and the application are involved in making scheduling decisions

 The scheduling responsibility of the operating system is primarily limited to processor allocation

 This approach is superior to gang scheduling or dedicated processor assignment for applications that can take advantage of it

Real-Time Systems  The operating system, and in particular the scheduler, is perhaps the

most important component

 Correctness of the system depends not only on the logical result of the computation but also on the time at which the results are produced

 Tasks or processes attempt to control or react to events that take place in the outside world

 These events occur in “real time” and tasks must be able to keep up with them

Hard and Soft Real-Time Tasks

Hard real-time task

 one that must meet its deadline

 otherwise it will cause unacceptable damage or a fatal error to the system

Soft real-time task

 Has an associated deadline that is desirable but not mandatory

 It still makes sense to schedule and complete the task even if it has passed its deadline

Periodic and Aperiodic

Tasks

 Periodic tasks  requirement may be stated as:

 once per period T  exactly T units apart

 Aperiodic tasks  has a deadline by which it must finish or start  may have a constraint on both start and

finish time

Characteristics of Real Time Systems

Determinism  Concerned with how long an operating system delays

before acknowledging an interrupt

 Operations are performed at fixed, predetermined times or within predetermined time intervals

 when multiple processes are competing for resources and processor time, no system will be fully deterministic

Responsiveness  Together with determinism make up the response time

to external events  critical for real-time systems that must meet timing

requirements imposed by individuals, devices, and data flows external to the system

 Concerned with how long, after acknowledgment, it takes an operating system to service the interrupt

User Control  Generally much broader in a real-time operating system

than in ordinary operating systems

 It is essential to allow the user fine-grained control over task priority

 User should be able to distinguish between hard and soft tasks and to specify relative priorities within each class

 May allow user to specify such characteristics as:

Reliability

 More important for real-time systems than non-real time systems

 Real-time systems respond to and control events in real time so loss or degradation of performance may have catastrophic consequences such as:

 financial loss  major equipment damage  loss of life

Fail-Soft Operation  A characteristic that refers to the ability of a system to fail in

such a way as to preserve as much capability and data as possible

 Important aspect is stability  a real-time system is stable if the system will meet the

deadlines of its most critical, highest-priority tasks even if some less critical task deadlines are not always met

Real-Time

Scheduling of

Process

Real-Time Scheduling

Classes of Real-Time Scheduling Algorithms

Deadline Scheduling  Real-time operating systems are designed with the

objective of starting real-time tasks as rapidly as possible and emphasize rapid interrupt handling and task dispatching

 Real-time applications are generally not concerned with sheer speed but rather with completing (or starting) tasks at the most valuable times

 Priorities provide a crude tool and do not capture the requirement of completion (or initiation) at the most valuable time

Information Used for Deadline Scheduling

Table 10.2 Execution Profile of Two Periodic

Tasks

Figure 10.5 Scheduling of Periodic Real-Time Tasks With Completion Deadlines (Based on Table 10.2)

Figure 10.6 Scheduling of Aperiodic Real-Time Tasks With Starting Deadlines

Table 10.3

Execution Profile of Five Aperiodic

Tasks

Figure 10.7

Rate Monoton

ic Scheduli

ng

Periodic Task Timing Diagram

Figure 10.8

Value of the RMS Upper Bound

Table 10.4

Priority Inversion  Can occur in any priority-based preemptive scheduling

scheme

 Particularly relevant in the context of real-time scheduling

 Best-known instance involved the Mars Pathfinder mission

 Occurs when circumstances within the system force a higher priority task to wait for a lower priority task

Unbounded Priority Inversion

Priority Inheritance

Linux Scheduling

 The three classes are:

 SCHED_FIFO: First-in-first-out real-time threads

 SCHED_RR: Round-robin real-time threads

 SCHED_OTHER: Other, non-real-time threads

 Within each class multiple priorities may be used

Linux Real-Time Scheduling

Non-Real-Time Scheduling

 The Linux 2.4 scheduler for the SCHED_OTHER class did not scale well with increasing number of processors and processes

 Kernel maintains two scheduling data structures for each processor in the system

 Linux 2.6 uses a new priority scheduler known as the O(1) scheduler

 Time to select the appropriate process and assign it to a processor is constant regardless of the load on the system or number of processors

Linux Schedul ing Data Structur es

Figure 10.11

UNIX SVR4 Scheduling

 A complete overhaul of the scheduling algorithm used in earlier UNIX systems

 Major modifications:

 addition of a preemptable static priority scheduler and the introduction of a set of 160 priority levels divided into three priority classes

 insertion of preemption points

SVR Priori ty Class es

Figure 10.12

SVR Priority Classes

SVR4 Dispatch Queues

Figure 10.13

UNIX FreeBSD Scheduler

SMP and Multicore Support

 FreeBSD scheduler was designed to provide effective scheduling for a SMP or multicore system

 Design goals:

 address the need for processor affinity in SMP and multicore systems

 processor affinity – a scheduler that only migrates a thread when necessary to avoid having an idle processor

 provide better support for multithreading on multicore systems

 improve the performance of the scheduling algorithm so that it is no longer a function of the number of threads in the system

Windows Thread Dispatching Priorities

Figure 10.14

Interactivity Scoring  A thread is considered to be interactive if the ratio of its

voluntary sleep time versus its runtime is below a certain threshold

 Interactivity threshold is defined in the scheduler code and is not configurable

 Threads whose sleep time exceeds their run time score in the lower half of the range of interactivity scores

 Threads whose run time exceeds their sleep time score in the upper half of the range of interactivity scores

Thread Migration  Processor affinity is when a Ready thread is scheduled onto the

last processor that it ran on  significant because of local caches dedicated to a single

processor

Windows Scheduling  Priorities in Windows are organized into two bands or classes:

 Each band consists of 16 priority levels

 Threads requiring immediate attention are in the real-time class

 include functions such as communications and real-time tasks

Windows Priority

Relations hip

Figure 10.15

Linux Virtual

Machine Process Scheduli

ng

Summary  With a tightly coupled multiprocessor, multiple processors have access

to the same main memory

 Performance studies suggest that the differences among various scheduling algorithms are less significant in a multiprocessor system

 A real-time process is one that is executed in connection with some process or function or set of events external to the computer system and that must meet one or more deadlines to interact effectively and correctly with the external environment

 A real-time operating system is one that is capable of managing real- time processes

 Key factor is the meeting of deadlines

 Algorithms that rely heavily on preemption and on reacting to relative deadlines are appropriate in this context

  • Chapter 10 Multiprocessor and Real-Time Scheduling
  • Classifications of Multiprocessor Systems
  • Synchronization Granularity and Processes
  • Independent Parallelism
  • Coarse and Very Coarse-Grained Parallelism
  • Medium-Grained Parallelism
  • Fine-Grained Parallelism
  • Design Issues
  • Assignment of Processes to Processors
  • Assignment of Processes to Processors
  • Master/Slave Architecture
  • Peer Architecture
  • Process Scheduling
  • Thread Scheduling
  • Approaches to Thread Scheduling
  • Load Sharing
  • Disadvantages of Load Sharing
  • Gang Scheduling
  • Slide 21
  • Dedicated Processor Assignment
  • Slide 23
  • Dynamic Scheduling
  • Real-Time Systems
  • Hard and Soft Real-Time Tasks
  • Periodic and Aperiodic Tasks
  • Characteristics of Real Time Systems
  • Determinism
  • Responsiveness
  • User Control
  • Reliability
  • Fail-Soft Operation
  • Real-Time
  • Real-Time Scheduling
  • Classes of Real-Time Scheduling Algorithms
  • Deadline Scheduling
  • Information Used for Deadline Scheduling
  • Table 10.2 Execution Profile of Two Periodic Tasks
  • Slide 40
  • Slide 41
  • Table 10.3 Execution Profile of Five Aperiodic Tasks
  • Slide 43
  • Periodic Task Timing Diagram
  • Value of the RMS Upper Bound
  • Priority Inversion
  • Unbounded Priority Inversion
  • Priority Inheritance
  • Linux Scheduling
  • Linux Real-Time Scheduling
  • Non-Real-Time Scheduling
  • Linux Scheduling Data Structures
  • UNIX SVR4 Scheduling
  • SVR Priority Classes
  • SVR Priority Classes
  • SVR4 Dispatch Queues
  • UNIX FreeBSD Scheduler
  • SMP and Multicore Support
  • Windows Thread Dispatching Priorities
  • Interactivity Scoring
  • Thread Migration
  • Windows Scheduling
  • Windows Priority Relationship
  • Linux Virtual Machine Process Scheduling
  • Summary