Apa Itu Multithreading?

by Roman Batavi , at February 04, 2019 , have 0 comments
Suatu proses didefinisikan oleh resource yang digunakan dan lokasi yang akan dieksekusi. Namun ada kalanya proses-proses akan menggunakan resource secara bersama-sama. Suatu unit dasar dari CPU utilization yang berisi program counter, kumpulan register, dan ruang stack disebut dengan thread atau lighweight process(LWP). Thread akan bekerja sama dengan thread lainnya dalam hal penggunaan bagian kode, bagian data, dan resource sistem operasi, seperti open file dan sinyal secara kolektif yang sering disebut dengan task.

  • 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



Dalam gambar tersebut terlihat perbedaan antara single thread dengan multi thread. Setiap thread dapat melakukan proses tersendiri, sehingga proses yang semula besar dipecah ke dalam proses kecil­kecil, sedangkan pada single thread hanya ada 1 thread yang menangani proses yang besar. Tentu multithread akan lebih cepat dari pada single thread, namun dalam kasus tertentu terlalu banyak multithread justru memperlambat kerja atau proses. 

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.






Model Multi-Threading

1. Many-to-One
Model many­to­one ini memetakan beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien, tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.
2. One-to-One
Model one­to­one memetakan setiap thread pengguna ke dalam satu kernel thread. Hal ini membuat model one­to­one lebih sinkron daripada model many­to­one dengan mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan; hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung oleh sistem. Model one­to­one diimplementasikan oleh Windows NT dan OS/2. 
3. Many-to-Many
Beberapa tingkatan thread pengguna dapat menggunakan jumlah kernel thread yang lebih kecil atau sama dengan jumlah thread pengguna. Jumlah dari kernel thread dapat dispesifikasikan untuk beberapa aplikasi dan beberapa mesin (suatu aplikasi dapat dialokasikan lebih dari beberapa kernel thread dalam multiprosesor daripada dalam uniprosesor) dimana model many­to­one mengizinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. Model one­to­one mempunyai konkurensi yang lebih tinggi, tetapi pengembang harus hati­hati untuk tidak membuat terlalu banyak thread tanpa aplikasi dan dalam kasus tertentu mungkin jumlah thread yang dapat dibuat dibatasi.

Thread cancellation 
Thread cancellation/ pembatalan thread ialah pemberhentian thread sebelum tugasnya selesai. Misalnya 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 disebut sebagai target thread. Pembatalan Thread terdiri dari 2 jenis:
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
2. Deffered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Thread Pools
Thread Pools adalah cara kerja dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools.
Keuntungan menggunakan Thread Pools
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 penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.

Apa Itu Multithreading?
Apa Itu Multithreading? - written by Roman Batavi , published at February 04, 2019 . And have 0 comments
No comment Add a comment
Cancel Reply
GetID
Copyright ©2013 Ro Man | Blog by
Theme designed by Damzaky - Published by Informatikans
Powered by Blogger
-->