Nama
Nama
Kelompok NIM
1. I Putu Gede Maysa Putra 2008561086
2. I Dewa Agung Adwitya Prawangsa 2008561091
3. Ida Bagus Made Surya Widnyana 2008561092
4. Albertus Ivan 2008561093
5. Dewa Nyoman Agung Adipurwa Mahandiri 2008561096
6. Muhammad Arrysatrya Yusuf Putranda 2008561097
7. Anak Agung Hendra Widiastana Tusan 2008561102
8. I Putu Marcel Wiguna 2008561103
9. Marcellino Rivaldo Pelaupessy 2008561104
10. Pande Putu Devo Punda Maheswara 2008561107
1
Pengenalan Thread
Pengenalan
Thread
Proses dibagi menjadi 2, yakni Proses Berat (Heavyweight) yang juga dikenal sebagai
proses tradisional dan Proses Ringan (Lightweight) yang juga dikenal sebagai Thread.
Thread adalah unit dasar dari CPU dan merupakan sebuah status
eksekusi (Ready,Running, Suspend, Block,Queue,dll). Thread
terdiri dari : Thread ID, Program Counter, Register Set, dan Stack.
Beberapa task dengan aplikasi dapat diimplementasikan oleh
beberapa thread seperti : Mengupdate display, Mengambil Data,
Melakukan koreksi ejaan, dan merespon network request.
Keuntungan
Responsi
Dapat membuat suatu program terus berjalan meskipun
Berbagi Sumber Daya
sebagian dari proses dalam program itu ter-block.
Thread dapat berbagi sumber daya dengan thread
yang lain yang dimiliki oleh proses yang sama.
Ekonomis
Alokasi Memori dan sumber daya Thread jauh lebih murah
daripada proses, hal ini karena thread berbagi sumber daya
dan memori di proses yang sama. Pemberdayaan Arsitektur Multiproses
Keuntungan dari Multihtread dapat
ditingkatkan pada Arstitektur Multiprocessor
dimana setiap thread dapat berjalan secara
pararel pada processor yang berbeda.
2
Multithreading Models
Multithreading
Models
Thread pengguna
thread
merupakan thread yang pengaturannya
dilakukan oleh pustaka thread pada tingkatan
pengguna. Karena pustaka yang menyediakan Thread kernel
fasilitas untuk pembuatan dan penjadwalan thread,
thread pengguna cepat dibuat dan dikendalikan. merupakan 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.
Multithreading Models
Multithreading memiliki 3 macam model yaitu
Model many-to-one
Model one-to-one
Model many-to-many
Multithreading Models
Model many-to-one
Synchronous Threading
- Proses induk menunggu semua thread anak
selesai sebelum melanjutkan eksekusi (fork-join)
- Setelah thread anak selesai, join ke thread induk
Thread Libraries
Pthreads
03 Pembatalan thread
04Thread local storage
05Schedulers activation
Permasalahan Dalam Thread
01System call fork() dan exec()
Permasalahan
Jika fungsi fork() dipanggil oleh salah satu
thread, apakah semua thread diduplikasi
atau hanya thread yang memanggil saja?
Solusi
- Jika fungsi exec() dipanggil setelah fork(),
duplikasi hanya untuk thread yang memanggil
- Program yang dipanggil di exec() akan
menggantikan seluruh proses
- Jika tidak memanggil exec(), duplikasi semua t
thread
Permasalahan Dalam Thread
02 Signal handling
Signals digunakan pada UNIX system untuk memberitahu sebuah proses bahwa
sebuah even terjadi.
• Divide by zero
• Buffer overflow
Signal handler digunakan untuk menangani signal
• Signal dibuat oleh event tertentu
• Signal diberikan ke sebuah process
• Signal ditangani oleh satu dari dua jenis handler : default handler atau user-
defined handler
Masalah : Kemana signal harus diberikan pada proses dengan multi-thread?
• Berikan signal ke satu thread dimana signal tersebut digunakan
• Berikan signal ke setiap thread
• Berikan signal ke beberapa thread
• Tunjuk satu thread untuk menangani semua signal
Permasalahan Dalam Thread
03 Pembatalan thread
• Pemusnahan thread sebelum selesai menjalankan • Pthread code to create and cancel a thread:
tugas
• Thread yang akan dibatalkan disebut target thread
• Dua pendekatan:
- Asynchronous cancellation memusnahkan target
thread segera
- Deferred cancellation membuat target thread untuk
mengecek secara periodik apakah dia harus
mengakhiri eksekusi
• Default type adalah deferred
• Pemusnahan thread bergantung status thread Pemusnahan terjadi hanya ketika thread mencapai
cancellation point
- I.e. pthread_testcancel()
- Then cleanup handler is invoked
• Pada Linux systems, pemusnahan thread ditangani
melalui signals
Permasalahan Dalam Thread
•
04 Thread local storage
Thread-local storage (TLS) membuat setiap thread mempunyai duplikat datanya
sendiri
• Berguna jika programmer tidak bisa mengontrol pembuatan thread (ketika
menggunakan thread pool)