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-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.
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.
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.
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.
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
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.
b. One-to-One
·
Memetakan setiap thread tingkatan pengguna ke
thread kernel.
·
Model ini menyediakan lebih banyak concurrency
dibandingkan model Many-to-One.
c. 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.




No comments:
Post a Comment