Back to IF2130 Sistem Operasi
Pengantar Threads dan Model Multithreading
Questions/Cues
Apa itu Thread?
Beda Proses vs Thread?
Apa saja komponen yang di-share vs tidak di-share oleh thread?
Apa keuntungan multithreading?
Beda Konkurensi vs Paralelisme?
Beda User Threads vs Kernel Threads?
Apa itu model Many-to-One?
Apa itu model One-to-One?
Apa itu model Many-to-Many?
Reference Points
PDF: 3. IF2130-04-2025-Threads.pdf
Slides: 3-23
Apa itu Thread?
Thread adalah unit dasar dari utilisasi CPU. Ia adalah sebuah alur eksekusi (flow of control) di dalam sebuah proses. Sebuah proses tradisional hanya memiliki satu thread, sedangkan proses modern bisa memiliki beberapa thread yang berjalan secara bersamaan. Thread sering disebut sebagai lightweight process.
Proses vs. Thread
Proses adalah unit kepemilikan sumber daya dan proteksi. Ia memiliki ruang alamat, file, dan sumber daya lainnya.
Thread adalah unit untuk penjadwalan. Semua thread di dalam satu proses berbagi sumber daya yang sama.
Komponen yang di-share oleh thread dalam satu proses:
Code Section
Data Section
Heap
Daftar file yang dibuka
Komponen yang unik untuk setiap thread:
Thread ID
Program Counter (PC)
Register Set
Stack
Keuntungan Multithreading
Responsiveness: Memungkinkan aplikasi tetap responsif (misalnya, UI tidak macet) saat melakukan tugas yang panjang di latar belakang.
Berbagi Sumber Daya: Thread berbagi memori dan sumber daya secara default, membuatnya lebih efisien daripada IPC antar proses.
Ekonomis: Membuat thread jauh lebih “murah” (lebih cepat dan butuh lebih sedikit memori) daripada membuat proses baru. Context switch antar thread juga lebih cepat.
Skalabilitas: Memungkinkan pemanfaatan arsitektur multicore secara penuh dengan menjalankan thread secara paralel di core yang berbeda.
Konkurensi vs. Paralelisme
Konkurensi (Concurrency): Sistem mendukung lebih dari satu tugas dengan mengizinkan semua tugas untuk membuat kemajuan. Pada sistem single-core, ini dicapai dengan context switching yang cepat (ilusi berjalan bersamaan).
Paralelisme (Parallelism): Sistem dapat melakukan lebih dari satu tugas secara harfiah pada saat yang bersamaan. Ini memerlukan perangkat keras multi-core atau multi-processor.
User Threads vs. Kernel Threads
User Threads: Dikelola sepenuhnya di user space oleh thread library (seperti Pthreads, Java Threads) tanpa dukungan langsung dari kernel. Cepat dibuat dan dikelola.
Kernel Threads: Dikelola langsung oleh sistem operasi. Kernel mengetahui keberadaan setiap thread dan menjadwalkannya secara individual.
Model Multithreading
Model ini menggambarkan bagaimana user threads dipetakan ke kernel threads.
Many-to-One
- Banyak user threads dipetakan ke satu kernel thread.
- Kelemahan: Jika satu user thread melakukan blocking system call, seluruh proses akan berhenti. Tidak bisa memanfaatkan multicore.
- Contoh: Solaris Green Threads.
One-to-One
Setiap user thread dipetakan ke satu kernel thread.
Keuntungan: Mengatasi masalah blocking dan memungkinkan paralelisme sejati.
Kelemahan: Membuat user thread menjadi operasi yang “mahal” karena harus membuat kernel thread juga. Bisa ada batasan jumlah thread.
Contoh: Windows, Linux, Solaris 9+.
Many-to-Many
- Memetakan banyak user threads ke sejumlah kernel threads yang lebih kecil atau sama.
- Keuntungan: Fleksibel. Menggabungkan keuntungan dari dua model sebelumnya.
- Kelemahan: Implementasi yang kompleks.
Thread adalah unit eksekusi ringan di dalam sebuah proses, di mana semua thread dalam satu proses berbagi kode, data, dan sumber daya tetapi memiliki stack dan registernya sendiri. Multithreading memberikan keuntungan responsivitas dan skalabilitas, memungkinkan konkurensi pada single-core dan paralelisme sejati pada multi-core. Hubungan antara user threads (dikelola oleh library) dan kernel threads (dikelola oleh OS) didefinisikan oleh model pemetaan: Many-to-One (efisien tapi terbatas), One-to-One (paralel tapi mahal), dan Many-to-Many (fleksibel tapi kompleks).