* Overview
* Multithreading Models
* Thread Libraries
* Threading Issues
* Operating System Examples
* Windows XP Threads
* Linux Threads
Objek
* Untuk memperkenalkan suatu thread, suatu satuan dasar pemanfaatan CPU yang membentuk basis dari sistem komputer multithreaded.
* Untuk mendiskusikan APIS untuk Pthreads, Win32, dan Java thread libraries.
* Untuk menguji isu yang berhubungan dengan multithreaded program.
Manfaat
* Responsiveness
* Berbagi sumber daya
* Ekonomi
* Scalability
Multicore Programming
* Multicore sistem yang mendesak para programmer, meliputi tantangan :
– Pembagian aktivitas
– Penyesuaian
– Pemisahan data
– Ketergantungan data
– Uji dan debugging
User Threads
* Thread manajemen yang dilaksanakan oleh user-level thread library
* Tiga thread library utama:
– POSIX Pthreads
– Win32 thread
– Java Threads4.11 S
Kernel Threads
* Dukungan dari Kernel
* Contoh
– Windows XP/2000
– Solaris
– Linux
– Tru64 UNIX
– Mac OS X
Multithreading Models
* Banyak ke Satu
* Satu ke Satu
* Banyak ke Banyak.
Banyak ke Satu
* Banyak user-level thread yang dipetakan ke kernel thread
* Contoh:
– Solaris Green Threads
– GNU Portable Threads
Banyak ke Banyak
* Membolehkan banyak tingkatan pemakai thread untuk dipetakan ke banyak kernel thread.
* Membolehkan sistem operasi untuk menciptakan suatu jumlah cukup kernel thread.
* Solaris sebelum versi 9.
* Windows NT/2000 dengan Threadfiber paket.
Two-level Model
* Serupa dengan Banyak ke Banyak, jika tidak mengijinkan seorang pemakai thread untuk menjadi yang terikat harus kernel thread.
* Contoh:
– IRIX
– HP-UX
– Tru64 UNIX
– Solaris 8 and earlier
Thread Libraries
* Thread library menyediakan programmer dengan API untuk menciptakan dan memanage thread
* Dua cara utama dalam menerapkan
– Library seluruhnya di dalam user space
– Kernel-Level library yang didukung oleh OS
Pthreads
* Mungkin disediakan baik sebagai user-level atau kernel-level
* Suatu POSIX standard ( IEEE 1003.1c) API untuk ciptaan thread dan sinkronisasi
* API menetapkan perilaku meliputi thread library, implementasi sampai kepada pengembangan library
* Umum di dalam sistem operasi UNIX ( Solaris, Linux, Mac OS X)
Java Threads
* Java Threads diatur oleh JVM
* secara khas Diterapkan menggunakan model Thread yang disajikan oleh dasar OS
* Java Threads mungkin dibuat oleh:
– Memperpanjang thread Kelas
– Perapkan alat penghubung Yang Runnable
Threading Issues
* Ilmu semantik garpu() dan exec() sistem [panggil/hubungi]
* Susupkan pembatalan thread target
– Ditunda atau Tak serempak
* Isyarat [yang] menangani
* thread Kolam
* Data Thread-specific
* Scheduler pengaktifan
Thread Pembatalan
* Pengakhiran suatu Thread sebelum selesai
* Dua pendekatan umum:
– Pembatalan tak serempak dengan mengakhiri target dengan seketika
– Pembatalan yang ditunda, mengijinkan target untuk menyusup pada waktu tertentu untuk memeriksa jika harus ditunda.
Penanganan Isyarat
* Isyarat digunakan dalam sistem UNIX untuk memberitahu suatu proses tertentu yang telah terjadi
* Suatu Penanganan Isyarat digunakan untuk memproses isyarat
1. Isyarat dihasilkan oleh peristiwa tertentu
2. Isyarat dikirimkan untuk suatu proses
3. Isyarat ditangani
* Pilihan:
– Isyarat kepada thread untuk mana isyarat [menerapkan/berlaku]
– Isyarat [bagi/kepada] tiap-tiap thread di (dalam) proses
– Isyarat ke thread tertentu di (dalam) proses
– Nugaskan suatu threa spesifik untuk menerima semua isyarat untuk proses
Thread Pools
* Membuat sejumlah thread di suatu kolam untuk mereka menunggu pekerjaan
* Keuntungan:
– Pada umumnya sedikit lebih cepat untuk melayani suatu permintaan dengan suatu thread yang sudah ada dibanding menciptakan suatu thread baru.
– Mengijinkan banyak thread di dalam aplikasi untuk menjadi yang trikat harus ukuran dari tempatnya.
Thread data Spesifik
* Mengijinkan masing-masing thread untuk mempunyai salinan sendiri data
* Bermanfaat Ketika kamu tidak mempunyai kendali atas thread proses
Scheduler Pengaktifan
* Kedua-Duanya, Banyak ke Banyak dan Two-Level model memerlukan komunikasi untuk memelihara, sesuai jumlah thread inti untuk mengalokasikan kepada aplikasi.
* Scheduler pengaktifan menyediakan upcalls- suatu mekanisme komunikasi dari inti kepada thread library.
* Komunikasi ini mengijinkan suatu aplikasi untuk memelihara nomor yang benar dari kernel thread.
Contoh Operasi Sistem
Windows XP Thread
* Implementasi pemetaan satu ke satu, kernel-level
* Masing-Masing thread berisi
– Sebuah Thread id
– Register Set
– Pemisah pengguna dan Susunan kernel
– Area penyimpanan data pribadi
* Register Set, Susunan, dan kawasan Area penyimpanan data pribadi yang dikenal adalah konteks dari thread
* Struktur data primer merupakan suatu thread termasuk:
– ETHREAD ( blok thread eksekutif)
– KTHREAD ( blok thread inti)
– TEB ( menyusupkan blok lingkungan)
Linux Thread
* Linux mengacu sebagai task bukan thread
* Thread diciptakan sudah melalui clone() system call
* Clone() mengijinkan turunan tugas untuk berbagi ruang alamat dari tugas induk