Multi-threading
The
ability of an operating system to execute different parts of a program, called
threads, simultaneously. The programmer must carefully design the program in
such a way that all the threads can run at the same time without interfering
with each other
Advantages of Multi-threading
If a
thread can not use all the computing resources of the CPU (because instructions
depend on each other's result), running another thread permits to not leave
these idle. If several threads work on the same set of data, they can actually
share its caching, leading to better cache usage or synchronization on its
values.
If a
thread gets a lot of cache misses, the other thread(s) can continue, taking
advantage of the unused computing resources, which thus can lead to faster
overall execution, as these resources would have been idle if only a single
thread was executed
1. Two levels of thread
Two levels of thread
1.User level(for user thread)
2.Kernel level(for kernel thread)
User Threads
User
threads are supported above the kernel and are implemented by a thread library
at the user level. The library provides support for thread creation,
scheduling, and management with no support from the kernel.Because the kernel
is unaware of user-level threads, all thread creation and scheduling are done
in user space without the need for kernel intervention.
User-level
threads are generally fast to create and manage User-thread libraries include
POSIX Pthreads,Mach C-threads,and Solaris 2 UI-threads.
Kernel Threads
Kernel
threads are supported directly by the operating system: The kernel performs
thread creation, scheduling, and management in kernel space. Because thread
management is done by the operating system, kernel threads are generally slower
to create and manage than are user threads. Most operating systems-including
Windows NT, Windows 2000, Solaris 2, BeOS, and Tru64 UNIX (formerly Digital
UN1X)-support kernel threads
Multi-threading Models
There are
three models for thread libraries, each with its own trade-offs
Ø Many
threads on one LWP (many-to-one)
Ø One
thread per LWP (one-to-one)
Ø Many
threads on many LWPs (many-to-many)
Many-to-one
The
many-to-one model maps many user-level threads to one kernel thread.
Advantages: Totally portable More efficient Disadvantages: cannot take
advantage of parallelism The entire process is block if a thread makes a
blocking system call Mainly used in language systems, portable libraries like
solaris 2
One-to-one
The
one-to-one model maps each user thread to a kernel thread. Advantages: allows
parallelism Provide more concurrency Disadvantages: Each user thread requires
corresponding kernel thread limiting the number of total threads Used in
LinuxThreads and other systems like Windows 2000,Windows NT
Many-to-many
The
many-to-many model multiplexes many user-level threads to a smaller or equal
number of kernel threads. Advantages: Can create as many user thread as
necessary Allows parallelism Disadvantages: kernel thread can the burden the
performance Used in the Solaris implementation of Pthreads (and several other
Unix implementations)?
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2026 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.