Thread.

Slides:



Advertisements
Presentasi serupa
Oleh: Muhammad Syauqil Ilmi ( ) Muzakki (09650) Fathiyyatur Rahmah ( )
Advertisements

+ Administrasi Sistem Teknik Informatika Universitas Bunda Mulia Jakarta Indra Priyandono.
By : Kelompok 3 Muhamad Shofri Maulidani ( ) Agung Satrio Buwono ( ) Devi Shinta Rahayu ( ) THREAD.
Sistem Terdistribusi 05 – Proses Oleh : Muh. Ary Azali.
KONSEP PROSES Minggu ke 5.
KONSEP THREAD.
Proses Ali akbar. KONSEP PROSES Proses adalah program yang sedang dieksekusi. Eksekusi proses dilakukan secara berurutan. Dalam suatu proses terdapat.
Versi 1, 2013CCS113 – SISTEM OPERASIFASILKOM PERTEMUAN 5 PROSES DAN THREAD 1.
Oleh: Ali Ridho Barakbah
Manajemen Proses.
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Pertemuan 03- Konsep Proses
Algoritma & Pemrograman 1
Slide 8 – Thread, SMP, dan Microkernel Setio Basuki Jurusan Teknik Informatika – Universitas Muhammadiyah Malang ~ Versi 1.0.
Versi 1, 2013CCS113 – SISTEM OPERASIFASILKOM PERTEMUAN 6 PROSES DAN THREAD 2.
Pertemuan 3 Manajemen Proses.
PROCESS DAN THREADS Pengertian : Program Proses MonoProgramming
Tim Teaching Grant Mata Kuliah Sistem Operasi
Struktur Sistem Operasi PART 2.
Operating System Copyright © Mufadhol 1 SISTEM OPERASI Management Process Oleh : Mufadhol, S.Kom.
Sistem Operasi Merupakan software yang berfungsi melakukan operasi yang mengurusi tantang segala aktifitas komputer / suatu program yag bertindak sebagai.
PROSES & THREAD -.
KONSEP THREAD.
MANAJEMEN PROSES PART 2 Dosen : Ahmad Apandi, ST
PROCESS DAN THREADS PROCESS Multiprogramming Pseudoparallelism
PENJADWALAN PROSES.
Thread.
Pengantar & Dasar Pemrograman Java Oleh :Yeka Hendriyani, M.kom
1 Pertemuan 10 PEMROGRAMAN MULTITHREADING Matakuliah: M0074/PROGRAMMING II Tahun: 2005 Versi: 1/0.
Thread. Thread Proses dengan thread tunggal – proses menjalankan satu tugas pada satu waktu Proses dengan thread tunggal – proses menjalankan satu tugas.
MATAKULIAH SISTEM OPERASI – PENDIDIKAN TEKNIK INFORMATIKA 2008
PROSES & THREADS Disajikan Oleh :.
Proses Sistem Terdistribusi.
Konsep Proses.
Paralel Processing Sistem Terdistribusi.
Algoritma & Pemrograman 1
Sistem Terdistribusi.
Sistem Operasi 4 “Threads”.
Pengenalan Java.
Thread.
4 PROSES Mata Kuliah Sistem Operasi Mata Kuliah : Sistem Operasi
Process and Tread Saifudin Anshory Abd. Chariz Fauzan Wahyu Hartono
BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER Oleh : Laseri, S.Kom.
THREAD.
Struktur Sistem Komputer
JAva Threads.
SISTEM OPERASI - CHAPTER 2 PROCESS
Sistem Operasi.
Oleh : Rahmat Robi Waliyansyah, M.Kom.
Tim Teaching Grant Mata Kuliah Sistem Operasi
Sistem Operasi.
Hendy Mizuardy SISTEM OPERASI. MANAJEMEN PROSES Konsep Proses Definisi Proses Status Proses Process Control Block (PCB) Konsep Penjadwalan Queue Scheduling.
PRESENTASI KELOMPOK II
Slide 8 – Thread, SMP, dan Microkernel
Sistem Operasi.
Pengenalan Java.
Oleh : Rahmat Robi Waliyansyah, M.Kom.
Pengenalan Java.
Thread Kelompok 4 NAMA : SRI YANTI MONICA ( )
Struktur Sistem Komputer
Pengenalan Java.
PARALEL PROCESSING.
Oleh : Laseri, S.Kom BAB I                       Mata Kuliah  Sistem Terdistribusi _______________________ PROSES SISTER.
Tim Teaching Grant Mata Kuliah Sistem Operasi
5 Thread.
KONSEP PROSES Minggu ke 5.
Tim Teaching Grant Mata Kuliah Sistem Operasi
Multithreading Matakuliah : T0984 / Algoritma dan Metode Object Oriented Programming II Pertemuan : 12 Tahun : 2008 Versi : 1/0.
Tim Teaching Grant Mata Kuliah Sistem Operasi
Fathiah, S.T.,M.Eng Universitas Ubudiyah Indonesia
Transcript presentasi:

Thread

Materi Pengenalan Thread Pemrograman Multicore Model Multithread Thread Library Implicit Threading Permasalahan dalam Thread 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-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-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 kernel-thread 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 Contoh : Windows, Linux 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 TRU64-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 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 getSum() dan setSum() 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 OpenMP Grand Central Dispatch

Thread Pools Latar Belakang Solusi Thread Pools Kelebihan 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

OpenMP 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 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 iOS 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 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