Jumat, 19 Oktober 2018
Penjelasan Thread
Pengertian Thread
- Thread adalah prinsip yang memperbolehkan sebagian dari program untuk berjalan secara independen dengan sebagian program lainnya. Dalam threading anda dapat menjalankan beberapa pointer (alamat dalam komputer) sekaligus. Artinya dua atau lebih bagian dari kode dapat dijalankan secara simultan.
2.Single-Threading dan Multi-Threading Single
Threading adalah sebuah lightweight process
(proses sederhana) yang mempunyai thread tunggal yang berfungsi sebagai
pengendali/ controller. Multi-Threadingadalah 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-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.
- D3 KomSI UGM Sistem Operasi
- 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.
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
sumber referensi :
http://www.infomugi.com/2013/05/pengertian-thread.html
https://vivimargaretha494.wordpress.com/2015/10/01/thread-pada-sistem-operasi-2/https://maungampus.blogspot.com/2013/09/pengertian-thread-dan-macam-macamnya.html
sumber referensi :
http://www.infomugi.com/2013/05/pengertian-thread.html
https://vivimargaretha494.wordpress.com/2015/10/01/thread-pada-sistem-operasi-2/https://maungampus.blogspot.com/2013/09/pengertian-thread-dan-macam-macamnya.html