Tải bản đầy đủ (.pptx) (45 trang)

Bài giảng hệ điều hành nâng cao chapter 4 threads

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.73 MB, 45 trang )

Chapter 4: Threads

Operating System Concepts – 8

th

Edition

Silberschatz, Galvin and Gagne ©2009


Chapter 4: Threads


Overview



Multithreading Models



Thread Libraries



Threading Issues



Operating System Examples





Windows XP Threads



Linux Threads

Operating System Concepts – 8

th

Edition

4.2

Silberschatz, Galvin and Gagne ©2009


Objectives


To introduce the notion of a thread — a fundamental unit of CPU utilization that forms the basis of multithreaded computer systems



To discuss the APIs for the Pthreads, Win32, and Java thread libraries




To examine issues related to multithreaded programming

Operating System Concepts – 8

th

Edition

4.3

Silberschatz, Galvin and Gagne ©2009


Motivation


Threads run within application



Multiple tasks with the application can be implemented by separate threads



Update display



Fetch data




Spell checking



Answer a network request



Process creation is heavy-weight while thread creation is light-weight



Can simplify code, increase efficiency



Kernels are generally multithreaded

Operating System Concepts – 8

th

Edition

4.4

Silberschatz, Galvin and Gagne ©2009



Single and Multithreaded Processes

Operating System Concepts – 8

th

Edition

4.5

Silberschatz, Galvin and Gagne ©2009


Benefits


Responsiveness



Resource Sharing



Economy




Scalability

Operating System Concepts – 8

th

Edition

4.6

Silberschatz, Galvin and Gagne ©2009


Multicore Programming


Multicore systems putting pressure on programmers, challenges include:



Dividing activities



Balance



Data splitting




Data dependency



Testing and debugging

Operating System Concepts – 8

th

Edition

4.7

Silberschatz, Galvin and Gagne ©2009


Multithreaded Server Architecture

Operating System Concepts – 8

th

Edition

4.8

Silberschatz, Galvin and Gagne ©2009



Concurrent Execution on a
Single-core System

Operating System Concepts – 8

th

Edition

4.9

Silberschatz, Galvin and Gagne ©2009


Parallel Execution on a
Multicore System

Operating System Concepts – 8

th

Edition

4.10

Silberschatz, Galvin and Gagne ©2009



User Threads


Thread management done by user-level threads library



Three primary thread libraries:



POSIX Pthreads



Win32 threads



Java threads

Operating System Concepts – 8

th

Edition

4.11

Silberschatz, Galvin and Gagne ©2009



Kernel Threads


Supported by the Kernel



Examples



Windows XP/2000



Solaris



Linux



Tru64 UNIX



Mac OS X


Operating System Concepts – 8

th

Edition

4.12

Silberschatz, Galvin and Gagne ©2009


Multithreading Models


Many-to-One



One-to-One



Many-to-Many

Operating System Concepts – 8

th

Edition


4.13

Silberschatz, Galvin and Gagne ©2009


Many-to-One


Many user-level threads mapped to single kernel thread



Examples:



Solaris Green Threads



GNU Portable Threads

Operating System Concepts – 8

th

Edition

4.14


Silberschatz, Galvin and Gagne ©2009


Many-to-One Model

Operating System Concepts – 8

th

Edition

4.15

Silberschatz, Galvin and Gagne ©2009


One-to-One


Each user-level thread maps to kernel thread



Examples



Windows NT/XP/2000




Linux



Solaris 9 and later

Operating System Concepts – 8

th

Edition

4.16

Silberschatz, Galvin and Gagne ©2009


One-to-one Model

Operating System Concepts – 8

th

Edition

4.17

Silberschatz, Galvin and Gagne ©2009



Many-to-Many Model



Allows many user level threads to be mapped to many kernel threads



Allows the operating system to create a sufficient number of kernel threads



Solaris prior to version 9



Windows NT/2000 with the ThreadFiber package

Operating System Concepts – 8

th

Edition

4.18

Silberschatz, Galvin and Gagne ©2009



Many-to-Many Model

Operating System Concepts – 8

th

Edition

4.19

Silberschatz, Galvin and Gagne ©2009


Two-level Model



Similar to M:M, except that it allows a user thread to be bound to kernel thread



Examples



IRIX




HP-UX



Tru64 UNIX



Solaris 8 and earlier

Operating System Concepts – 8

th

Edition

4.20

Silberschatz, Galvin and Gagne ©2009


Two-level Model

Operating System Concepts – 8

th

Edition

4.21


Silberschatz, Galvin and Gagne ©2009


Thread Libraries


Thread library provides programmer with API for creating and managing threads



Two primary ways of implementing



Library entirely in user space



Kernel-level library supported by the OS

Operating System Concepts – 8

th

Edition

4.22

Silberschatz, Galvin and Gagne ©2009



Pthreads


May be provided either as user-level or kernel-level



A POSIX standard (IEEE 1003.1c) API for thread creation and synchronization



API specifies behavior of the thread library, implementation is up to development of the library



Common in UNIX operating systems (Solaris, Linux, Mac OS X)

Operating System Concepts – 8

th

Edition

4.23

Silberschatz, Galvin and Gagne ©2009



Pthreads Example

Operating System Concepts – 8

th

Edition

4.24

Silberschatz, Galvin and Gagne ©2009


Pthreads Example (Cont.)

Operating System Concepts – 8

th

Edition

4.25

Silberschatz, Galvin and Gagne ©2009


×