Kamis, 02 April 2009

Threads

Threads

Tinjauan
  • Overview

  • Multithreading Models

  • Thread Libraries

  • Threading Issues

  • Operating System Examples

  • Windows XP Threads

  • Linux Threads

Tujuan
  • 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

  • - Respon

  • - Berbagi sumber daya

  • - Ekonomi

  • - Skalabilitas

Multicore Programming

Multicore sistem yang mendesak para programmer, kegiatannya meliputi:

  • Pembagian aktivitas

  • Penyesuaian

  • Pemisahan data

  • Ketergantungan data

  • Uji dan debugging

Pengguna Threads

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

  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.

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