THREAD DALAM SISTEM OPERASI
Thread merupakan unit dasar dari
penggunaan CPU, yang terdiri dari Thread_ID, program counter,register set, dan
stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem
operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga
sering disebut lightweight process. Sebuah proses tradisional atau heavyweight
process mempunyai thread tunggal yang berfungsi sebagai pengendali. 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.
waktu.
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.
Keuntungan
Keuntungan dari program yang multithrading dapat dipisah
menjadi empat kategori :
1. Responsi
Membuat aplikasi yang interaktif menjadi multithreading
dapat membuat sebuah program terus berjalan meskipun 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
mengijinkan 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 bisa 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).
Kerugian
1. Multiple thread bisa mengganggu satu sama lain saat berbagi
hardware resource, misalnya chace memory.
2. Execution time (waktu proses) dari sebuah single-thread
tidak dapat diimprove (ditambah), tapi malah bisa diturunkan. Ini terjadi
karena penurunan frequensi yang dibutuhkan ketika terjadi pergantian thread
yang berjalan.
3. Harus ada dukungan dari hardware ataupun software untuk
melakukan multi-Threading.
Status Thread
§ Spawn :
Otomatis thread terbentuk saat
proses terbentuk
Thread bisa dibentuk oleh thread lain dalam satu proses
Thread baru berada pada antrian ready
Thread bisa dibentuk oleh thread lain dalam satu proses
Thread baru berada pada antrian ready
§ Block :
Thread di block bila menuggu suatu
event
§ Unblock :
Bila event yang dibutuhkan sudah
datang, maka thread > ready
§ Finish :
Thread telah selesai dieksekusi
Model-Model Threading
1. Kernel-level threading; thread ini dibuat oleh pengguna yang
berkorespondensi 1-1 dengan entitas-entitas yang terjadwalkan yang berada
di kernel. Ini merupakan implementasi (penerapaan) paling sederhana dari
threading.
·
Thread kernel didukung langsung oleh
sistem operasi.
·
Pembuatan, penjadwalan, dan
manajemen thread dilakukan oleh kernel pada kernel space.
·
Pengaturan thread dilakukan oleh
sistem operasi, sehingga pembuatan dan pengaturan kernel thread lebih
lambat dibandingkan user thread.
Kelebihan :
1. Jika sebuah thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi.
2. Pada lingkungan multiprocessor, kernel dapat menjadual thread-thread pada processor yang berbeda.
Kekurangan :
1. Pengaturan dan pembuatan thread lebih lambat.
1. Jika sebuah thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain di aplikasi untuk melakukan eksekusi.
2. Pada lingkungan multiprocessor, kernel dapat menjadual thread-thread pada processor yang berbeda.
Kekurangan :
1. Pengaturan dan pembuatan thread lebih lambat.
2. User-level threading; sebuah pemetaan
N-1, yang berarti bahwa semua level aplikasi thread dipetakan ke entitas
tunggal yang ada di kernel. Dengan pendekatan ini, switching proses
dapat dilakukan dengan sangat cepat.
·
Thread pengguna didukung kernel
serta diimplementasikan dengan pustaka (library) thread pada tingkatan
pengguna.
·
Pustaka (library) menyediakan
fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen thread
tanpa dukungan dari kernel.
·
Semua pembuatan dan penjadwalan
thread dilakukan dalam ruang pengguna tanpa campur tangan kernel.
Model Multithreading
Multithreading adalah suatu kemampuan yang memungkinkan
beberapa kumpulan instruksi atau proses dapat dijalankan secara bersamaan dalam
sebuah program. Satu kumpulan instruksi yang akan dieksekusi secara independen
dinamakan thread. thread adalah alur kontrol dari suatu proses.atau
sekumpulan perintah(instruksi) yang dapat dilaksanakan(dieksekusi) secara
teratur dengan proses lainnya.Proses melakukan setiap langkah-langkah/intruksi
yang berurutan, setiap intruksi untuk mengeksekusi baris kode/listing – listing
program.Nah Karena langkah-langkah yang berurutan itu, setiap langkah
membutuhkan jumlah waktu tertentu.
Model Many to One
Yaitu memetakan beberapa tingkatan thread user hanya ke satu
buah kernel thread.
Kelebihan :
1. Managemen proses thread dilakukan oleh(di ruang) pengguna, sehingga menjadi lebih efisien.
Kekurangan :
1. Multithread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu. Model ini ada pada Solaris Green dan GNU Portable.
Model One to One
Yaitu memetakan setiap user thread ke dalam 1 kernel thread.
Kelebihan :
1. Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam multiprosesor.
Kekurangan :
1. Dalam pembuatan user thread diperlukan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi, maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model ini ada pada Windows NT dan OS/2.
Model Many to Many
Yaitu membolehkan setiap tingkatan user thread dipetakan ke
banyak kernel thread.
Kelebihan :
1. Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
2. Dan ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan :
1. Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Model ini ada pada Solaris, IRIX, dan Digital UNIX.
Thread cancellation ialah
pemberhentian thread sebelum tugasnya selesai. Umpama, jika dalam program Java
hendak mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka
seluruh thread yang berjalan harus dihentikan terlebih dahulu. Thread yang akan
diberhentikan biasa disebut target thread.Pemberhentian target thread dapat
terjadi melalui dua cara yang berbeda:Asynchronous cancellation: suatu thread
seketika itu juga memberhentikan target thread.
Defered cancellation: target thread
secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan
target thread untuk memberhentikan dirinya sendiri secara terurut.
Alternatifnya adalah dengan
menggunakan deffered cancellation. Cara kerja dari deffered cancellation adalah
dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target
thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika
target thread memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan
thread untuk memeriksa apakah ia harus berhenti pada waktu dimana ia dapat
diberhentikan secara aman yang aman. Pthread merujuk tersebut sebagai
cancellation points.
Threads
Pools
Pada web server yang multithreading
ada dua masalah yang timbul:Ukuran waktu yang diperlukan untuk menciptakan
thread untuk melayani permintaan yang diajukan terlebih pada kenyataannya
thread dibuang ketika ia seketika sesudah ia menyelesaikan tugasnya.Pembuatan
thread yang tidak terbatas jumlahnya dapat menurunkan performa dari
sistem.Solusinya adalah dengan penggunaan Thread Pools, cara kerjanya adalah
dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke
pools, dimana mereka duduk diam dan menunggu untuk bekerja. Jadi ketika server
menerima permintaan maka maka ia akan membangunkan thread dari pool dan jika
thread tersedia maka permintaan tersebut akan dilayani.Ketika thread sudah
selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan
lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server
menunggu sampai ada satu thread yang bebas.
Keuntungan thread pool:
Biasanya lebih cepat untuk melayani
permintaan dengan thread yang ada dibanding dengan menunggu thread baru
dibuat.Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini
pentingpada sistem yang tidak dapat mendukung banyak thread yang berjalan
secara concurrent.