Thread System
1.Thread
adalah unit terkecil dalam suatu proses yang bisa dijadwalkan oleh sistem operasi.
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.
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.
3. 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.
4. 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.
5. 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.
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.
6. 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.
Model Multi-Threading
1. Many-to-One2
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.
2One-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
3Many-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.
7. Cancellation
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.
8.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.
9. 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.