Tinjauan
Overview
Multithreading Models
Thread Libraries
Threading Issues
Operating System Examples
Windows XP Threads
Linux Threads
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.
- Respon
- Berbagi sumber daya
- Ekonomi
- Skalabilitas
Multicore sistem yang mendesak para programmer, kegiatannya meliputi:
Pembagian aktivitas
Penyesuaian
Pemisahan data
Ketergantungan data
Uji dan debugging
Thread manajemen yang dilaksanakan oleh user-level thread library
Tiga thread library utama:
POSIX Pthreads
Win32 thread
Java Threads4.11 S
Kernel Threads
Didukung oleh 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
Model Banyak ke Satu
Satu ke Satu
Masing-Masing user-level thread memetakan ke kernel thread
Contoh:
-
Windows NT/XP/2000
Linux
Solaris 9 and later
Model Satu ke Satu
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.
Model Banyak ke Banyak
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
Isyarat dihasilkan oleh peristiwa tertentu
Isyarat dikirimkan untuk suatu proses
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.
Contoh Operasi Sistem
Windows XP Thread
Komunikasi ini mengijinkan suatu aplikasi untuk memelihara nomor yang benar dari kernel 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