Thursday, April 2, 2009

Alur (Threads)

  • Tinjauan
  • Model Multi-alur (Multithreading Models)
  • Persoalan Alur Data
  • Contoh Sistem Operasi
  • Alur Data Windows XP
  • Alur Data Linux
Sasaran
  • 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
Proses Single dan Multithreading



Manfaat
  • Responsif
  • Pembagian Sumberdaya
  • Ekonomis
  • Skalabilitas
Pemrograman Multicore
  • Sistem Multicore menitikberatkan pada progammer,tantangan-tantangannya sebagai berikut:
  1. Pembagian aktivitas
  2. Keseimbangan
  3. Pemisahan Data
  4. Ketergantungan Data
  5. Pengetesan dan Debugging
Arsitektur Server Multithread


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:
  1. POSIX Pthreads
  2. Win32 threads
  3. Java threads
Alur Kernel
  • Didukung oleh Kernel
  • Contoh
  1. Windows XP/2000
  2. Solaris
  3. Linux
  4. Tru64 UNIX
  5. Mac OS X
Model Multi-threading
  • Banyak ke Satu
  • Satu ke Satu
  • Banyak ke Banyak
Banyak ke Satu
  • Banyak user-level thread dialamatkan ke single kernel thread
  • Contoh
  1. Solaris Green Threads
  2. GNU Portable Threads
Model Banyak ke Satu


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


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
  1. IRIX
  2. HP-UX
  3. Tru64 UNIX
  4. Solaris 8 dan versi sebelumnya

Thread Libraries
  • Thread Library menyediakan progammer dengan API untuk menciptakan dan mengatur thread
  • Dua cara utama dalam implementasinya
  1. Library secara keseluruhan berada di dalam ruang user
  2. Library Kernel-Level didukung oleh Sistem Operasi
Pthreads
  • 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 Threads
  • Java Thread di manage oleh JVM
  • Umumnya di implementasikan menggunakan model thread yang disediakan oleh SO pokok
  • Java Thread mungkin tercipta oleh :
  1. Perluasan Thread class
  2. Implementasi interface yang dapat dijalankan
Persoalan Threading
  • 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
Pembatalan Thread
  • Menghentikan thread sebelum thread itu selesai
  • Dua pendekatan umum:
  1. Pembatalan pemutusan sinkronisasi menghentikan target thread secara tiba-tiba
  2. Pembatalan penundaan mengijinkan target thread secara periode mengecek jika itu harus dibatalkan
Penanganan Sinyal
  • Sinyal yang digunakan pada sistem UNIX untuk memberitahukan sebuah proses bahwa event tertentu telah terjadi
  • Pengambil alih Sinyal digunakan untuk memproses sinyal-sinyal
  1. Sinyal digenerasi oleh event tertentu
  2. Sinyal disediakan oleh sebuah proses
  3. Sinyal ditangani
  • Pilihan:
  1. Menyediakan sinyal ke thread untuk menerapkan sinyal yang mana
  2. Menyediakan sinyal ke setiap thread di dalam proses
  3. Menyediakan sinyal ke thread tertentu di dalam proses
  4. Menugaskan sebuah thread yang spesifik untuk menerima semua sinyal untuk proses
Kelompok Thread
  • Menciptakan sejumlah thread ke dalam sebuah kelompok dimana mereka menunggu bekerja
  • Keuntungan
  1. Biasanya sedikit lebih cepat melayani permohonan terhadap thread yang ada daripada menciptakan thread baru
  2. Mengijinkan sejumlah thread di dalam aplikasi untuk dapat meloncat ke sejumlah ukuran kelompok
Thread Data Spesifik
  • Mengijinkan tiap-tiap thread memiliki salinan data
  • Berguna ketika anda tidak memiliki kendali terhadap proses penciptaan thread(contoh:ketika penggunaan kelompok thread)
Penjadwal Aktivasi
  • 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
Thread Windows XP
  • Implementasi pengalamatan Satu ke Satu, Kernel level
  • Tiap-tiap thread berisi:
  1. thread ID
  2. register set
  3. memisahkan tumpukan user dan kernel
  4. Area penyimpan data pribadi
  • Register set, tumpukan(stack), dan penyimpan data pribadi dikenal sebagai konteks dari thread
  • Struktur data utama dari thread , diantaranya:
  1. ETHREAD (executive thread block)
  2. KTHREAD (kernel thread block)
  3. TEB (thread environment block)

Thread Linux
  • Linux memberikan istilah thread sebagai tugas daripada diartikan thread
  • Penciptaan thread dilakukan melalui system call clone()
  • clone() mengijinkan sub tugas untuk membagi ruang alamat pada induk tugas (proses)