Konsep Thread
Thread adalah sebuah alur kontrol dari sebuah proses. Kontrol thread tunggal ini hanya memungkinkan proses untuk menjalankan satu tugas pada satu waktu. Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter,register set, dan stack. Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama Thread juga sering disebut lightweight process.
Multithreading
1. Thread Pengguna
Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread, thread pengguna cepat dibuat dan dikendalikan.
2. Thread Kernel
Thread yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Karena dilakukan oleh sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna.
Contoh Multithreading
Banyak perangkat lunak yang berjalan pada PC modern dirancang secara multi-threading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network. Situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Contohnya adalah sebuah web server yang dapat mempunyai ratusan klien yang mengaksesnya secara concurrent.
Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multi threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.
Model Multithreading
1. Model Many-to-One
Model ini memetakan banyak user-level thread ke satu kernel thread. Pengaturan thread dilakukan di user space. Model ini efisien tetapi ia mempunyai kelemahan yang sama dengan user thread serta tidak dapat berjalan secara pararel pada multiprocessor.
2. Model One-to-One
Model ini memetakan setiap user thread ke kernel thread, menyediakan lebih banyak concurrency dibandingkan many-to-one mode. Keuntungannya sama dengan keuntungan kernel thread sedangkan kelemahannya setiap pembuatan user thread membuatuhkan pembuatan kernel thread yang dapat menurunkan performa dari sebuah aplikasi. Sistem operasi yang mendukung one-to-one model ini adalah windows NT dan OS/2
3. Model Many-to-Many
Multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih kecil atau sama banyaknya dengan user-level thread Jumlah kernel thread dapat spesifik untuk sebagian aplikasi atau sebagian mesin Developer dapat membuat user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan dapat bejalan secara pararel pada multiprocessor. Ketika suatu thread menjalankan blocking system call maka kernel dapat menjadualkan thread lain untuk melakukan eksekusi. Sistem operasi yang mendukung model ini adalah solaris, irix, dan digital unix.
Pustaka Thread
Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library bertugas untuk menyediakan API (Application Programming Interface) untuk programmer dalam menciptakan dan memanage thread. Ada dua cara dalam mengimplementasikan pustaka thread :
- Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system call. Jadi, jika kita memanggil fungsi yang sudah ada di pustaka, maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan system call.
- Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan melibatkan system call ke kernel.
- Asynchronous cancellation : Suatu thread seketika itu juga membatalkan target thread.
- Deferred cancellation : Suatu thread secara periodik memeriksa apakah ia harus batal, cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut.
- Process Contention Scope (PCS) : Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP (lightweight process) yang tersedia.
- System Contention Scope (SCS) : SCS berfungsi untuk memilih satu dari banyak thread, kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).
Komentar
Posting Komentar