Application
Of Threads
This
section discuss various implementation of threads. Multithreading concepts are
implemented by pthread (POSIX standard), solaris, linux, window 2000 and java.
1. POSIX
THREAD(Pthreads)
·
Pthread refers to the POSIX standard(IEEE 1003.IC) that
defines an API for thread creation and sychronisation.
·
Prior to the of POSIX THREADS, each hardware vendor
implemented their own version of threads.
·
As each implemented from the other, writing portable
multithreaded application was difficult. Thus POSIX standardize the API for
thread management.
·
The current Pthread API is defined only for C programming
language and it is implemented as function with a header file Pthread.h and
thread library.
·
The naming convention for Pthreads is well defined and the
prefix of all the object or function is PTHREAD.
Solaries Threads
·
Solaries 2 is a version of UNIX, that implements Pthreads API
in addition to supporting user-level threads with a library containing APIs for
thread creation and management.
·
Solaries implement multilevel thread support designed to
provide considerable flexibility. It make use of four separate thread related
concepts:
1. Process. This is normal UNIX process
and includes the user’s address space, stack and PCB.
2. User level thread. A user level thread is a
user created unit of execution within a process.these are created by
application programmer.
They provide support for parallel execution within a
process.
3. Lightweight processes. A LWP is a mapping between
user level and kernel threads.
4. Kernel threads. These threads are visible
to OS. They are managed by OS
LINUX
Threads
·
Threads in linux are handled in a different way as compared
to other operating system due to the open source nature of linux.
·
An important difference between linux threads and other
threads is that linux does not differentiate between a process and a thread . a
task represents basics unit of work in linux.
·
To create a child process, linux provides two system calls :
fork and clone.
·
Clone call creates a child process like the fork call, but
main difference is that, fork creates a child process that has itys own process
context similar to that parent process whereas the child process created by
clone shares parts of it execution context with the calling process, such as
memory space, the file descriptor table and the signal handler table
·
At user level, various libraries that implements Pthreads are
available. For example, linuxthreads,NPTL(native POSIX thread library ).
Windows 2000 threads
·
Window
2000 implements the win32 API.
·
A
Window Application runs as a separate
process where each process contains one or more threads.
·
Every
thread of a process has access to the virtual address space of a process
·
The
various data structure used by threads are:
1. ETHEREAD (executive thread block).it
includes pointer to the process to which thread belongs and the address of the
routine in which the thread starts control.
2. KTHREAD (kernel threads block). It includes
scheduling and synchronistion information for the threads. It also includes the
kernel stack and a pointer to TEB.KTHREAD also lies in kernel space and only
kernel has access to it.
3. TEB (thread environment block). It is
a user space data structure that is accessed when thread is running in user
mode. TEB contains a user model stack and an array for thread specific data
Comments
Post a Comment