Download ch5

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

RSTS/E wikipedia , lookup

Library (computing) wikipedia , lookup

Burroughs MCP wikipedia , lookup

OS-tan wikipedia , lookup

Unix wikipedia , lookup

Plan 9 from Bell Labs wikipedia , lookup

Berkeley Software Distribution wikipedia , lookup

CP/M wikipedia , lookup

DNIX wikipedia , lookup

Unix security wikipedia , lookup

Copland (operating system) wikipedia , lookup

VS/9 wikipedia , lookup

Mobile operating system wikipedia , lookup

Spring (operating system) wikipedia , lookup

Distributed operating system wikipedia , lookup

Process management (computing) wikipedia , lookup

Security-focused operating system wikipedia , lookup

Thread (computing) wikipedia , lookup

Transcript
Chapter 5: Threads
 Overview
 Multithreading Models
 Threading Issues
 Pthreads
 Solaris 2 Threads
 Windows 2000 Threads
 Linux Threads
 Java Threads
Operating System Concepts
5.1
Silberschatz, Galvin and Gagne 2002
PROCESS
Operating System Concepts
5.2
Silberschatz, Galvin and Gagne 2002
Single and Multithreaded Processes
Operating System Concepts
5.3
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.4
Silberschatz, Galvin and Gagne 2002
BENEFITS
Operating System Concepts
5.5
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.6
Silberschatz, Galvin and Gagne 2002
Remote Procedure Call Using
Threads
Operating System Concepts
5.7
Silberschatz, Galvin and Gagne 2002
Remote Procedure Call Using
Threads
Operating System Concepts
5.8
Silberschatz, Galvin and Gagne 2002
PROCESS VERSUS TREAD CONTEXT SWITCHING
PER PROCESS ITEMS
Address space
Global variables
Open files
Child processes
Pending alarms
Signals, signal handlers
Accounting info
Operating System Concepts
PER THREAD ITEMS
Program counter
Registers
Stack
State
5.9
Silberschatz, Galvin and Gagne 2002
THREAD STATES
Spawn:
New thread created
Running, Ready: As before
Block:
Waiting for event. Do the mini-context switch
i.e. save and restore registers, PC and SP
Unblock:
Change state to Ready
Finish:
Finish the thread within the process
Operating System Concepts
5.10
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.11
Silberschatz, Galvin and Gagne 2002
Relationship Between Threads and
Processes
Threads:Process Description
Example Systems
1:1
Each thread of execution is a
unique process with its own
address space and resources.
M:1
A process defines an address
space and dynamic resource
ownership. Multiple threads
may be created and executed
within that process.
Operating System Concepts
5.12
Traditional UNIX implementations
Windows NT, Solaris, OS/2,
OS/390, MACH
Silberschatz, Galvin and Gagne 2002
Relationship Between Threads and
Processes
Threads:Process Description
1:M
M:M
Operating System Concepts
Example Systems
A thread may migrate from one
process environment to
another. This allows a thread
to be easily moved among
distinct systems.
Ra (Clouds), Emerald
Combines attributes of M:1
and 1:M cases
TRIX
5.13
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.14
Silberschatz, Galvin and Gagne 2002
USER – LEVEL THREADS
Operating System Concepts
5.15
Silberschatz, Galvin and Gagne 2002
KERNEL – LEVEL THREADS
Operating System Concepts
5.16
Silberschatz, Galvin and Gagne 2002
User Threads
 Thread management done by user-level threads library
 Examples
- POSIX Pthreads
- Mach C-threads
- Solaris threads
Operating System Concepts
5.17
Silberschatz, Galvin and Gagne 2002
Kernel Threads
 Supported by the Kernel
 Examples
- Windows 95/98/NT/2000
- Solaris
- Tru64 UNIX
- BeOS
- Linux
Operating System Concepts
5.18
Silberschatz, Galvin and Gagne 2002
Multithreading Models
 Many-to-One
 One-to-One
 Many-to-Many
Operating System Concepts
5.19
Silberschatz, Galvin and Gagne 2002
Many-to-One
 Many user-level threads mapped to single kernel thread.
 Used on systems that do not support kernel threads.
Operating System Concepts
5.20
Silberschatz, Galvin and Gagne 2002
Many-to-One Model
Operating System Concepts
5.21
Silberschatz, Galvin and Gagne 2002
One-to-One
 Each user-level thread maps to kernel thread.
 Examples
- Windows 95/98/NT/2000
- OS/2
Operating System Concepts
5.22
Silberschatz, Galvin and Gagne 2002
One-to-one Model
Operating System Concepts
5.23
Silberschatz, Galvin and Gagne 2002
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 2
 Windows NT/2000 with the ThreadFiber package
Operating System Concepts
5.24
Silberschatz, Galvin and Gagne 2002
Many-to-Many Model
Operating System Concepts
5.25
Silberschatz, Galvin and Gagne 2002
Threading Issues
 Semantics of fork() and exec() system calls.
 Thread cancellation.
 Signal handling
 Thread pools
 Thread specific data
Operating System Concepts
5.26
Silberschatz, Galvin and Gagne 2002
Pthreads
 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.
Operating System Concepts
5.27
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.28
Silberschatz, Galvin and Gagne 2002
/* example – cont. */
Operating System Concepts
5.29
Silberschatz, Galvin and Gagne 2002
Solaris 2 Threads
Operating System Concepts
5.30
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.31
Silberschatz, Galvin and Gagne 2002
Solaris Process
Operating System Concepts
5.32
Silberschatz, Galvin and Gagne 2002
Operating System Concepts
5.33
Silberschatz, Galvin and Gagne 2002
Solaris Thread Execution
 Synchronization
 Suspension
 Preemption
 Yielding
Operating System Concepts
5.34
Silberschatz, Galvin and Gagne 2002
Windows 2000 Threads
 Implements the one-to-one mapping.
 Each thread contains
- a thread id
- register set
- separate user and kernel stacks
- private data storage area
Operating System Concepts
5.36
Silberschatz, Galvin and Gagne 2002
Linux Threads
 Linux refers to them as tasks rather than threads.
 Thread creation is done through clone() system call.
 Clone() allows a child task to share the address space of
the parent task (process)
Operating System Concepts
5.37
Silberschatz, Galvin and Gagne 2002
Java Threads
 Java threads may be created by:
 Extending Thread class
 Implementing the Runnable interface
 Java threads are managed by the JVM.
Operating System Concepts
5.38
Silberschatz, Galvin and Gagne 2002
Java Thread States
Operating System Concepts
5.39
Silberschatz, Galvin and Gagne 2002