Thread Materi Pengenalan Thread Pemrograman Multicore Model Multithread
- Slides: 56
Thread
Materi • • Pengenalan Thread Pemrograman Multicore Model Multithread Thread Library Implicit Threading Permasalahan dalam Thread dalam Berbagai Sistem Operasi
Tujuan • Memperkenalkan konsep thread – unit dasar dari penggunaan CPU yang terbentuk dari sistem multithread • Mendiskusikan API untuk library thread Pthreads, Windows, dan Java • Mengeksplor beberapa strategi implicit threading • Membahas masalah pada program multithread
Pengenalan Thread
Thread • Unit dasar dari pemanfaatan CPU • Pada dasarnya satu proses terdiri atas satu thread (single-thread) – Dalam sekali waktu hanya ada satu tugas yang bisa dikerjakan dalam satu proses • Padahal program-program terkini butuh menjalankan beberapa tugas dalam sekali waktu. – Butuh multi-thread dalam satu proses.
Contoh Kebutuhan Multithreading • Web browser – Thread untuk menampilkan halaman web, gambar – Thread untuk mengunduh data dari jaringan • Pengolah kata – Thread untuk menerima dan menampilkan hasil pengetikan – Thread untuk mengecek grammar • Webserver – Thread untuk menangani request dari banyak user
Contoh Multithread pada Webserver
Question Mengapa harus multi-thread? Mengapa tidak pakai multiprocess saja? Apa keuntungan pakai multithread?
Keuntungan Multithread • Responsiveness – Program tetap bisa berjalan walaupun ada sebagian tugas yang memakan waktu lama. – Contoh : Web browser tetap dapat digunakan walaupun sedang ada aktifitas download. • Resource sharing – Multiprocess : Butuh implementasi shared memory atau message passing untuk berbagi data antar-proses. – Multithread : Antar-thread dalam satu proses sudah berbagi data • Economy – Multiprocess : Butuh alokasi banyak memori dan resource untuk membuat proses baru – Multithread : Antar-thread sudah berbagi resource yang dialokasikan untuk sebuah proses • Scalability – Process : Satu processor hanya bisa mengeksekusi satu proses – Thread : Setiap thread dalam satu proses dapat dieksekusi secara paralel oleh processor yang berbeda
Single Thread vs Multi Thread
Multicore Program
Multicore Program • Multicore/Multiprocessor : ada lebih dari satu processor/core processor dalam satu system • Pemrograman multithread memungkinkan pemanfaatan fitur multicore pada suatu system • Contoh sebuah program dengan 4 threads – Single core : • Eksekusi thread dilakukan secara bergantian (concurrent) – Multi Core : • Eksekusi dilakukan secara parallel sesuai jumlah core • Memungkinkan pembagian tugas dalam satu program
Question • Apa perbedaan concurrent dan parrarel?
Concurrency vs. Parallelism • Concurrent execution pada single core – Hanya ada satu thread yang dieksekusi sekali waktu – Thread dieksekusi dengan progress tertentu secara bergantian • Paralleilism pada multi-core – Beberapa thread dieksekusi secara parallel sesuai jumlah core
Tantangan Pemrograman pada Sistem Multi-core • Identifikasi aktifitas – Identifikasi bagian program mana saja yang dapat berjalan terpisah • Keseimbangan – Tugas yang dipisah memiliki beban yang seimbang • Pemisahan data – Bagaimana membagi data antar bagian program yang terpisah? • Ketergantungan data – Bagaimana jika data pada satu tugas bergantung dengan data dari tugas lain? • Testing dan debugging – Bagaimana melakukan testing dan debugging pada bagian program yang terpisah?
Tipe Parralelism • Data parralelism • Task parralelism
Data Parallelism • Distribusi bagian-bagian data ke masing core processor berbeda untuk diolah • Operasi pada masing-masing core sama • Contoh : – Operasi penjumlahan bilangan 1 sampai N – Ada 2 core processor – Penjumlahan data 1 sampai (N/2) di core 1 dan (N/2+1) sampai N di core 2
Task Parallelism • Distribusi tugas (thread) berbeda ke masing core processor yang berbeda • Operasi pada masing-masing core beda • Contoh : – Core 1 menghitung standard deviasi – Core 2 mencari nilai max
Multithreading Model
User Thread vs Kernel Thread • Berdasarkan pengendalinya, thread dibagi : – User thread – Kenel thread • User thread dikendalikan oleh program pada level user tanpa campur tangan kernel • Kernel thread dikendalikan langsung oleh sistem operasi • Ada beberapa model hubungan antara kernel dan user thread
Model Many-to-One • Beberapa user-thread dipetakan ke satu kernelthread • Kelebihan – Tidak ada batasan jumlah user-thread yang bisa dibuat • Kelemahan – Satu thread melakukan blocking (misal I/O), seluruh proses ter-block – Multithread tidak dapat dijalankan secara parallel pada sistem multicore • Contoh – Solaris Green Threads – GNU Portable Threads
Model One-to-One • Satu user-thread dipetakan ke satu kernel-thread • Pembuatan satu user-thread = Pembuatan satu kernel-thread • Kelebihan – Satu thread blocking tidak akan berpengaruh ke thread lain – Multithread dapat dijalankan secara parallel pada sistem multicore • Kelemahan – Jumlah user-thread yang bisa dibuat terbatas • Pembuatan kernel-thread dapat membebani performa • Contoh : Windows, Linux
Model Many-to-Many • Beberapa user-thread dipetakan ke beberapa kernel-thread (multiplexing) • Jumlah kernel-thread yang dibuat bergantung aplikasi dan spesifikasi mesin • Kelebihan : – Satu thread blocking tidak akan berpengaruh ke thread lain – Tidak ada batasan jumlah user-thread
Two Level Model • Mirip M: M, tapi mengijinkan user-level thread dipetakan ke satu kernel thread • Contoh : – – IRIX HP-UX TRU 64 -Unix Solaris 8 ke bawah
Thread Library
Thread Libraries • Application Programming Interface (API) untuk pembuatan dan manajemen thread • Dua jenis implementasi – Library diimplementasi di level user – Library diimplementasi di level kernel. Bisa dipianggil dengan system call
Strategi Implementasi • Asynchronous Threading – Setelah thread induk membuat thread anak, proses induk kembali melanjutkan eksekusi – Thread induk dan thread anak berjalan independen – Proses induk tidak perlu tahu status thread anak • Synchronous Threading – Proses induk menunggu semua thread anak selesai sebelum melanjutkan eksekusi (fork-join) – Setelah thread anak selesai, join ke thread induk
Pthreads • Tersedia untuk user-level dan kernel-level thread • Spesifikasi, bukan implementation • API menspesifikasi behaviour, untuk implementasi tergantung developer • Banyak digunakan pada OS berbasis UNIX seperti Solaris, Linux, Mac OS X
Contoh Pthreads
Contoh Pthreads (Cont. )
Pthreads Code for Joining 10 Threads (fork-join strategy)
Windows Multithreaded C Program
Java Threads • Java threads diatur oleh JVM • Implementasi menggunakan model thread yang disediakan oleh OS • Java threads dapat dibuat dengan: – Extends Thread class dan override method run() – Implement Runnable interface
Java Multithreaded Program : implement Runnable
Java Multithreaded Program (2)
Java Thread : Important Notes • Tidak ada konsep global variabel • Proses berbagi data dilakukan dengan passing reference ke object – Contoh : panggil method get. Sum() dan set. Sum() • Implementasi fork-join strategy dilakukan dengan memanggil method join()
Question • Apa perbedaan implementasi thread di Java dengan implements Runnable dan extend Thread class?
Implicit Threading
Implicit Threading • Dalam perkembangannya, sebuah aplikasi dapat mempunyai ratusan hingga ribuan thread – Contoh : multithread pada webserver • Masalah : – Identifikasi, pemisahan data, ketergantungan data – Ketepatan hasil program • Solusi Implicit threading : pembuatan dan manajemen thread dilakukan oleh compiler dan run-time library, bukan programmer
Metode Implicit Threading • Thread Pools • Open. MP • Grand Central Dispatch
Thread Pools • Latar Belakang – Ada ratusan/ribuan thread yang harus dibuat pada satu aplikasi. Contoh : webserver – Pembuatan thread memakan waktu dan resource • Solusi Thread Pools – Buat beberapa thread di awal process dan tempatkan dalam penampung (pool) – Ketika sebuah tugas akan dieksekusi, gunakan thread-thread yang sudah tersedia dalam pool • Kelebihan – Lebih cepat daripada membuat thread baru setiap kali ada tugas – Thread pool dapat membatasi jumlah threa yang dibuat sekali waktu – Ada pemisahan bagian antara tugas yang akan dikerjakan dengan pembuatan thread • Sebuah tugas dapat dilakukan secara berulang
Open. MP • • • API untuk C, C++, FORTRAN Menyediakan dukungan untuk pemrograman parallel pada lingkungan shared-memory Programmer dapat menentukan Parallel regions – bagian code yang berjalan secara parallel #pragma omp parallel Create as many threads as there are cores #pragma omp parallel for(i=0; i<N; i++) { c[i] = a[i] + b[i]; } Run for loop in parallel
Grand Central Dispatch • Tekologi Apple untuk Mac OS X dan i. OS • Programmer dapat menentukan bagian code yang berjalan secara parallel • Detail pengaturan threading sudah diatur oleh GCD • Code ditaruh di “^{ }” ˆ{ printf("I am a block"); } • Bagian block ditempatkan dalam dispatch queue – Block dijalankan oleh thread yang tersedia di thread pool – Block dihapus dari dispatch queue
Permasalahan dalam Thread
Permasalahan dalam Thread • • • System call fork() dan exec() Signal handling Pembatalan thread Thread local storage Schedulers activation
System call fork() dan exec() • Permasalahan – Jika fungsi fork() dipanggil oleh salah satu thread, apakah semua thread diduplikasi atau hanya thread yang memanggil saja? • Solusi – Jika fungsi exec() dipanggil setelah fork(), duplikasi hanya untuk thread yang memanggil • Program yang dipanggil di exec() akan menggantikan seluruh proses – Jika tidak memanggil exec(), duplikasi semua thread
Signal Handling • Signals digunakan pada UNIX system untuk memberitahu sebuah proses bahwa sebuah even terjadi. – – • Divide by zero Buffer overflow Signal handler digunakan untuk menangani signal l Signal dibuat oleh event tertentu Signal diberikan ke sebuah process Signal ditangani oleh satu dari dua jenis handler : default handler atau user-defined handler • Masalah : Kemana signal harus diberikan pada proses dengan multi-thread? – – Berikan signal ke satu thread dimana signal tersebut digunakan Berikan signal ke setiap thread Berikan signal ke beberapa thread Tunjuk satu thread untuk menangani semua signal
Thread Cancellation • Pemusnahan thread sebelum selesai menjalankan tugas • Thread yang akan dibatalkan disebut target thread • Dua pendekatan: – Asynchronous cancellation memusnahkan target thread segera – Deferred cancellation membuat target thread untuk mengecek secara periodik apakah dia harus mengakhiri eksekusi • Pthread code to create and cancel a thread:
Thread Cancellation (Cont. ) • Pemusnahan thread bergantung status thread • Default type adalah deferred – Pemusnahan terjadi hanya ketika thread mencapai cancellation point • I. e. pthread_testcancel() • Then cleanup handler is invoked • Pada Linux systems, pemusnahan thread ditangani melalui signals
Scheduler Activations • M: M dan two-level model butuh komunikasi untuk menjaga alokasi jumlah kernel thread dari sebuah aplikasi • Biasanya menggunakan perantara data structure antara user dan kernel threads – lightweight process (LWP) – Terlihat sebagai virtual processor yang dapat menjadwalkan user-thread mana yang berjalan – Setiap LWP ditempelkan ke kernel thread – Berapa jumlah LWP yang harus dibuat? • Scheduler activations menyediakan upcalls Sebuah mekanisme komunikasi dari kernel ke upcall handler dalam library thread. • Komunikasi ini membuat aplikasi dapat menjaga jumlah kernel thread yang dibuat
Thread-Local Storage • Thread-local storage (TLS) membuat setiap thread mempunyai duplikat datanya sendiri • Berguna jika programmer tidak bisa mengontrol pembuatan thread (ketika menggunakan thread pool) • Beda dengan local variable – Lingkup local variabel hanya dalam satu fungsi – Lingkup TLS meliputi berbagai fungsi • Mirip static data – TLS unik untuk setiap thread
Thread dalam Berbagai Sistem Operasi
Windows Threads • Thread di Windows dapat dibuat/diatur dengan Windows API • Menerapkan one-to-one mapping, kernel-level • Setiap thread mengandung – – Thread id Register set merepresentaskan status prosesor Memisahkan user dan kernel stack ketika thread berjalan di user mode atau kernel mode Private data storage area yag digunakan oleh run-time libraries and dynamic link libraries (DLLs) • Register set, stacks, dan private storage area disebut sebagai context thread • Struktur data sebuah thread meliputi: – – – ETHREAD (executive thread block) – pointer ke proses induk dari sebuah thread dan ke KTHREAD, dalam kernel space KTHREAD (kernel thread block) – informasi penjadwalan dan sinkronisasi, kernel-mode stack, pointer ke TEB, dalam kernel space TEB (thread environment block) – thread id, user-mode stack, thread-local storage, di user space
Windows Threads Data Structures
Linux Threads • Linux menggunakan terminologi tasks daripada threads • Pembuatan thread melalui system call clone() • clone()mengijinkan thread anak untuk berbagi data dengan proses induk – Flags control behavior • struct task_struct menunjuk ke process data structures (shared or unique)
Terima Kasih
- Sebutkan perbedaan antara thread tunggal dan multithread ?
- Multi thread chain stitch
- Contoh pemrograman konvensional
- Apakah maksud visual pada kata pemrograman visual?
- Pemrograman konvensional adalah
- Contoh bahasa pemrograman konvensional
- Konsep pengenalan diri
- Ruang lingkup riset operasi
- Scopes programming language
- Speedy transactions in multicore in-memory databases
- Multicore packet scheduler
- Multiprocessor and multicore
- Multiprocessor programming
- And eat
- Cache craftiness for fast multicore key-value storage
- Pcie-1429
- Obs multicore
- Asymmetric multicore processing
- Sae international
- Metode dualitas riset operasi
- Analisis sensitivitas program linear
- Sensitivitas pada model pemrograman linear
- Threads performance management
- Two level model thread
- The kernel is unaware of user threads
- Materi model indeks tunggal
- Contoh pengenalan topik
- Fungsi tangki air
- Sejarah tingkatan 1 bab 1
- Pengasas pergerakan pengakap di malaysia
- Konsep psikologi pendidikan
- Modifikasi dari model seleksi awal broadbent
- Contoh pengenalan masalah
- Jenis kad pengenalan perkeso
- Dinaa alza kutuk ppim
- Pengenalan perkakasan komputer
- Pengenalan perangkat keras komputer
- Struktur organisasi pendidikan di malaysia
- Pengenalan ms excel
- Garisan lukisan kejuruteraan
- Pengenalan komputasi
- Pengenalan kepada pengurusan
- Contoh pengenalan organisasi
- Pengenalan kepada komputer
- Kesimpulan teknologi maklumat dan komunikasi
- Teknik pemadam kebakaran
- Pantun bersatu hati
- Andaian batasan dan prinsip perakaunan
- Pengenalan microsoft word
- Resepi kuih muih brunei
- Buku pengurusan pusat sumber sekolah
- Maksud konflik dalam organisasi
- Jenis jenis instrumen dalam praktik kebidanan
- Dimanakah lokasi pembentukan kerajaan melano
- Sistem perundangan malaysia
- Pengenalan server
- Spss tutorial ppt