Sabtu, 08 November 2014

Sekarang saya akan pos tentang thread dan thread programming yang biasa berada dalam suatu proses.

Thread & Proses 

Thread merupakan sekumpulan baris instruksi yang alurnya berjalan secara sekuensial di prosesor. Jadi simpelnya thread adalah bagian dari sautu proses atau bisa juga disebut sebagai proses kecil.
Lalu, dalam sistem operasi kita mengenal istilah multithreading yang  dapat didefinisikan suatu OS mendukung sejumlah thread dieksekusi dalam sebuah proses.



Ms. Dos merupakan salah contoh OS yang hanya mampu menjalankan satu proses dengan hanya 1 thread. Sebaliknya Unix Family 1980 mendukung banyak proses tapi dengan setiap proses hanya memiliki satu thread. Contoh OS yang mampu menjalankan banyak thread dalam suatu proses yaitu, Mac, Windows dan Linux, selain itu bahasa yang memiliki OS mini seperti java yang memiliki Java Virtual Machine juga satu proses yang mampu menjalankan banyak thread.

Keuntungan Penggunaan Thread
-komunikasi thread lebih efisien
-waktu pembuatan lebih cepat
-waktu pemberhentian lebih cepat
-waktu penggantian antar thread lebih cepat

Kerugian penggunaan Thread
-keamanan yang kurang karena penggunaan shared data

Contoh Aplikasi :
Google Chrome : menggunakan multiproses
Mozilla Firefox : menggunakan multithread
Apache              : menggunakan multiproses dan multithread

Contoh Penggunaan Thread
-Foreground dan background Work
-Asynchronous Processing

Thread State
-Spawn
   -Thread muncul
-Block
   -Thread menunggu event
-Unblock
   -Terjadi saat event telah terjadi
Finish
   -Selesai menjalankan thread

User Level Thread
  Ciri-ciri :
        -Kernel tidak mengetahui keberadaan thread
       -Thread manajemen dilakukan aplikasi user level
  Keuntungan :
       -Tidak membutuhkan kernel mode priviledge
       -Dapat berjalan di berbagai proses
  Kerugian :
       -Satu thread blocked, yang lain juga diblock

Kernel Level Thread
  Ciri-ciri :
       -Thread management dilakukan kernel
  Keuntungan :
       -Tidak ada proses yang terblok
  Kerugian :
       -Membutuhkan kernel mode priviledge sehingga menjadi lebih lambat

Hybrid Level Thread
  Ciri-ciri :
       -Ada sejumlah kernel level thread yang dipetakan ke sejumlah user level thread
       -Pembuatan thread, scheduling, sinkronisasi dilakukan di user space


Thread Programming

Thread di Linux

-GNU/Linux menggunakan POSIX Standar Thread API
     -Dikenal dengan pthread
-Program dengan thread harus di-compile dengan "-lpthread"
  contoh : gcc testhread.c -o thread -lpthread

Program diidentifikasikan dengan thread ID
  -Type data : pthread_t

Fungsi-fungsi programming pthread :
1) pthread_t = tipe data thread
2) pthread_mutex_t = tipe data mutex thread
3) pthread_create = int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
    Parameter : Pertama-->thread ID
                       Kedua----->thread atribut (NULL untuk default atribut)
                       Ketiga----->thread yang ingin dijalankan
                       Keempat-->parameter untuk fungsi yang dijalankan

        Fungsi yang digunakan untuk menciptakan thread baru dalam suatu proses dengan atribut ditentukan oleh attr. Jika attr diisi NULL, atribut default akan dimuat. Jika pemanggilan fungsi berhasil, fungsi akan menyimpan ID dari thread ciptaan pada rujukan yang ditunjuk thread

4) pthread_detach = int pthread_detach(pthread_t thread);
Fungsi ini digunakan untuk mengindikasikan pada implementasi bahwa ruang penyimpanan thread pada thread bisa diminta kembali ketika thread berakhir

5) pthread_cancel = int pthread_cancel(pthread_t thread);
Fungsi ini digunakan untuk meminta agar thread dibatalkan. Kondisi kemampuan membatalkan dan tipedari thread yang dituju menentukan kapan pembatlan terjadi.

6) pthread_mutex_lock = int pthread_mutex_lock(pthread_mutex_t *mutex);
Fungsi ini digunakan untuk mengunci objek mutex yang dirujuk oleh mutex. Jika mutex sudah dikunci, thrad pemanggil akan ditahan hingga mutex menjadi tersedia (tidak terkunci). Operasi ini mengembalikan objek mutex yang dirujuk oleh mutex pada keadaan terkunci dengan thread pemanggil sebagai pemiliknya

7) pthread_mutex_unlock = int pthread_mutex_unlock(pthread_mutex_t *mutex);
Fungsi ini berguna untuk membebaskan objek mutex yang dirujuk mutex. Bagaimana cara mutex dibebaskan tergantung dari tipe atribut mutex

8) pthread_mutex_destroy = int pthread_mutex_destroy(pthread_mutex_t *mutex);
Fungsi ini menghancurkan objek mutex yang dirujuk oleh mutex, sehingga objek tersebut menjadi tidak terinisialisasi.



Nah, sekian post saya kali ini semoga bermanfaat.


   



0 komentar:

Posting Komentar