Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang
akan dieksekusi. Namun ada kalanya proses-proses akan menggunakan
resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang
berisi program counter, kumpulan register, dan ruang stack disebut
dengan thread atau lighweight process(LWP). Thread akan bekerja sama
dengan thread lainnya dalam hal penggunaan bagian kode, bagian data, dan
resource sistem operasi, seperti open file dan sinyal secara kolektif
yang sering disebut dengan task.
- 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.
Single-Threading dan Multi-Threading
• Single-Threading
adalah sebuah lightweight process (proses sederhana) yang mempunyai
thread tunggal yang berfungsi sebagai pengendali/ controller.
• Multi-Threading
adalah proses dengan thread yang banyak dan mengerjakan lebih dari satu tugas dalam satu waktu
Dalam gambar tersebut terlihat perbedaan antara single thread dengan
multi thread. Setiap thread dapat melakukan proses tersendiri, sehingga
proses yang semula besar dipecah ke dalam proses kecilkecil, sedangkan
pada single thread hanya ada 1 thread yang menangani proses yang besar.
Tentu multithread akan lebih cepat dari pada single thread, namun dalam
kasus tertentu terlalu banyak multithread justru memperlambat kerja atau
proses.
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.
Model Multi-Threading
1. Many-to-One
Model manytoone ini memetakan beberapa tingkatan pengguna thread hanya
ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di
ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread
melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh
proses akan berhenti (blocked). Kelemahan dari model ini adalah
multihreads tidak dapat berjalan atau bekerja secara paralel di dalam
multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses
kernel dalam suatu waktu.
2. One-to-One
Model onetoone memetakan setiap thread pengguna ke dalam satu kernel
thread. Hal ini membuat model onetoone lebih sinkron daripada model
manytoone dengan mengizinkan thread lain untuk berjalan ketika suatu
thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga
mengizinkan multiple thread untuk berjalan secara parallel dalam
multiprosesor. Kelemahan model ini adalah dalam pembuatan thread
pengguna dibutuhkan 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 onetoone diimplementasikan
oleh Windows NT dan OS/2.
3. Many-to-Many
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel
thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah
dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan
beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa
kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana
model manytoone mengizinkan pengembang untuk membuat thread pengguna
sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu
thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model
onetoone mempunyai konkurensi yang lebih tinggi, tetapi pengembang
harus hatihati untuk tidak membuat terlalu banyak thread tanpa aplikasi
dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat
dibatasi.
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.
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.