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.
[Thread]
B. 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.
[single and
multithread]
C. Keuntungan
Multi-Threading
Ø 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.
Ø 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.
Ø 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.
Ø 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.
Ø 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
Ø Multiple
thread bisa mengganggu satu sama lain saat berbagi hardware resource, misalnya
chace memory.
Ø 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.
Ø Harus
ada dukungan dari hardware ataupun software untuk melakukan multi-Threading.
E. Model-Model Threading
Ø 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.
Ø 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.
Thread pengguna biasanya
dapat cepat dibuat dan dikendalikan
Hybrid threading; sebuah
pemetaan M-N, yang berarti beberapa jumlah N-thread aplikasi dipetakan ke
beberapa entitas di kernel.
F. Thread dalam Sistem
Operasi
Sistem operasi telah
mendukung proses multithreading.Setiap sistem operasi memiliki konsep
tersendiri dalam pengimplementasiannya.Sistem operasi dapat mendukung thread
pada tingkatan kernel maupun tingkatan pengguna
G. Model Multi-Threading
a.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.
One-to-One
Memetakan setiap thread
tingkatan pengguna ke thread kernel.
Model ini menyediakan lebih
banyak concurrency dibandingkan model Many-to-One.
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.
Tidak ada komentar:
Posting Komentar