Thread
Thread
A. Thread
• Thread adalah unit terkecil dalam suatu proses yang bisa
dijadwalkan oleh sistem operasi.
• Merupakan sebuah status eksekusi (ready, running, suspend,
block, queue, dll)
• Kadang disebut sebagai proses ringan (lightweight).
• Unit dasar dari dari sistem utilisasi pada processor (CPU).
• Dalam thread terdapat: ID Thread, Program Counter, Register
dan Stack.
• Sebuah thread berbagi code section, data section dan resource
sistem operasi dengan thread yang lain yang memiliki proses
yang sama.
D3 KomSI UGM
Sistem Operasi
C. Keuntungan Multi-Threading
1. Responsive; tanggap: Multi-Threading mengizinkan program untuk berjalan terus walau-pun
pada bagian program tersebut di block atau sedang dalam keadaan menjalankan operasi yang lama/
panjang. Sebagai contoh, multithread web browser dapat mengizinkan pengguna berinteraksi
dengan suatu thread ketika suatu gambar sedang diload oleh thread yang lain.
2. Pembagian sumber daya: Secara default, thread membagi memori dan sumber daya dari proses.
Ketika thread berjalan pada data yang sama, thread tersebut bisa berbagi cache memory.
3. Ekonomis: Mengalokasikan memori dan sumber daya untuk membuat proses adalah sangat
mahal. Alternatifnya, karena thread membagi sumber daya dari proses, ini lebih ekonomis untuk
membuat threads.
4. Pemberdayaan arsitektur multiprosesor: Keuntungan dari multi-threading dapat ditingkatkan
dengan arsitektur multiprosesor, dimana setiap thread dapat jalan secara paralel pada prosesor yang
berbeda. Pada arsitektur prosesor tunggal, CPU biasanya berpindah-pindah antara setiap thread
dengan cepat, sehingga terdapat ilusi paralelisme, tetapi pada kenyataannya hanya satu thread yang
berjalan di setiap waktu.
D. Kerugian Multi-Threading
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.
E. 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.
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.
D3 KomSI UGM
Sistem Operasi
3. Hybrid threading; sebuah pemetaan M-N, yang berarti beberapa jumlah N-thread aplikasi
dipetakan ke beberapa entitas di kernel.
G. Model Multi-Threading
1. Many-to-One
• 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.
2. One-to-One
• Memetakan setiap thread tingkatan pengguna ke thread kernel.
• Model ini menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
D3 KomSI UGM
Sistem Operasi
3. Many-to-Many
• Mengelompokkan banyak thread pengguna untuk dipetakan ke thread kernel yang
jumlahnya lebih sedikit atau sama dengan tingkatan pengguna.
• Mengijinkan sistem operasi untuk membuat sejumlah thread kernel.
H. Thread cancellation
Thread cancellation/ pembatalan thread ialah pemberhentian thread sebelum tugasnya selesai.
Misalnya 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 disebut sebagai target thread. Pembatalan Thread terdiri dari 2
jenis:
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
2. Deffered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini
memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
I. Thread Pools
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan
menempatkan mereka ke pools.
• Keuntungan menggunakan Thread Pools
✔ 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 penting pada
sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.
D3 KomSI UGM