THREAD
THREAD PADA SISTEM OPERASI
1.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.
2.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.
3. Keuntungan Multi-Threading
a)
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.
b)
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.
c)
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.
d)
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
a) Multiple thread bisa mengganggu satu sama lain saat berbagi hardware
resource, misalnya chace memory.
b)
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.
c) Harus ada dukungan dari hardware ataupun software untuk melakukan
multi-Threading.
5. Model-Model Threading
A. 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.
a) Thread kernel didukung langsung oleh sistem operasi.
b) Pembuatan, penjadwalan, dan manajemen thread dilakukan oleh kernel pada
kernel space.
c) Pengaturan thread dilakukan oleh sistem operasi, sehingga pembuatan dan
pengaturan kernel thread lebih lambat dibandingkan user thread.
B.
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.
a) Thread pengguna didukung kernel serta diimplementasikan dengan pustaka
(library) thread pada tingkatan pengguna.
b) Pustaka (library) menyediakan fasilitas untuk pembuatan thread,
penjadwalan thread, dan manajemen thread tanpa dukungan dari kernel.
c) Semua pembuatan dan penjadwalan thread dilakukan dalam ruang pengguna
tanpa campur tangan kernel.
6. Thread dalam Sistem Operasi
a) Sistem operasi telah mendukung proses multithreading.
b) Setiap sistem operasi memiliki konsep tersendiri dalam
pengimplementasiannya.
c) Sistem operasi dapat mendukung thread pada tingkatan kernel maupun
tingkatan pengguna.
1.
Model Multi-Threading
I.
Many-to-One
a) Memetakan beberapa thread tingkatan pengguna
b) ke sebuah thread tingkatan kernel.
c) Pengaturan thread dilakukan dalam ruang
d) pengguna, sehingga efisien.
e) Hanya satu thread pengguna yang dapat
f) mengakses thread kernel pada satu saat.
II.
One-to-One
a) Memetakan setiap thread tingkatan pengguna ke thread kernel.
b) Model ini menyediakan lebih banyak concurrency dibandingkan model
Many-to-One.
c) D3 KomSI UGM Sistem Operasi
III.
Many-to-Many
a) Mengelompokkan banyak thread pengguna untuk dipetakan ke thread kernel
yang
b) jumlahnya lebih sedikit atau sama dengan tingkatan pengguna.
c) 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.
Komentar
Posting Komentar