Monday, November 17, 2014

THREAD

Apa itu thread ... ???
Mungkin ada banyak orang yang bingung akan apa itu thread, dalam postingan saya kali ini, saya akan membahas tentang apa itu thread, tentunya berdasarkan ilmu yang saya dapat saya akan sharing kepada pembaca semuanya. 
Oke langsung saja ... thread merupakan sebuah proses, lalu apa bedanya dengan proses biasa ???
Thread merupakan sebuah alur kontrol dari suatu proses, bisa diibaratkan thread adalah anak / pendukung sebuah proses berjalan. Thread sendiri ada 2 macam, diantranya ada single thread dan multi thread, bedanya terletak pada proses yang dapat dijalankan pada sekali putaran jalan thread. Jika single thread berarti ada sekali event yang dijalankan pada thread tersebut, sedangkan multi thread kebalikannya, akan ada beberapa event yang terjadi dalam satu thread. Contoh single thread adalah OS MS-DOS, sedangkan cotoh multi thread adalah OS Windows, Linux, Mac OS. Proses jalannya sebuah thread ini (terlebih untuk multi thread) berjalan bebarengan sejajar antara thread satu dn thread yang lainnya, jadi membuat proses jadi lebih efisien dan cepat.
Perbedaan mendasar antara thread dengan proses :
=> Thread :
1. Merupakan alur kontrol dari suatu proses.
2. Merupakan unit dasar dari penggunaan CPU dan sering disebut dengan lightweight process.
3. Ruang alamat atau IP address digunakan secara bersama-sama dari proses yang menciptakannya. 
4. Memiliki akses langsung ke segmen data dari prosesnya.
5. Dapat saling berkomunikasi dengan thread lain dalam satu proses.
6. Hampir tidak memiliki overhead.
7. Perubahan pada thread utama seperti pembatalan atau perubahan prioritas dapat mempengaruhi tingkah laku thread lain dalam satu proses.
8. Pembentukan thread membutuhkan waktu yang lebih sedikit.
9. Waktu yang dibutuhkan untuk mengakhiri thread lebih sedikit.
10. Lebih mudah dan cepat melakukan swicth antar thread daripada switch antar proses.
 => sedangkan proses :
1. Merupakan program yang sedang di eksekusi.
2. Proses mencakup program counter, yaitu sebuah stack untuk menyimpan alamat dari instruksi yang selanjutnya akan di eksekusi dan di registrasi.
3. Memiliki ruang alamat atau IP address masing-masing.
4. Dari satu proses dengan proses lainnya harus menggunakan komunikasi. Seperti metode-metode IPC.
5. Memiliki overhead.
6. Hanya dapat mengendalikan proses turunannya.
7. Perubahan pada parent proses tidak mempengaruhi proses turunannya.
8. Pembentukan proses membutuhkan waktu yang lebih lama.
9. Waktu yang dibutuhkan untuk mengakhiri proses lebih lama.


Dari perbandingannya diatas, dapat dilihat bahwa thread lebih unggul daripada proses biasa, bisa disimpulkan bahwa thread itu lebih efektif dan efisien. Namun dibalik keunggulan thread tersebut ada beberapa hal yang bisa merugikan user yaitu jika kita menunda satu proses maka sama saja kita menunda satu kelompok thread yang berjalan pada proses tersebut, dan jika kita menghentikan proses maka sama saja kita menghentikan semua thread yang ada di proses tersebut, karena thread merupakan bagian dari proses.

Jika ada multi thread maka juga ada pula multi proses / multi tasking, yaitu sebuah metode dimana banyak pekerjaan / proses diolah dengan menggunakan sumberdaya CPU yang sama. Dalam kasus sebuah komputer dengan prosesor tunggal, hanya satu instruksi yang dapat bekerja dalam satu waktu, berarti bahwa CPU tersebut secara aktif mengolah instruksi untuk satu pekerjaan tersebut. Sedangkan Multi thread adalah suatu kemampuan yang memungkinkan beberapa kumpulan instruksi atau proses dapat dijalankan secara bersamaan dalam sebuah program. Satu kumpulan instruksi yang akan dieksekusi secara independen dinamakan thread.

Ada beberapa level pada thread, diantaranya :
1. User-level threading, yaitu 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.
2. Kernel-level threading, yaitu 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
  
Selain itu thread juga mempunyai banyak tipe, diantaranya :
1. Model Many-to-One, yaitu memetakan beberapa thread tingkatan pengguna ke sebuah thread tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna sehingga menjadi efisien. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor.
2. Model One-to-One, yaitu memetakan setiap thread tingkatan pengguna ke setiap thread. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.
3. Model Many-to-Many, yaitu banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor.

Sekian pembahasan saya mengenai apa itu thread. Semoga dengan informasi yang saya share ini bisa bermanfaat bagi teman-teman pembaca semuanya.
Baca juga versi thread (implementasi thread) di bahasan saya selanjutnya : 
http://berandailmukita.blogspot.com/2014/11/konfigurasi-thread.html

No comments:

Post a Comment