
- 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.
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.
- 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

- 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.
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.
No comments:
Post a Comment