31

Prsentation on-multithreading

Embed Size (px)

Citation preview

Page 1: Prsentation on-multithreading
Page 2: Prsentation on-multithreading

GROUP MEMBERS

• SUMAIN SHAHID (131359)• HAMZA QAISER (131361)• M ZUBAIR (131362)

Page 3: Prsentation on-multithreading

Multithreading

Page 4: Prsentation on-multithreading

contents

• What is Thread ?• Advantage Of Threads • Difference b/w Threads And Process• Tread Control Block (TCB)• Types Of Threads • What is Multithreading ?• Multithreading Models

Page 5: Prsentation on-multithreading

What is thread ?• Threads, Like Processes, Are a Mechanisms To Allow a Program to do

more than one thing at a time . As with processes , threads appear to run concurrently

• The Linux kernel schedules them asynchronously , interrupting each thread from time to time to give others a chance to execute. Conceptually , a thread exists within a process .

• Threads are a finer-grained unit of execution than processes . When you invoke a program

• Linux creates a new process and in that process creates a single thread ,

• which runs the program sequentially . That thread can create additional threads ;

• all these threads run the same program in the same process , but each thread may be executing a different part of the program at any given time

Page 6: Prsentation on-multithreading

Advantages of Thread

• Thread minimize context switching time.• Use of threads provides concurrency within a process.• Efficient communication.• Economy- It is more economical to create and context

switch threads.• Utilization of multiprocessor architectures to a greater

scale and efficiency.

Page 7: Prsentation on-multithreading

Difference between Process and ThreadS.N Process Thread

1 Process is heavy weight or resource intensive. Thread is light weight taking lesser resources than a process.

2 Process switching needs interaction with operating system.

Thread switching does not need to interact with operating system.

3 In multiple processing environments each process executes the same code but has its own memory and file resources.

All threads can share same set of open files, child processes.

4 If one process is blocked then no other process can execute until the first process is unblocked.

While one thread is blocked and waiting, second thread in the same task can run.

5 Multiple processes without using threads use more resources.

Multiple threaded processes use fewer resources.

6 In multiple processes each process operates independently of the others.

One thread can read, write or change another thread's data.

Page 8: Prsentation on-multithreading

Thread control block (TCB)

• An operating system had to keep track of treads, and stored its per-thread information in a data structure called a thread control block (TCB). A multithread-aware operating system also needs to keep track of threads.

Page 9: Prsentation on-multithreading
Page 10: Prsentation on-multithreading

The items that the operating system must store that are unique to each thread are:

• Thread ID• Saved registers, stack pointer, instruction pointer• Stack (local variables, temporary variables, return addresses)• Signal mask• Priority (scheduling information)

The items that are shared among threads within a process are:• Text segment (instructions)• Data segment (static and global data)• BSS segment (uninitialized data)• Open file descriptors• Signals• Current working directory• User and group IDs

Page 11: Prsentation on-multithreading

Types of Thread

Threads are implemented in following two ways• User Level Threads -- User managed threads• Kernel Level Threads-- Operating System managed

threads acting on kernel, an operating system core.

Page 12: Prsentation on-multithreading

User Level Threads

• In this case, application manages thread management kernel is not aware of the existence of threads. The thread library contains code for creating and destroying threads, for passing message and data between threads, for scheduling thread execution and for saving and restoring thread contexts. The application begins with a single thread and begins running in that thread.

Page 13: Prsentation on-multithreading
Page 14: Prsentation on-multithreading

Advantages of user level thread

• Thread switching does not require Kernel mode privileges.• User level thread can run on any operating system.• Scheduling can be application specific in the user level thread.• User level threads are fast to create and manage.Disadvantages• In a typical operating system, most system calls are blocking.• Multithreaded application cannot take advantage of multiprocessing.

Page 15: Prsentation on-multithreading

Kernel Level Threads

• In this case, thread management done by the Kernel. There is no thread management code in the application area. Kernel threads are supported directly by the operating system.

• The Kernel maintains context information for the process as a whole and for individuals threads within the process. Scheduling by the Kernel is done on a thread basis. The Kernel performs thread creation, scheduling and management in Kernel space. Kernel threads are generally slower to create and manage than the user threads.

Page 16: Prsentation on-multithreading

Advantages

• Kernel can simultaneously schedule multiple threads from the same process on multiple processes.

• If one thread in a process is blocked, the Kernel can schedule another thread of the same process.

• Kernel routines themselves can multithreaded. Disadvantages• Kernel threads are generally slower to create and manage

than the user threads.• Transfer of control from one thread to another within same

process requires a mode switch to the Kernel.

Page 17: Prsentation on-multithreading

What Is Multithreading ?• A process may be multithreaded, where the same program contains

