- Tinjauan
- Model Multi-alur (Multithreading Models)
- Persoalan Alur Data
- Contoh Sistem Operasi
- Alur Data Windows XP
- Alur Data Linux
- Untuk memperkenalkan gagasan dari thread-mendasar unit CPU pemanfaatan yang membentuk dasar dari sistem komputer multithreaded
- Untuk mendiskusikan API untuk Pthreads, Win32, dan Java thread perpustakaan
- Untuk menguji persoalan yang berhubungan dengan pemrograman multithreading




Manfaat
- Responsif
- Pembagian Sumberdaya
- Ekonomis
- Skalabilitas
- Sistem Multicore menitikberatkan pada progammer,tantangan-tantangannya sebagai berikut:
- Pembagian aktivitas
- Keseimbangan
- Pemisahan Data
- Ketergantungan Data
- Pengetesan dan Debugging

Eksekusi yang bersamaan pada Sistem Single-core

Eksekusi secara Paralel pada Sistem Multi-core

Alur Pengguna
- Manajemen Alur dilakukan oleh user-level thread library
- Tiga hal utama thread library:
- POSIX Pthreads
- Win32 threads
- Java threads
- Didukung oleh Kernel
- Contoh
- Windows XP/2000
- Solaris
- Linux
- Tru64 UNIX
- Mac OS X
- Banyak ke Satu
- Satu ke Satu
- Banyak ke Banyak
- Banyak user-level thread dialamatkan ke single kernel thread
- Contoh
- Solaris Green Threads
- GNU Portable Threads

Satu ke Satu
- Tiap-tiap user-level thread dialamatkan ke satu kernel thread
- Contoh
- Windows NT/XP/2000
- Linux
- Solaris 9 dan versi yang lebih tinggi

Model Banyak ke Banyak
- Mengijinkan banyak user-level thread untuk dapat dialamatkan ke banyak kernel thread
- Mengijinkan sistem operasi menciptakan sejumlah kernel thread yang mencukupi
- Solaris prior sampai versi 9
- Windows NT/2000 dengan paket ThreadFiber

Model Dua Tingkat
- Sama dengan M:M, kecuali bahwa model ini mengijinkan seorang user thread dapat meloncat ke kernel thread
- Contoh
- IRIX
- HP-UX
- Tru64 UNIX
- Solaris 8 dan versi sebelumnya

Thread Libraries
- Thread Library menyediakan progammer dengan API untuk menciptakan dan mengatur thread
- Dua cara utama dalam implementasinya
- Library secara keseluruhan berada di dalam ruang user
- Library Kernel-Level didukung oleh Sistem Operasi
- Dapat diberikan sebagai salah satu user-level atau kernel level
- Standar POSIX(IEEE 1003.1c) API untuk penciptaan thread dan sinkronisasi
- Tingkah laku API yang spesifik pada thread library, implementasi sampai pengembangan library
- Biasanya pada sistem operasi UNIX (Solaris, Linux, Mac OS X)
- Java Thread di manage oleh JVM
- Umumnya di implementasikan menggunakan model thread yang disediakan oleh SO pokok
- Java Thread mungkin tercipta oleh :
- Perluasan Thread class
- Implementasi interface yang dapat dijalankan
- Berkenaan dengan fork() dan exec() system calls
- Pembatalan thread pada target thread
- Pemutusan sinkronisasi atau tertunda
- Penanganan sinyal
- Kelompok thread
- Data spesifik thread
- Penjadwal aktivasi
- Menghentikan thread sebelum thread itu selesai
- Dua pendekatan umum:
- Pembatalan pemutusan sinkronisasi menghentikan target thread secara tiba-tiba
- Pembatalan penundaan mengijinkan target thread secara periode mengecek jika itu harus dibatalkan
- Sinyal yang digunakan pada sistem UNIX untuk memberitahukan sebuah proses bahwa event tertentu telah terjadi
- Pengambil alih Sinyal digunakan untuk memproses sinyal-sinyal
- Sinyal digenerasi oleh event tertentu
- Sinyal disediakan oleh sebuah proses
- Sinyal ditangani
- Pilihan:
- Menyediakan sinyal ke thread untuk menerapkan sinyal yang mana
- Menyediakan sinyal ke setiap thread di dalam proses
- Menyediakan sinyal ke thread tertentu di dalam proses
- Menugaskan sebuah thread yang spesifik untuk menerima semua sinyal untuk proses
- Menciptakan sejumlah thread ke dalam sebuah kelompok dimana mereka menunggu bekerja
- Keuntungan
- Biasanya sedikit lebih cepat melayani permohonan terhadap thread yang ada daripada menciptakan thread baru
- Mengijinkan sejumlah thread di dalam aplikasi untuk dapat meloncat ke sejumlah ukuran kelompok
- Mengijinkan tiap-tiap thread memiliki salinan data
- Berguna ketika anda tidak memiliki kendali terhadap proses penciptaan thread(contoh:ketika penggunaan kelompok thread)
- Model M:M dan Dua Tingkat membutuhkan komunikasi dan pemeliharaan sesuai sejumlah thread kernel yang teralokasi untuk aplikasi
- Penjadwal aktivasi menyediakan upcalls sebuah mekanisme komunikasi dari kernel ke thread library
- Komunikasi ini mengijinkan sebuah aplikasi untuk memelihara dan mengkoreksi sejumlah kernel thread
- Implementasi pengalamatan Satu ke Satu, Kernel level
- Tiap-tiap thread berisi:
- thread ID
- register set
- memisahkan tumpukan user dan kernel
- Area penyimpan data pribadi
- Register set, tumpukan(stack), dan penyimpan data pribadi dikenal sebagai konteks dari thread
- Struktur data utama dari thread , diantaranya:
- ETHREAD (executive thread block)
- KTHREAD (kernel thread block)
- TEB (thread environment block)

Thread Linux