Definisi Thread
Thread adalah sebuah alur kontrol dari sebuah
proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan
satu tugas pada satu waktu.
Multithread
Banyak
sistem operasi modern telah memiliki konsep yang dikembangkan agar memungkinkan
sebuah proses untuk memiliki eksekusi multi-threads, agar dapat secara terus
menerus mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama,
maka sistem operasi tersebut memungkinkan proses untuk menjalankan lebih dari
satu tugas pada satu waktu. Suatu proses yang multithreaded mengandung beberapa
perbedaan alur kontrol dengan ruang alamat yang sama.
Contohnya
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network. Kadang
kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa
tugas yang serupa.
Sebagai
contohnya sebuah web server dapat mempunyai ratusan klien yang mengaksesnya
secara concurrent. Kalau web server berjalan sebagai proses yang hanya
mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu
satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia
harus menunggu sampai klien sebelumnya selesai dilayani.
Solusinya
adalah dengan membuat web server menjadi multi-threading. Dengan ini maka
sebuah web server akan membuat thread yang akan mendengar permintaan klien,
ketika permintaan lain diajukan maka web server akan menciptakan thread lain
yang akan melayani permintaan tersebut.
Perbedaan antara proses
dengan thread tunggal dengan proses dengan thread yang banyak adalah proses
dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu
satuan waktu.
Keuntungan Thread
Keuntungan dari program yang multithreading dapat dipisah menjadi empat
kategori:
1. Responsi: Membuat
aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program
terus berjalan meski pun sebagian dari program tersebut diblok atau melakukan
operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna.
Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat
melayani permintaan pengguna sementara thread lain berusaha menampilkan image.
2. Berbagi sumber daya:
thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh
proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah
aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang
sama. 3. Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian
memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena
thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih
ekonomis untuk membuat dan context switch thread. Akan susah untuk mengukur
perbedaan waktu antara proses dan thread dalam hal pembuatan dan pengaturan,
tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan
thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan
pembuatan thread, dan context switch proses 5 kali lebih lama dibandingkan
context switch thread.
4. Utilisasi arsitektur
multiprocessor: Keuntungan dari multithreading dapat sangat meningkat pada
arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel
di atas processor yang berbeda. Pada arsitektur processor tunggal, CPU
menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat
cepat sehingga menciptakan ilusi pararel, tetapi pada kenyataannya hanya satu thread
yang dijalankan CPU pada satu-satuan waktu (satu-satuan waktu pada CPU biasa
disebut time slice atau quantum).
Tiga model Multithreading:
1. Model
Many-to-One. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah
thread. tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna
sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel
pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada
multiprosesor. Contoh: Solaris Green Threads dan GNU Portable Threads.
2. Model
One-to-One. Model ini memetakan setiap thread tingkatan pengguna ke setiap
thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah
setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Karena itu,
jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah
aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem. Contoh: Windows
NT/XP/2000 , Linux, Solaris 9.
3. Model
Many-to-Many. Model ini memultipleks banyak thread tingkatan pengguna ke thread
kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini
mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency
tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh
kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang
bersangkutan dapat berjalan secara paralel pada multiprosessor.
Kesimpulan
Thread adalah alur kontrol dari suatu proses.
Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.
Thread adalah alur kontrol dari suatu proses.
Keuntungan menggunakan Multithreading:
1. Meningkatkan respon dari pengguna.
2. Pembagian sumber daya.
3. Ekonomis.
4. Mengambil keuntungan dari arsitektur multiprosessor.
Tiga model Multithreading:
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.
1. Model Many-to-One.
2. Model One-to-One.
3. Model Many-to-Many.
Sumber:
http://alandalhaq.blogspot.com/2012/04/implementasi-thread-multithreaded.html
Tidak ada komentar:
Posting Komentar