Latar Belakang
Dalam sistem komputer modern, beberapa thread bisa
tercipta dalam satu waktu. Pada satu saat tertentu, hanya ada satu thread yang
bisa dijalankan, karena CPU hanya bisa melakukan satu hal dalam satu waktu. (Pada
komputer dengan multiprosesor, multicore, dan hyper-threading, masing-masing
prosesor atau core melakukan thread yang berbeda-beda). Akan tetapi sebenarnya
komputer membagi waktu menjadi bagian-bagian kecil sehingga seolah-olah seluruh
thread dijalankan secara bersama-sama. Pembagian waktu berarti CPU mengeksekusi
suatu thread dalam kurun waktu tertentu, setelah itu beralih mengeksekusi
thread yang lain, kemudian thread lain, dan seterusnya dan kemudian kembali ke
thread pertama -- kira-kira 100 kali per detik. Di mata user, semua thread
berjalan pada saat yang sama.
Penggunaan
thread yang banyak digunakan untuk membuat GUI (Graphical User Interface) yang
responsif. Pada dasarnya suatu program harus dapat terus bejalan dan pada saat
yang sama tetap bisa menerima input dari user, menanggapi klik mouse, dan
sebagainya. Thread juga digunakan untuk mempercepat suatu proses, misalnya kita
ingin membuat program yang menunggu suatu input I/O dari network, dan pada saat
yang sama mengolahnya sehingga proses pengolahan berjalan serentak. Jika
program harus menunggu seluruh input datang baru kemudian melakukan pengolahan,
tentunya akan memakan waktu yang lebih lama, terutama apabila aliran network
lambat atau pengolahannya memakan waktu lama.
Metode Thread
Single Thread Process
Sebuah proses tradisional atau heavyweight process
mempunyai single thread yang berfungsi sebagai pengendali. Dapat diartikan
sebagai proses yang bekerja secara berurutan sesuai dengan urutan masing-masing
thread (terstruktur) dan hanya mengerjakan satu tugas dalam satu waktu.
Multithread Process
Merupakan satu atau beberapa thread yang dijalankan
secara bersamaan (multiproses), dimana masing-masing thread tersebut dijalankan
pada jalur masing-masing. Setiap thread pada multithread menjalankan kode atau
script program secara berurutan. Multithread dapat diartikan juga sebagai suatu
proses dengan thread banyak dapat mengerjakan lebih dari satu tugas pada satu
satuan waktu. Multithread sering pula disebut dengan multiproses atau
multitasking pada sistem operasi.
Banyak perangkat lunak yang berjalan
pada PC modern dirancang secara multithreading. Sebuah aplikasi biasanya
diimplementasi sebagai proses yang terpisah dengan beberapa thread yang
berfungsi sebagai pengendali. 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 P a g e | 7 server dapat mempunyai ratusan klien yang
mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang
hanya mempunyai single thread 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 multithreading. 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.
Keuntungan
Thread
Responsiveness
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 user. Sebagai contohnya dalam web browser
yang multithreading, sebuah thread dapat melayani permintaan user sementara
thread lain berusaha menampilkan image.
Resource sharing
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.
Economy
Dalam pembuatan sebuah proses banyak dibutuhkan
pengalokasian memori dan sumber daya. Alternatifnya adalah dengan useran
thread, karena thread berbagi memori dan sumber daya proses yang memilikinya
maka akan lebih ekonomis untuk membuat dan context switch thread. Akan sulit
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.
Utilization of multiprocessor
architectures
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).
Kesimpulan
Thread adalah sebuah alur kontrol dari sebuah
proses. Thread terbagi menjadi dua jenis yaitu Single Thread dan Multithread.
Dilihat dari kegunaannya multithread adalah thread yang paling banyak dipakai
akhir-akhir ini. Suatu proses yang multithreaded mengandung beberapa perbedaan
alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded
meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis,
dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User
level thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh
kernel. User level thread secara tipikal dikelola oleh sebuah library thread di
ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem
operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan
pengelolaan dari pada kernel thread.
Referensi
Gata, Windu. 2005. Bahasa
Pemrograman Java Gui, Error Exception, Thread, I/O (Input/Output), Database & Pembuatan Laporan. Jakarta:-.
Silberschatz, Abraham, Peter Baer
Galvin, dan Greg Gagne. 2005. Operating System
Concepts. Seventh Edition. USA:
John Wiley & Sons, Inc.
0 komentar:
Posting Komentar