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.
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.
Keuntungan Multi-Threading
1. 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.
2. 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.
3. 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.
4. 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
1. Multiple thread bisa mengganggu satu sama lain
saat berbagi hardware resource, misalnya chace memory.
2. 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.
3. Harus ada dukungan dari hardware ataupun
software untuk melakukan multi-Threading.
Model-Model Threading
1. 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.
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.
2. 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
3. Many-to-Many
Cancellation
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.
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.
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.
Referensi:
u=https://en.wikipedia.org/wiki/Thread_(computing)&hl=id&sl=en&tl=id&client=srp
https://vivimargaretha494.wordpress.com/2015/10/01/thread-pada-sistem-operasi-2/
http://ulpiupie.blogspot.com/2012/04/proses-thread-dalam-sistem-operasi.html
https://www.sridianti.com/perbedaan-proses-dan-thread-dalam-os.html
https://developer.android.com/guide/components/processes-and-threads
Referensi:
u=https://en.wikipedia.org/wiki/Thread_(computing)&hl=id&sl=en&tl=id&client=srp
https://vivimargaretha494.wordpress.com/2015/10/01/thread-pada-sistem-operasi-2/
http://ulpiupie.blogspot.com/2012/04/proses-thread-dalam-sistem-operasi.html
https://www.sridianti.com/perbedaan-proses-dan-thread-dalam-os.html
https://developer.android.com/guide/components/processes-and-threads
Tidak ada komentar:
Posting Komentar