Jumat, 13 April 2012

“Threads”

Sistem Operasi
“Threads”
• Definisi: unit dasar dari penggunaan CPU.
• Thread terdiri dari:
– thread ID, program counter, register, dan stack.
• Thread juga sering disebut lightweight process.
• Thread berbagi: 
– code section, data section, files dan sumber daya
dengan thread lain yang termasuk dalam proses yang
sama.
• Proses tradisional ( heavyweight process )
mempunyai thread tunggal

Single and Multithreaded Processes 
 

Thread Life Cycles


Keuntungan Thread
• Responsiveness
• Resource sharing : sebuah aplikasi
dapat mempunyai beberapa thread yang
berbeda dalam sebuah alamat memori
yang sama karena thread berbagi  yang sama karena thread berbagi
memori dan sumber daya dari proses
yang memilikinya.
• Economy
• Utilization of multiprocessor architectures:
setiap thread dapat berjalan secara paralel pada
prosesor yang berbeda.
Multicore programming  challenges
• Dividing activities
• Threads balance
• Data splitting
• Testing and debugging
• Testing and debugging
Multithreading ServerSingle 


Single- -core
 
 Multi- -core (paralel)  
 
Fakta
• Pembuatan Proses lebih berat dan lama daripada Thread
• Pada Solaris:
  – Pembuatan proses 30x lebih lama
  –Context Switch Proses 5x lebih lama daripada CT Thread 
User Threads                                  
• User threads didukung diatas kernel dan
  diimplementasikan oleh thread library pada level user.
• Library mendukung pembuatan thread,
   penjadwalan, dan manajemen tanpa dukungan langsung dari kernel.  langsung dari kernel.
• Karena kernel tidak menyadari adanya user-level
   threads maka pembuatan semua thread dan penjadwalan dilakukan di dalam user space
tanpa intervensi dari kernel.
• Three primary thread libraries:
– POSIX Pthreads
– Win32 threads
– Java threads . 
Kernel Threads
• Kernel threads didukung secara langsung dari sistem operasi.                                                                      – Pembuatan thread, penjadwalan, dan manajemen dilakukan oleh sistem operasi,                                        – Secara umum kernel threads lebih lambat untuk dibuat dibanding user thread.
• Keuntungan:
– SO dapat menjadwalkan thread lain jika ada salah satu thread yang di block
– SO dapat menjadwalkan thread-thread pada multi processor
• Examples
– Windows XP/2000
– Solaris
– Linux
– Mac OS X 
Multithreading model
Many to One Model memetakan beberapa user-level threads ke satu kernel threads.
• Examples: – Solaris Green Threads
–GNU Portable Threads 
 
Many to one
• Efficient karena irit kernel thread
• All of user threads may blocked if a thread makes a blocking system call
• Multiple user thread unable to run in  parallel on multiprocessors                                               
 Multithreading model
