Selasa, 03 April 2012

Implementasi Thread dan multithreaded server

Thread
Thread adalah objek yang mewakili satu unit eksekusi sekumpulan instruksi.Ada pula yang mendefinisikan, thread adalah sekumpulan instruksi yang dapatdieksekusi secara mandiri. Proses adalah satu unit kepemilikan sumberdaya.

Multithreading
adalah suatu kemampuan yang memungkinkan beberapa threaddapat dijalankan secara bersamaan/bergantian/konkuren.Manfaat aplikasi menggunakan multithreading yaitu agar thread-thread di suatu proses, dapat sharing kode program, data, dan sumber daya, secara lebih efisiendibanding proses-proses terpisah, sehingga kinerja aplikasi berbasis thread lebih baik dibanding aplikasi berbasis proses.
Membuat Thread

Untuk membuat thread ada dua cara yaitu:
1) Membuat kelas implementasi dari interface Runnable
 2) Membuat kelas turunan dari kelas thread
 3) Kondisi Thread
Thread dapat berada dalam 1 dari 4 kondisi berikut:

 Multitasking adalah kemampuan komputer melakukan banyak tugas secarakonkuren/bergantian. Pada multitasking, konkurensi melibatkan banyak proses.Karena multithreading perluasan dari multitasking, maka pada multithreading setiap proses melibatkan banyak thread.Terdapat tiga kelas yang berkaitan dengan aplikasi multithreading :
1.Thread : membuat thread di program
2.ThreadDeath : membersihkan thread yang telah berakhir eksekusinya.
3 ThreadGroup : mengelompokkan thread-threadHanya ada satu interface yaitu Runnable yang digunakan untuk membuat thread.Method-method standard yang berkaitan dengan multithreading :a.
 4. Siklus Hidup Thread
a.

Pertama kali thread diciptakan (
born
), selalu dalam kondisi
ready
. Method
start()
harus dipanggil untuk mengeksekusi method
run()
sehingga threadtersebut siap segera dieksekusi processor.

 b.

Thread yang berada pada kondisi
ready
antri menunggu giliran untuk dieksekusi, penjadwal akan melakukan dispatching kepada thread sehinggathread transisi dari kondisi
ready
ke
running
(processor sedangmengeksekusi thread tersebut).


 c.

Jika saat eksekusi thread memerlukan kondisi tertentu untuk dipenuhi ataukarena diinterupsi, maka thread tersebut dapat memanggil method wait() atausleep() agar thread dapat transisi dari kondisi
running
ke kondisi
waiting
 (menunggu sampai masuk kembali ke kondisi ready).

d.

Thread transisi dari kondisi
running
ke kondisi
dead
ketika method run()selesai dilaksanakan atau diakhiri karena terjadi exception, selanjutnyadihapus dari memori aktif.
Pemakaian Thread

Alasan pemakaian threads:
1. Multiple sequential threads bisa dijalankan secara quasi-parallel
2. Lebih mudah di-create dan di-delete
3. Performance
4. Lebih sesuai diterapkan pada sistem dengan multiple CPU


IMPLEMENTASI THREADS PADA USER-SPACE

Kegunaan Thread

Multithreading berguna untuk multiprocessor dan singleprocessor.

Kegunaan untuk system multiprocessor adalah :

· Sebagai unit pararel atau tingkat granularitas pararelisme.

· Peningkatan kinerja disbanding berbasis proses.

Kegunaan multithreading pada singleprocessor, adalah :

· Kerja foreground dan background sekaligus di satu aplikasi.

· Penanganan asynchronous proseccing menjadi baik.

· Mempercepat eksekusi program.

· Pengorganisasian program menjadi lebih baik.



Manfaat utama banyak thread di satu proses adalah memaksimumkan derajat kongkurensi antara operasi-operasi yang terkait erat. Aplikasi jauh lebih efisien dikerjakan sebagai sekumpulan thread disbanding sekumpulan proses.



Karakteristik Thread

Proses merupakan lingkungan eksekusi bagi thread-thread yang dimilikinya. Thread-thread di satu proses memakai bersama sumber daya yang dimiliki proses, yaitu :

· Ruang alamat.

· Himpunan berkas yang dibuka.

· Proses-proses anak.

· Timer-timer.

· Snyal-sinyal.

· Sumber daya-sumber daya lain milik proses.

Tiap thread mempunyai property independen berikut seperti :

· Keadaan (state) eksekusi thread (running, ready dan sebagainya).

· Konteks pemroses. Thread dapat dipandang sebagai satu PC (program counter) tersendiri independen di satu proses.

· Beberapa penyimpan static per-thread untuk variable-variabel local.

Implementasi Paket Thread:
1. Thread level kernel.
> Keunggulan :
· Memudahkan koordinasi multithread seperti proses server.
· Tidak seboros kumpulan proses tradisional.
> Kelemahan :
· Operasi manajemen thread sangat lebih boros.
· Kernel harus menyediakan semua feature.
2. Thread level pemakai.
> Keunggulan :
Kinerja luar biasa bagus disbanding thread level kernel.
· Tidak diperlukan modifikasi kernel.
· Fleksibelitas tinggi.
> Kelemahan :
· Tidak manfaatkan multiprocessor.
· Untuk aplikasi dengan keterlibatan kernel yang kecil.
· Mengharuskan nonblocking system call.



Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:

   1. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar.
   2. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
   3. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread.
   4. Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataanya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.













http://www.scribd.com/doc/67819329/90/Pengertian-Thread
http://fatiaro-otniel.blogspot.com/
http://alfan-ichwanan.blogspot.com/2012/04/thread-multithread-serta.html
http://bebas.ui.ac.id/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch11s02.html