Minggu, 09 November 2014


Thread

                 Thread pada dasarnya merupakan bagian yang lebih kecil dari proses. Thread sendiri merupakan bagian dari proses. Perbedaan yang mendasar antara proses dengan thread adalah proses tidak dapat mengakses ruang lain yang menjadi milik proses lain, sedangkan thread dapat mengakses ruang yang terdapat di thread lainnya. Dalam sebuah thread terdapat :
  • Thread state
  • Saved thread Context saat tidak berjalan
  • Execuiton stack
  • Local variables
  • Akses ke memory dan resource yang dimiliki oleh prosesnya
                  Keuntungan yang dimiliki thread antara lain :
  • Waktu pembuatan yang lebih cepat 
  • Waktu pemberhentian yang lebih cepat
  • Waktu pergantian antar thread lebih cepat daripada antar proses
  • Komunikasi antar thread lebih efisien
                  Thread State dapat dibagi menjadi beberapa ciri : 
  • Spawn, Thread muncul, atau dibuat oleh proses / OS
  • Block, Thread menunggu sebuah event 
  • Unblock, Ketika event yang ditunggu oleh thread muncul
  • Finish, Thread selesai
                   Implementasi dalam Thread dibagi menjadi 3 macam, user level thread, kernel level thread, dan hybrid level thread.

1) User Level Thread
     Ciri - cirinya :
  • Kernel Tidak mengetahui keberadaan thread 
  • Thread management dilakukan oleh aplikasi user level/ library 
      Keuntungannya
  • Thread switching tidak membutuhkan kernel mode privileges 
  • Dapat berjalan di berbagai OS
     Kerugiannya
  • Satu thread blocked, thread lain pada proses yang sama juga blocked
  • Dua thread pada proses yang sama tidak dapat berjalan bersamaan pada dua prosesor
2) Kernel Level Thread
     Ciri - Cirinya : Thread management dilakukan oleh kernel
     
     Keuntungannya 
  • Thread pada proses yang sama  dapat dijalankan pada prosesor  yang berbeda
  • Kernel routines juga dapat multithreading
     Kerugiannya 
  • Thread switching antar proses yang sama tetap melibatkan kernel
  • Dapat memperlambat 
3) Hybrid Level Thread 
     Ciri - cirinya :
  • Ada sejumlah kernel level thread yang dipetakan ke sejumlah user level thread
  • Pembuatan  thread, scheduling, sinkronisasi dilakukan di user space

Thread di Linux

             GNU / Linux menggunakan POSIX Standard Thread API atau dikenal dengan nama pthread. Program dengan thread harus di compile dengan option : -lpthread. Setiap thread dalam sebuah program diidentifikasikan dengan ID dengan type : pthread_t. Fungsi untuk membuat thread adalah :  int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); Dengan parameter :
  • 1 ----------> thread ID
  • 2 ----------> thread atribut (NULL untuk default atribut)
  • 3 ----------> fungsi yang ingin dijalankan
  • 4 ----------> parameter untuk fungsi yang dijalankan
             Beberapa fungsi lain di thread:
  • Pthread_self() ; digunakan untuk mengetahui thread ID dari thread yang sedang aktif
  • Pthread_equal(); Membandingkan thread ID yang satu dengan yang lain, apakah sama atau tidak

Tidak ada komentar:

Posting Komentar