Sesi 1 & 2 – Thread
Tentang Thread:
- Merupakan sebuah state eksekusi
- Disimpan konteks thread ketika tidak berjalan
- Memiliki sebuah tumpukan eksekusi
- Beberapa penyimpanan statis per-thread untuk variabel lokal
- Akses ke memori dan sumber daya dari proses itu sendiri
- Thread memungkinkan beberapa eksekusi berlangsung dalam lingkungan proses yang sama
- Proses ringan, karena thread memiliki beberapa sifat dari proses
- Multithreading, memungkinkan beberapa thread dalam proses yang sama
Model Thread:
Keunggulan dari Thread:
- Memerlukan waktu lebih sedikit untuk membuat thread baru daripada proses
- Memerlukan waktu lebih sedikit untuk mengakhiri thread daripada proses
- Memakan sedikit waktu untuk beralih di antara dua thread
Implementasi Thread:
- User Space
Keuntungan:
- Memungkinkan setiap proses untuk memiliki penjadwalan algoritma sendiri
- Performa
Kerugian:
- Implementasi blocking system call
- Thread lain tidak dapat berjalan sampai thread pertama secara sukarela menyerahkan CPU
- Kernel Space
Keuntungan:
- Tidak membutuhkan non-blocking system call baru
Kerugian:
- Memerlukan biaya yang lebih besar untuk menciptakan dan menghancurkan thread
- Hybrid
Thread Pop Up:
Semua thread di proses yang sama mempunyai:
- Ruang alamat yang sama
- Instruksi proses
- Data terbanyak
- Deskriptor
- Sinyal dan penangan sinyal
- Direktori kerja saat ini
- User ID dan group ID
Setiap thread mempunyai:
- Thread ID
- Set register, stack pointer
- Stack untuk variabel lokal, mengembalikan alamat
- Signal mask
- Prioritas
- Nilai kembali
State thread:
- Spawn
- Block
- Unblock
- Finish
Contoh multithreading pada uniprocessor:
Threading Granularity:
- Coarse threading
- Fine-grained threading
- Hybrid threading
Thread Posix (Portable Operating System Interface):
Pemrograman Thread:
- pthread_self() berfungsi untuk mendapatkan ID
- pthread_join() berfungsi untuk join atau rejoin berbagai aliran kontrol
Sifat-Sifat Pengaturan Atribut Thread:
- Contention Scope
- Stack Size & Stack Address
- Detach State
- Schedule Policy & Schedule Parameter