0% found this document useful (0 votes)
99 views

Software Multithreading

Multi-threading allows an operating system to execute different parts of a program simultaneously by using threads. This can improve performance by keeping CPUs utilized even if one thread is waiting. There are two types of threads - user threads managed by user-level libraries and kernel threads managed by the operating system kernel. User threads are faster to create but cannot leverage parallelism while kernel threads allow parallelism but are slower to create. Multi-threading models include many-to-one mapping many user threads to one kernel thread, one-to-one mapping each user thread to its own kernel thread, and many-to-many mapping many user threads across kernel threads.

Uploaded by

tp2006ster
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views

Software Multithreading

Multi-threading allows an operating system to execute different parts of a program simultaneously by using threads. This can improve performance by keeping CPUs utilized even if one thread is waiting. There are two types of threads - user threads managed by user-level libraries and kernel threads managed by the operating system kernel. User threads are faster to create but cannot leverage parallelism while kernel threads allow parallelism but are slower to create. Multi-threading models include many-to-one mapping many user threads to one kernel thread, one-to-one mapping each user thread to its own kernel thread, and many-to-many mapping many user threads across kernel threads.

Uploaded by

tp2006ster
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Software

Multithreading

What is 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

Two levels of thread :

Two levels of thread User level(for user


thread) 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-tomany)

Many-to-one

The many-to-one model maps many userlevel 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)?

You might also like