Kamis, 02 April 2009

THREAD

THREAD

PROSES DAN THREAD
Konsep suatu proses yang mengandung dua karakteristik :
§ Unit kepemilikan sumber daya : suatu proses dialokasi ruang alamat virtual untuk menampung proses image, dan kadand-kadang dapat diassign memori utama serta sumber daya lainnya, seperti saluran I/O, perangkat I/O, dan file.
§ Unit pengiriman (dispatching) : sebuah proses merupakan lintasan eksekusi (trace) melalui sebuah program atau lebih. Eksekusi ini dapat digilirkan dengan eksekusi proses lainnya. Jadi, sebuah proses memiliki keadaan eksekusi (running, ready, dan lain-lain.) dan prioritas pengiriman seta merupakan suatu entity yang dijadwalkan dan dikirimkan oleh sistem operasi.

Untuk membedakan dua karakteristik ini, unit dispatching biasanya disebut sebagai thread atau lightweight process, sedangkan unit kepemilikan sumber daya biasanya disebut sebagai proses atau task.

MULTITHREADING MODELS
Multithreading berkaitan dengan kemampuan sistem oerasi untuk mendukung sejumlah thread eksekusi didalam sebuah proses tunggal. Pendekatan tradisional sebuah thread eksekusi per proses, dimana konsep thread tidak dikenal, disebut sebagai pendekatan single-threaded.
contoh :
§ MS-DOS adalah sistem operasi yang mendukung proses pengguna tunggal dan sigle-thread.
§ UNIX, mendukung proses pengguna jamak namun hanya mendukung satu thread per prosesnya.
§ Mesin run-time Java, sistem proses tunggal yang memiliki thread jamak.
§ Widows NT, Solaris, Mach, dan OS/2, penggunaan proses jamak yang masing-masing prosesnya mendukug thread jamak.

Di dalam lingkungan yang ber-multithreading, sebuah proses didefinisikan sebagai unit proteksi dan unit alokasi sumber daya. Hal-hal berikut yang berkaitan dengan proses :
¨ Ruang alamat virtual yang menampung image.
¨ Akses terproteksi ke prosesor, proses lainnya (bagi interprocess communication), file dan sumber daya I/O (perangkat dan saluran).

Didalam suatu proses, mengkin terdapat satu thread atau lebih, yang masing-masing dengan hal berikut :
o Keadaan eksekusi thread (running, eady, dan lain-lain)
o Konteks thread yang tersimpan pada saat tidak berjalan; salah satu memandang suatu thread adalah sebagai program counter independent yang beroperasi di dalam proses.
o Sebuah stack eksekusi
o Beberapa penyimpan statis per-thread bagi variable-variabel lokal.
o Ekses ke memori dan sumber daya prosesnya, yang dipakai bersama dengan thread-thread lainnya didalam proses tersebut.

Multithreading models :
a. Model banyak ke satu (many-to-one model)
Sebuah proses menentukan ruang alamat dan kepemilikan sumber daya dinamiknya sendiri. Di dalam fasilitas user-level thread, semua tugas manajemen thread dilakukan oleh alikasi dan kernel tidak mengetahui keberadaan thread. Contoh : Solaris Green Threads, GNU Portable Threads.

Terdapat beberapa keuntungan apabila menggunakan user-level thread daripada kernel-level thread :
o Thread switching tidak memerlukan privilege mode kernel karena semua struktur data manajemen thread berada di dalam ruang alamat pengguna sebuah proses. Sehingga, proses tidak perlu beralih ke mode kernel untuk melakukan manajemen thread-nya. Hal ini menghemat overhead dua peralihan mode (pengguna ke kernel; kernel kembali ke pengguna).
o Penjadwalan dapat bersifat spesifik terhadap aplikasi. Sebuah aplikasi mungkin memperoleh kelebihannya dari penggunaan algoritma penjadwalan round-robin, sedangkan aplikasi lainnya berasal dari algoritma penjadwalan berbasis prioritas. Algoritma penjadwalan dapat disesuaikan dengan aplikasi tanpa harus menunggu scheduler (penjadwal) OS yang bersangkutan.
o User-level thread dapat beroperasi pada semua sistem operasi. Untuk dapat mendukung user-level thread, tidak diperlukan perubahan pada kernel OS yang bersangkutan. Thread library merupakan kumpulan utilitas-utilitas tingkat aplikasi yang digunakan bersama oleh seluruh aplikasi.

