Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
THREADS
          By N.B.SHETTY
INTRODUCTION
   A thread is contained       Process and threads
    inside a process and
    different threads in the
    same process share some
    resources (most
    commonly memory),
    while different processes
    do not.
INTRODUCTION
   A thread is a basic unit of CPU utilization, consisting
    of a program counter, a stack, and a set of
    registers, ( and a thread ID. )
   On a single processor, multithreading generally
    occurs by as in multitasking, the processor
    switches between different threads.
   On a multiprocessor or multi-core system, the
    threads or tasks actually do run at the same time,
    with each processor or core running a particular
    thread or task
SINGLE AND MULTI THREAD
   Single Thread
     Has single thread of control

     It allows the process to perform only 1 task at a time.

   Multi thread
     Has many threads

     Simultaneous execution of different task
BENEFITS
   Take less time to create a new tread than a process.
   Less time to terminate a tread than a presses.
   less time to switch between two treads within the same
    process.
   Hence treads within the same process share memory and
    files, they can communicate with each other without
    invoking the kernel.
   Responsiveness.
   Resource sharing .
   Economy.
   Utilization of MP Architectures.
User Threads
   Thread management done by user-level threads
    library
       Thread creation, scheduling, are done in user level
   Fast to create and manage
   Drawback:
       If kernel is single thread, then user level thread
        performing a blocking system call will cause entire
        process to block
KERNEL THREAD
   Supported by OS
       Thread creation, scheduling, are done in user level by
        kernel
   Thread management is performed by os, thus
    kernel thread are slow.
   If thread perform blocking system call, kernel can
    schedule another thread in application for
    execution
Multithreading Models
(In a specific implementation, the user threads
must be mapped to kernel threads, using one
of the following strategies. )

Many-to-One


One-to-One


Many-to-Many
MANY-TO-ONE
   many user-level threads are
    all mapped onto a single
    kernel thread.
   Thread management is
    handled by the thread library
    in user space, which is very
    efficient.
   if a blocking system call is
    made, then the entire process
    blocks, even if the other user
    threads would otherwise be
    able to continue.
   Ex: Green threads for Solaris
    and GNU Portable
ONE-TO-ONE MODEL
   Each user-level thread maps to kernel thread
   Allow anther thread to run if block
   Run parallel
   Drawback: along with user thread kernel thread shld be
    created.
   Ex: Linux and Windows from 95 to XP
MANY-TO-MANY
   The many-to-many model
    multiplexes any number of user
    threads onto an equal or
    smaller number of kernel
    threads, combining the best
    features of the one-to-one and
    many-to-one models.
   Blocking kernel system calls do
    not block the entire process.
   Individual processes may be
    allocated variable numbers of
    kernel threads, depending on
    the number of CPUs present
    and other factors.
   Ex: RIX, HP-UX, and Tru64
    UNIX
Thread Libraries
   Thread libraries provide programmers with an API
    for creating and managing threads.
   Thread libraries may be implemented either in user
    space or in kernel space.
   There are three main thread libraries in use today:
    POSIX Pthreads .
   Win32 threads.
   Java threads .
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).
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).
Treads

More Related Content

Treads

  • 1. THREADS By N.B.SHETTY
  • 2. INTRODUCTION  A thread is contained Process and threads inside a process and different threads in the same process share some resources (most commonly memory), while different processes do not.
  • 3. INTRODUCTION  A thread is a basic unit of CPU utilization, consisting of a program counter, a stack, and a set of registers, ( and a thread ID. )  On a single processor, multithreading generally occurs by as in multitasking, the processor switches between different threads.  On a multiprocessor or multi-core system, the threads or tasks actually do run at the same time, with each processor or core running a particular thread or task
  • 5. Single Thread  Has single thread of control  It allows the process to perform only 1 task at a time.  Multi thread  Has many threads  Simultaneous execution of different task
  • 6. BENEFITS  Take less time to create a new tread than a process.  Less time to terminate a tread than a presses.  less time to switch between two treads within the same process.  Hence treads within the same process share memory and files, they can communicate with each other without invoking the kernel.  Responsiveness.  Resource sharing .  Economy.  Utilization of MP Architectures.
  • 7. User Threads  Thread management done by user-level threads library  Thread creation, scheduling, are done in user level  Fast to create and manage  Drawback:  If kernel is single thread, then user level thread performing a blocking system call will cause entire process to block
  • 8. KERNEL THREAD  Supported by OS  Thread creation, scheduling, are done in user level by kernel  Thread management is performed by os, thus kernel thread are slow.  If thread perform blocking system call, kernel can schedule another thread in application for execution
  • 9. Multithreading Models (In a specific implementation, the user threads must be mapped to kernel threads, using one of the following strategies. ) Many-to-One One-to-One Many-to-Many
  • 10. MANY-TO-ONE  many user-level threads are all mapped onto a single kernel thread.  Thread management is handled by the thread library in user space, which is very efficient.  if a blocking system call is made, then the entire process blocks, even if the other user threads would otherwise be able to continue.  Ex: Green threads for Solaris and GNU Portable
  • 11. ONE-TO-ONE MODEL  Each user-level thread maps to kernel thread  Allow anther thread to run if block  Run parallel  Drawback: along with user thread kernel thread shld be created.  Ex: Linux and Windows from 95 to XP
  • 12. MANY-TO-MANY  The many-to-many model multiplexes any number of user threads onto an equal or smaller number of kernel threads, combining the best features of the one-to-one and many-to-one models.  Blocking kernel system calls do not block the entire process.  Individual processes may be allocated variable numbers of kernel threads, depending on the number of CPUs present and other factors.  Ex: RIX, HP-UX, and Tru64 UNIX
  • 13. Thread Libraries  Thread libraries provide programmers with an API for creating and managing threads.  Thread libraries may be implemented either in user space or in kernel space.  There are three main thread libraries in use today:  POSIX Pthreads .  Win32 threads.  Java threads .
  • 14. 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).
  • 15. 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).