multiple concurrent threads of execution. An operating system that supports multithreading has a scheduler that is responsible for preempting and scheduling all threads of all processes.

• Multithreading is a specialized form of multitasking and a multitasking is the feature that allows your computer to run two or more programs concurrently. In general, there are two types of multitasking: process-based and thread-based.

• Process-based multitasking handles the concurrent execution of programs. Thread-based multitasking deals with the concurrent execution of pieces of the same program.

• A multithreaded program contains two or more parts that can run concurrently. Each part of such a program is called a thread, and each thread defines a separate path of execution.

Page 18: Prsentation on-multithreading
Page 19: Prsentation on-multithreading

Why is this good ?

• Threads are more efficient – Much less overhead to create: no need to create new copy of memory space, file descriptors, etc.

• Sharing memory is easy (automatic) – No need to figure out inter-process communication mechanisms

• Take advantage of multiple CPUs – just like processes – • Program scales with increasing # of CPUs – Take advantage of multiple cores•

• Example of Multithreading• Consider a simple web server • The web server listens for request and serves it• If the web server was not multithreaded, the requests processing would be in a queue, thus

increasing the response time and also might hang the server if there was a bad request.• By implementing in a multithreaded environment, the web server can serve multiple request

simultaneously thus improving response time

Page 20: Prsentation on-multithreading

Multithreading ModelsSome operating system provide a combined user level thread and Kernel level thread facility. Solaris is a good example of this combined approach. In a combined system, multiple threads within the same application can run in parallel on multiple processors and a blocking system call need not block the entire process. Multithreading models are three types• Many to many relationship.• Many to one relationship.• One to one relationship.

Page 21: Prsentation on-multithreading

Many to Many Model

• In this model, many user level threads multiplexes to the Kernel thread of smaller or equal numbers. The number of Kernel threads may be specific to either a particular application or a particular machine.

• Following diagram shows the many to many model. In this model, developers can create as many user threads as necessary and the corresponding Kernel threads can run in parallels on a multiprocessor.

Page 22: Prsentation on-multithreading
Page 23: Prsentation on-multithreading

Many to One Model

• Many to one model maps many user level threads to one Kernel level thread. Thread management is done in user space. When thread makes a blocking system call, the entire process will be blocks. Only one thread can access the Kernel at a time , so multiple threads are unable to run in parallel on multiprocessors.

• If the user level thread libraries are implemented in the operating system in such a way that system does not support them then Kernel threads use the many to one relationship modes.

Page 24: Prsentation on-multithreading
Page 25: Prsentation on-multithreading

One to One Model

• There is one to one relationship of user level thread to the kernel level thread . This model provides more concurrency than the many to one model. It also another thread to run when a thread makes a blocking system call. It support multiple thread to execute in parallel on microprocessors.

• Disadvantage of this model is that creating user thread requires the corresponding Kernel thread. OS/2, windows NT and windows 2000 use one to one relationship model.

Page 26: Prsentation on-multithreading
Page 27: Prsentation on-multithreading

Multithreading in linux :

Creating Threads:

• There is following routine which we use to create a POSIX thread:

• Here, p thread _ create creates a new thread and makes it executable. This routine can be called any number of times from anywhere within your code. Here is the description of the parameters:

#include <pthread.h>pthread_create (thread, attr, start_routine, arg)

Page 28: Prsentation on-multithreading

Parameter Description

Thread An opaque, unique identifier for the new thread returned by the subroutine.

Attr An opaque attribute object that may be used to set thread attributes. You can specify a thread attributes object, or NULL for the default values.

start_routineThe C++ routine that the thread will execute once it is created.

Arg A single argument that may be passed to start _ routine. It must be passed by reference as a pointer cast of type void. NULL may be used if no argument is to be passed.

Page 29: Prsentation on-multithreading

• The maximum number of threads that may be created by a process is implementation dependent. Once created, threads are peers, and may create other threads. There is no implied hierarchy or dependency between threads.

Page 30: Prsentation on-multithreading

• Terminating Threads:• There is following routine which we use to terminate a POSIX

thread:

• Here p thread _ exit is used to explicitly exit a thread. Typically, the p thread _ exit() routine is called after a thread has completed its work and is no longer required to exist.

• If main() finishes before the threads it has created, and exits with

p thread _ exit(), the other threads will continue to execute. Otherwise, they will be automatically terminated when main() finishes.

#include <pthread.h>pthread_exit (status)

Page 31: Prsentation on-multithreading

Join or detach threads:

• There are following two routines which we can use to join or detach threads:

P thread _ join ( thread _id, status) P thread _ detach (thread _ id) • The p thread _ join() subroutine blocks the calling

thread until the specified thread_ id thread terminates. When a thread is created, one of its attributes defines whether it is joinable or detached. Only threads that are created as joinable can be joined. If a thread is created as detached, it can never be joined