Terdapat perbedaan yang penting antara User-level thread dan kernel-level thread :
¨ Pada sistem operasi secara umum, sebagian besar system call melakukan pemblokiran. Jadi, pada saat thread mengeksekusi sebuah system call, tidak saja thread itu yang diblokir, namun seluruh thread yang berada di dalam proses tersebut juga diblokir.
¨ Dalam sebuah strategi User-level thread yang murni, aplikasi multithreaded tidak dapat memanfaatkan kelebihan multiprocessing. Kernel meng-assign sebuah proses hanya ke sebuah prosesor saja pada suatu saat. Sehingga, hanya sebuah thread yang berada di dalam prose situ saja yang dapat melakukan eksekusi. Akibatnya, kita mendapatkan multiprogramming tingkat aplikasi di dalam sebuah proses. Sementara multiprogramming ini akan menghasilakan percepatan aplikasi yang cukup berarti, ada aplikasi yang memperoleh keuntungan dari kemampuan melakukan eksekusi bagian-bagian kode secara konkruen.

Model satu ke Satu (one-to-one model)
Setiap thread eksekusi merupakan suatu proses yang unik dengan ruang alamat dan sumber dayanya sendiri. Di dalam fasilitas kernel-level thread, semua pekerjaan manajemen thread dilakukan oleh kernel. Di daerah aplikasi tidak terdapat kode manajemen thread, melainkan suatu application programming interface (API) bagi fasilitas thread kernel. Contoh : Windows NT/XP/2000, LINUX, Solaris 9 and later.

Model banyak ke banyak (many-to many model)
Gabungan atribut-atribut banyak ke satu dan satu ke satu. Pada model ini, pembuatan thread dilakukan seluruhnya dalam ruang pengguna sebagai bulk penjadwalan dan sinkronisasi thread-thread di dalam sebuah aplikasi. Pendekatan ini, sejumlah thread yang berada di dalam sebuah aplikasi dapat berjalan secara parallel pada sejumlah prosesor dan suatu blocking system call tidak perlu memblokir seluruh proses. Contoh : Solaris prior versi 9, Windows NT/2000 dengan paket ThreadFiber.

THREAD LIBRARIES
Thread library merupakan kumpulan utilitas-utilitas tingkat aplikasi yang digunakan bersama oleh seluruh aplikasi. Thread libraries berisi kode untuk membuat dan memusnahkan thread, untuk mengirimkan pesan dan data diantara thread, untuk penjadwalan eksekusi thread, dan untuk penyimpanan dan penggunaan kembali konteks thread.

THREADING ISSUES
1. Semantics of fork() and exec() system call.
2. Thread cancellation of target thread
3. Asynchronous atau deffered (penundaan atau ketidak serempakan)
4. Signal handling (isyarat menangani)
5. Thread pools : menciptakan sejumlah thread dalam suatu kolom dimana mereka saling menunggu pekerjaan. Keuntungannya yaitu :
· Pada umumnya sedikit lebih cepat untuk melayani suatu permintaan dengan suatu thread yang sudah ada dibandingkan menciptakan suatu thread baru.
· Mengijinkan sejumlah thread dalam suatu aplikasi menjadi seukuran pool.
6. Thread-specific data
7. Scheduler activation

OPERATING SYSTEM EXAMPLE
o Windows XP Threads
o LINUX Threads


WINDOWS XP THREADS
Pengimplementasian one-to-one menentukan, kernel-level.
Setiap threads meliputi :
· Id thread : suatu nilai unik yang mengindentifikasikan sebuah thread apabila thread itu memanggil server.
· Register set : nilai-nilai register tingkat pengguna yang disimpan.
· Separate user dan kernel stack.
· Private data storage area.

LINUX THREADS

¨ Linux mengacu pada thread sebagai tasksrather disbanding thread.
¨ Thread muncul ketika dilaksanakannya melalui clone() system call.
¨ Clone()allows merupakan sebuah child untuk membagi dalam pengalokasian ruang alamat yang menjadi tugas parent pada proses.