SISTEM OPERASI
PERTEMUAN VI : THREAD
PENGENALAN THREAD
“salah satu mekanisme pemanfaatan CPU”
“cara dari komputer untuk menjalankan dua atau lebih task dalam waktu
bersamaan”
Proses : Proses tradisional (heavyweight).
Thread : Proses ringan (lightweight).
Proses VS Thread
Single Thread & Multithread
Multiprocessing, Multitasking, Multithreading
❖
Multiprocessing penggunaan dua atau lebih CPU dalam sebuah sistem komputer.
❖
Multitasking metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU.
❖
Multithreading pengeksekusian yang mengizinkan beberapa thread
terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat
dijalankan secara independen.
Multiprocessing VS Multithreading
Multiprocessing Multithreading
Respons Pasif Responsif
Resource Sharing
Shared-Memory atau message passing
Data dalam satu proses telah terbagi berdasarkan thread yang ada.
Ekonomi Kurang ekonomis Lebih ekonomis
Multiprocessor Konkuren Paralel
Konkuren VS Paralel
KONKUREN PARALEL
User Thread vs Kernel Thread
❖ Berdasarkan pengendalinya, thread dibagi :
❖ User thread dikendalikan oleh program pada level user tanpa campur tangan kernel
❖ Kenel thread dikendalikan langsung oleh sistem operasi
Model Many-to-One
❖ Kelebihan
❖ Tidak ada batasan jumlah user-thread yang bisa dibuat
❖ Kelemahan
❖ Satu thread melakukan blocking (misal I/O), seluruh proses ter-block
❖ Multithread tidak dapat dijalankan secara parallel pada sistem multicore
❖ Contoh
❖ Solaris Green Threads
❖ GNU Portable Threads
Model One-to-One
❖
Kelebihan
❖ Satu thread blocking tidak akan berpengaruh ke thread lain
❖ Multithread dapat dijalankan secara parallel pada sistem multicore
❖
Kelemahan
❖ Jumlah user-thread yang bisa dibuat terbatas
❖ Pembuatan kernel-thread dapat membebani performa
❖
Contoh : Windows, Linux
Model Many-to-Many
❖
Jumlah kernel-thread yang dibuat
bergantung aplikasi dan spesifikasi mesin
❖
Kelebihan :
❖ Satu thread blocking tidak akan berpengaruh ke thread lain
❖ Tidak ada batasan jumlah user-thread
Thread Library
“Menyediakan API untuk programmer dalam menciptakan dan memanage thread.“
❖ Mengimplementasikan pustaka thread:
❖ Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system call.
❖ Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan melibatkan system call ke kernel.
Ada tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX Pthreads, Java, dan Win32.
Thread Cancellation
Pembatalan Thread
Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya.
❖
Pembatalan Thread terdiri dari:
❖ Asynchronous cancellation Pembatalan thread secara sepihak.
❖
Deffered cancellation Pembatalan thread dengan memberikan ijin
thread untuk membatalkan thread secara berurutan.
Thread Pools
“Menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil.
❖ Permasalahan dalam multithreading :
❖ Ukuran waktu yang diperlukan untuk menciptakan thread yang melayani
permintaan yang diajukan pada kenyataannya thread dibuang seketika sesudah ia menyelesaikan tugasnya.
❖ Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.
Thread Pools
❖ Keuntungan :
❖ (Biasanya) lebih cepat untuk melayani permintaan dengan thread yang ada dibandingkan menunggu thread baru dibuat.
❖ Thread pool membatasi jumlah thread yang ada pada suatu waktu. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem, jumlah memori fisik, dan jumlah permintaan klien yang concurrent.