One to One model                                                                   memetakan tiap user thread ke tiap kernel thread.
• Examples
– Windows NT/XP/2000
– Linux – Linux
– Solaris 9 and later
• Keuntungan:
– More concurrency– Multiple threads can run in parallel in multiprocessors
Overhead in creating kernel thread related to user thread
Multithreading model
Many to many model memetakan banyak user-level thread ke <= kernel thread
• User dapat membuat banyak thread, masing2 kernel thread dpt jalan di lingkungan multiprocessor
• Allows the  operating system
to create a sufficient number                                          
of kernel threads
• Tidak terlalu overhead
• Examples
– Solaris prior to version 9
– Windows NT/2000 with the
ThreadFiber package                                                                                                                            Thread Libraries
• Thread library provides programmers
with API for creating and managing
threads
• Two primary ways of implementing
– Library entirely in user space
–Kernel-level library supported by the OSThreading issue:  Threading issue:
cancellation cancellation
• Thread cancellation adalah sebuah tugas untuk
memberhentikan thread sebelum thread tersebut
selesai.
– Contoh: JVM akan mematikan seluruh thread sblm end
• Thread yang akan diberhentikan disebut target
thread. thread.
• Dua skenario thread cancellation :
– Asynchronous cancellation : satu thread
memberhentikan target thread seketika itu juga.
– Deferred cancellation : target thread secara periodik
dapat mengecek apakah ia harus berhenti, skenario ini
memberi kesempatan kepada target thread untuk
memberhentikan dirinya sendiri.Kesulitan Thread  Kesulitan Thread
Cancellation Cancellation
• Asynchronous: jika thread yg akan
dimatikan, thread tersebut sedang
mengupdate data.
• Alternatifnya: deferred cancellation • Alternatifnya: deferred cancellationSignal handling Signal handling
• Sebuah sinyal yang digunakan  untuk
memberitahu sebuah proses kalau
peristiwa tertentu sedang terjadi (mis:
perubahan state thread, error, interrupt).
• Pola sinyal bisa asynchronous /
synchronous
– Sebuah sinyal diaktifkan oleh munculnya suatu
peristiwa.
– Sinyal yang diaktifkan dikirim ke proses.
– Sesudah dikirim, sinyal tersebut harus
ditangani.Signal handling Signal handling
• Sinyal Synchronous:
– Sinyal dimunculkan oleh proses dan dikirim
juga ke proses yang melakukan operasi
tersebut
– Ketika ada pengaksesan memory ilegal atau  – Ketika ada pengaksesan memory ilegal atau
divison by zero
• Sinyal Asynchronous:
– Sinyal dimunculkan oleh peristiwa di luar
proses tersebut
– Ketika ada proses menutup window (ALT + F4)Signal handling Signal handling
• Penerima sinyal bisa:
– Diatur oleh sistem operasi
– Didefinisikan oleh user
• Pada single thread penanganan sinyal
mudah, tapi multithreading sulit, krn 1
proses memiliki lbh dr 1 thread
mudah, tapi multithreading sulit, krn 1
proses memiliki lbh dr 1 thread
• Kemungkinan sinyal dikirim ke:
– Thread yg dituju
– Setiap thread pd proses tersebut
– Ke thread tertentu pd proses tersebutThread Pools Thread Pools
• Create a number of threads in a
pool where they await work
• Advantages:
–Usually slightly faster to service a
request with an existing thread than
create a new threadWindows XP Threads Windows XP Threads
• Implements the one-to-one mapping, kernel-
level
• Each thread contains
– A thread ID
– Registers set
– Stack
– Separate user and kernel stacks – Separate user and kernel stacks
– Private data storage area
• The register set, stacks, and private storage area
are known as the context of the threads
• The primary data structures of a thread include:
– ETHREAD (executive thread block) – kernel space
– KTHREAD (kernel thread block) – kernel space
– TEB (thread environment block) – user spaceThread priorities Thread priorities
• THREAD_PRIORITY_IDLE
• THREAD_PRIORITY_LOWEST
• THREAD_PRIORITY_BELOW_NORMAL
• THREAD_PRIORITY_NORMAL • THREAD_PRIORITY_NORMAL
• THREAD_PRIORITY_ABOVE_NORMAL
• THREAD_PRIORITY_HIGHEST
• THREAD_PRIORITY_TIME_CRITICALLinux Thread Linux Thread
• Threads pada linux mulai digunakan
di kernel versi 2.2
• Threads lebih dianggap sebagai
tasks tasks
• Context switch Linux lebih cepat dari
windowsJava Threads Java Threads
• Java threads are managed by the
JVM
• Java threads may be created by:
– Extending Thread class – Extending Thread class
– Implementing the Runnable interfaceJava Threads Java Threads
• Keunggulan Java Threads adalah:
– JVM menggunakan prioritas pre-
emptive berdasarkan algoritma
penjadwalan penjadwalan
– Semua threads di Java mempunyai
prioritas (1-10)
– Jika ada 2 thread yang prioritasnya
sama, digunakan algoritma First In First
Out (FIFO)Contoh “extend Thread” Contoh “extend Thread”Lainnya LainnyaImplements Runnable Implements RunnableHasil HasilNEXT NEXT
• Process Schedulling / Penjadwalan

Tidak ada komentar:

Posting Komentar