P. 1
04 Konsep Thread

04 Konsep Thread

|Views: 89|Likes:
Published by Nia Arrohman

More info:

Published by: Nia Arrohman on May 14, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/14/2011

pdf

text

original

Bab 11.

Konsep Thread
11.1. Pendahuluan
Pada bab sebelumnya kita telah mempelajari tentang proses, namun seiring berjalannya waktu dan tuntutan teknologi ternyata ditemukan kelemahan yang sebenarnya bisa diminimalisir pada proses. Untuk itulah diciptakan thread yang merupakan cara dari komputer untuk menjalankan dua atau lebih task dalam waktu bersamaan, sedangkan multithreading adalah cara komputer untuk membagi-bagi pekerjaan yang dikerjakan sebagian-sebagian dengan cepat sehingga menimbulkan efek seperti menjalankan beberapa task secara bersamaan walaupun otaknya hanya satu. Di sini kita akan belajar mengapa harus ada thread, perbedaan thread dengan proses, keuntungan dan kerugian pengimplementasian thread, model-model multithreading, pengimplementasian pustaka thread, pembatalan thread, thread pools, penjadwalan thread dan thread di Linux.

11.2. Keuntungan dan Kerugian MultiThreading
Multiprocessing merupakan penggunaan dua atau lebih CPU dalam sebuah sistem komputer. Multitasking merupakan metode untuk menjalankan lebih dari satu proses dimana terjadi pembagian sumberdaya seperti CPU. Multithreading adalah cara pengeksekusian yang mengizinkan beberapa thread terjadi dalam sebuah proses, saling berbagi sumber daya tetapi dapat dijalankan secara independen. Keuntungan dari sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian: a. Responsif. Aplikasi interaktif menjadi tetap responsif meskipun sebagian dari program sedang diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan gambar. b. Berbagi sumber daya. Beberapa thread yang melakukan proses yang sama akan berbagi sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama. c. Ekonomis. Pembuatan sebuah proses memerlukan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan menggunakan thread, karena thread membagi memori dan sumber daya yang dimilikinya sehingga lebih ekonomis untuk membuat thread dan context switching thread. Akan susah mengukur perbedaan waktu antara thread dan switch, tetapi secara umum pembuatan dan pengaturan proses akan memakan waktu lebih lama dibandingkan dengan thread. Pada Solaris, pembuatan proses memakan waktu 30 kali lebih lama dibandingkan pembuatan thread sedangkan proses context switch 5 kali lebih lama dibandingkan context switching thread. d. Utilisasi arsitektur multiprosesor. Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprosesor, dimana setiap thread dapat berjalan secara paralel di atas procesor yang berbeda. Pada arsitektur processor tunggal, CPU menjalankan setiap thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi paralel, tetapi pada kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu. Adapun kerugian dari multithreading adalah : 1. Jika digunakan secara berlebihan, multithreading akan berdampak pada pemborosan resource dan CPU yang dialokasikan untuk switching threads. Misalnya jika heavy disk I/O terlibat, akan lebih cepat jika hanya memiliki 1 atau 2 thread yang melaksanakan tugas secara berurutan, daripada menggunakan multithread yang masing-masing mengeksekusi sebuah task pada waktu yang sama.

tingkatan kernel. Karena itu. Model One-to-One. Model MultiThreading Beberapa terminologi yang akan dibahas: a. Kekurangannya adalah ketika ada satu blocking systemc call. Contoh: Windows NT/XP/2000 . Karena pustaka yang menyediakan fasilitas untuk pembuatan dan penjadwalan thread. Keuntungannya sama dengan keuntungan thread kernel. tidak akan memperoleh peningkatan bandwidth yang signifikan jika menggunakan multithreading. 11. Hanya satu thread pengguna yang dapat mengakses thread kernel pada satu saat. Karena dilakukan oleh sistem operasi. Linux. semua akan menjadi terblok juga. tapi interaksi antar thread-lah yang mengakibatkan kompleksitas tersebut. Thread yang banyak bisa saling berinterferensi ketika saling berbagi sumber daya hardware seperti cache. Thread yang didukung langsung oleh kernel. Model-Model MultiThreading Model-Model MultiThreading: a. thread pengguna cepat dibuat dan dikendalikan. Contoh: Solaris Green Threads dan GNU Portable Threads. Model ini memetakan beberapa thread tingkatan pengguna ke sebuah thread. penjadwalan dan manajemen thread dilakukan oleh kernel pada kernel space. Pembuatan.1. sehingga tidak ada efisiensi yang hilang (mengacu kepada latency). Sistem yang memiliki kecepatan prosesor dan memory yang cenderung sama. b. . Thread Kernel: . Thread pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread pada tingkatan pengguna. OS/2. proses pembuatannya akan lebih lambat jika dibandingkan dengan thread pengguna. Menggunakan multiple thread sendiri tidak akan menciptakan kerumitan. Pengaturan thread dilakukan dalam ruang pengguna sehingga efisien. 3. Kelemahan model ini ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel. Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One. b. 4. Gambar 11. Model ini memetakan setiap thread tingkatan pengguna ke setiap thread. Jadi Multiple thread tidak dapat berjalan secara paralel pada multiprosesor. Solaris 9.3. jika mengimplementasikan sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam sistem.2. Model Many-to-One. Multithreading menghasilkan program yang lebih kompleks.

Alternatifnya adalah dengan menggunakan deffered cancellation. Model ini mengizinkan developer membuat thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu. Model Many-to-Many. IRIX.4.5. maka akan menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan system call. Java. 11. Suatu thread secara periodik memeriksa apakah ia harus batal. HPUX. thread sisanya akan dibatalkan. Hal ini berarti sistem operasi yang mengimplementasikan Pthread API akan mengizinkan deferred cancellation. Ada tiga pustaka thread yang sering digunakan saat ini. 11. b. Contoh : Solaris 2. cara ini memperbolehkan target thread untuk membatalkan dirinya secara terurut. Hal ini akan menjadi masalah yang sulit apabila digunakan asynchronous cancellation. Pembatalan Thread Thread Cancellation ialah pembatalan thread sebelum tugasnya selesai. jika kita memanggil fungsi yang sudah ada di pustaka. Pustaka Thread Pustaka Thread atau yang lebih familiar dikenal dengan Thread Library bertugas untuk menyediakan API untuk programmer dalam menciptakan dan memanage thread. Pemanggilan fungsi call akan melibatkan system call ke kernel. Pemberhentian target Thread dapat dilakukan dengan 2 cara: a. Deferred cancellation. Selain itu kesulitan lain adalah ketika thread yang dibatalkan sedang meng-update data yang ia bagi dengan thread lain. Maka sebelum JVM dimatikan seluruh thread yang berjalan harus dibatalkan terlebih dahulu. Misalnya hendak mematikan Java Virtual Machine (JVM) pada program Java. Cara kerja dari deffered cancellation adalah dengan menggunakan satu thread yang berfungsi sebagai pengindikasi bahwa target thread hendak dibatalkan. Pthread merujuk sebagai cancellation points. b.c. Suatu thread seketika itu juga membatalkan target thread. Hal ini memperbolehkan thread untuk memeriksa apakah ia harus batal pada waktu dimana ia dapat dibatalkan secara aman yang aman. Thread yang akan diberhentikan biasa disebut target thread. Hal yang sulit dari pembatalan thread ini adalah ketika terjadi situasi dimana sumber daya sudah dialokasikan untuk thread yang akan dibatalkan. Contoh lain adalah pada masalah search. Model ini memultipleks banyak thread tingkatan pengguna ke thread kernel yang jumlahnya sedikit atau sama dengan tingkatan pengguna. dan Win32. Java API thread dapat diimplementasikan oleh Pthreads atau Win32. Asynchronous cancellation. Apabila sebuah thread mencari sesuatu dalam database dan menemukan serta mengembalikan hasilnya. Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Tetapi pembatalan hanya akan terjadi jika target thread memeriksa apakah ia harus batal atau tidak. sedangkan Win32 adalah kernel level. Sistem operasi akan mengambil kembali sumber daya dari thread yang dibatalkan tetapi seringkali sistem operasi tidak mengambil kembali semua sumber daya dari thread yang dibatalkan. Implementasi POSIX standard dapat dengan cara user level dan kernel level. Menyediakan API dalam level pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system call. Keuntungan dari sistem ini ialah kernel thread yang bersangkutan dapat berjalan secara paralel pada multiprosessor dan lebih efisien. yaitu: POSIX Pthreads. . Pada umumnya sistem operasi memperbolehkan proses atau thread untuk dibatalkan secara asynchronous. Ada dua cara dalam mengimplementasikan pustaka thread: a. Tetapi Pthread API menyediakan deferred cancellation. Jadi.

Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu pekerjaan lainnya. dimana mereka duduk diam dan menunggu untuk bekerja. Solusinya adalah dengan penggunaan Thread Pools. Keuntungan thread pool adalah: a. yaitu sekumpulan thread yang mengantri untuk mengerjakan tugas Cara kerjanya adalah dengan membuat beberapa thread pada proses startup dan menempatkan mereka ke pools. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibandingkan menunggu thread baru dibuat. Pembuatan jumlah thread yang tepat dapat meningkatkan performa serta sistem yang lebih stabil . c. b. b. Bila tidak ada thread yang tersedia pada saat dibutuhkan maka server menunggu sampai ada satu thread yang bebas. ketika server menerima permintaan. jumlah memori fisik.6. Ukuran waktu yang diperlukan untuk menciptakan thread yang melayani permintaan yang diajukan pada kenyataannya thread dibuang seketika sesudah ia menyelesaikan tugasnya. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem. Jumlah thread dalam pool dapat tergantung dari jumlah CPU dalam sistem. Thread pool membatasi jumlah thread yang ada pada suatu waktu. dan jumlah permintaan klien yang concurrent. Jadi. Thread Pools Pada web server yang menerapkan multithreading ada dua masalah yang timbul: a. ia akan membangunkan thread dari pool dan jika thread tersedia maka permintaan tersebut akan dilayani. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent.11.

b. kemudian menjadwalkannya ke satu thread tertentu (CPU / Kernel). Untuk menjadwalkan thread. System Contention Scope (SCS). thread baru dapat dijalankan dengan berbagai macam penjadwalan. Kebijakan penjadwalanlah yang menentukan setiap proses.11. Pustaka thread menjadwalkan thread pengguna untuk berjalan pada LWP (lightweight process) yang tersedia. Gambar 11. sistem dengan model multithreading many to many atau many to one menggunakan: a.7. Process Contention Scope (PCS).2. di mana proses tersebut akan ditaruh dalam daftar proses sesuai proritasnya dan bagaimana ia bergerak dalam daftar proses tersebut. Penjadwalan Thread Begitu dibuat. SCS berfungsi untuk memilih satu dari banyak thread. Penjadwalan Thread .

c. Meningkatkan respon dari pengguna. Cara untuk mengimplementasikannya yaitu: a. kecuali dalam hal pembuatan salinan dari proses yang dipanggil dimana ia membuat sebuah proses yang terpisah yang berbagi address space dengan proses yang dipanggil. daripada menciptakan yang baru maka struktur data yang baru mengandung pointer yang menunjuk ke tempat dimana data berada. Linux tidak didukung dengan threading di dalam kernelnya. Dua project yang saling bersaing menjawab tantangan ini. yaitu: Mach thread. dukungan kernel dan penulisan ulang pustaka thread sangat diperlukan. Dalam kenyataannya. Linux lebih menggunakan istilah task dibandingkan proses dan thread ketika merujuk kepada pengaturan alur pengontrolan di dalam program. Jadi. Tiga model Multithreading: a. pendekatan ini mempunyai beberapa kekurangan. Mengambil keuntungan dari arsitektur multiprosessor. namun ketika clone() dipanggil. b. tetapi dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan melalui clone() system calls. Menyediakan API dalam level pengguna tanpa dukungan dari kernel. c. sehingga dibuatlah suatu siklus yang membuat masing-masing thread bekerja secara bergantian. Rangkuman Thread adalah alur kontrol dari suatu proses. Pembagian address space ini dimungkinkan karena proses direpresentasikan di dalam Kernel Linux. Sementara pengembang dari Red Hat membuat NPTL (Native POSIX Thread Library). Model Many-to-Many. Pada sistem operasi lain seperti Mac OS X. Project Linux Thread menggunakan system call ini untuk mensimulasi thread di user space. Untuk meningkatkan kemampuan Thread Linux. d. POSIX thread (pthreads). b. dan Carbon Thread Manager. Akan tetapi tidak mudah untuk menentukan suatu thread mengerjakan tugas yang mana. Thread Linux Ketika pertama kali dikembangkan. Ekonomis. scheduling.8. proses yang baru akan tercipta beserta duplikasi dari segala isi di struktur data di parent process. Sekarang Linux mendukung penduplikasian proses menggunakan system call clone() dan fork(). ia tidak menduplikasi parent process-nya tetapi menciptakan pointer ke struktur data pada parent process yang memungkinkan child process untuk berbagi memori dan sumber daya dari parent process-nya. Sayangnya. terdapat lima thread API yang berbeda. Pustaka Thread bertugas untuk menyediakan API untuk programmer dalam menciptakan dan memanage thread. Sebuah tim yang terdiri dari pengembang dari IBM membuat NGPT (Next Generation POSIX Threads). Jadi ketika fork() dipanggil.11. Model One-to-One. Model Many-to-One. Sebenarnya Linux tidak membedakan antara proses dan thread. Menyediakan API di level kernel yang didukung secara langsung oleh sistem operasi. Pembagian sumber daya. Carbon MP tasks. Pembagian address space dari parent process memungkinkan cloned task bersifat mirip dengan thread yang terpisah. Cocoa thread (NSThreads). Clone() mempunyai sifat mirip dengan fork(). Keuntungan menggunakan Multithreading: a. b. khususnya di area signal handling. 11. dan interprocess synchronization primitive.9. Di dalam Kernel Linux setiap proses direpresentasikan sebagai sebuah struktur data yang unik. .

Sedangkan di Mac sekumpulan thread yang ada akan mengerjakan tugas bergantian dengan menggunakan siklus. Pembuatan Thread di Linux menggunakan system call clone(). Thread Pools menciptakan sejumlah Thread yang ditempatkan di dalam pool dimana Thread menunggu untuk dipanggil. Asynchronous cancellation. Pembatalan Thread terdiri dari 2 jenis: 1. 2. Local Schedulling. . Deffered cancellation.Pembatalan Thread: Tugas untuk membatalkan Thread sebelum menyelesaikan tugasnya. 2. Istilah thread di Linux adalah task. Global Schedulling. Thread Schedulling ada 2 macam: 1.

Computer_multitasking – http://en. The Free Encyclopedia. [WEBFSF1991a] Free Software Foundation.wikipedia. Multiprocessing – http://en. [WEBWIKI2007] Wikipedia. 2007. The Free Encyclopedia. Computer Science – http://en.ibm. Diakses 8 April 2008. 2007.org/wiki/Thread Diakses 7 April 2008 [TechnicalNote] Technical Note 2028. John Wiley & Sons. 2007. Peter Galvin.wikipedia. 2008.wikipedia. dan Grag Gagne. Seventh Edition. [WEBWIKI2007] Wikipedia. Diakses 29 Mei 2006. linux_threading – http://www-128..wikipedia. [WEBWIKI2008] Wikipedia.html. 2008. Diakses 16 Februari 2007.org/wiki/Multithreading Diakses 7 April 2008 [WikiCS2008] Wikipedia. Thread_(computer_science) – http://en.org/ wiki/ Computer_mutitasking . [WEBWIKI2007] Wikipedia..com/ developerworks/ java/ library/j-prodcon . 2005. Diakses 16 Februari 2007.org/ licenses/ gpl. Computer Hardware – http://en. [WEBIBM] IBM.txt . [WikiCH2008] Wikipedia.com/technotes/tn/tn2028.org/ wiki/Thread_(computer_science) .org/ wiki/ Thread_pool_pattern ..Rujukan [Silberschatz2005] Avi Silberschatz.vLSM.wikipedia. Threading Architectures – http://developer. Diakses 16 Februari 2007.org/ wiki/ Multiprocessing . 2008.wikipedia. Diakses 9 April 2008 . Thread_pool_pattern – http://en. Diakses 16 Februari 2007. 1991. Operating Systems Concepts.apple.. GNU General Public License – http://gnui. 2008. 2007.

Yuan Hanif Syaniardi (B 0606031603) 3. peserta mata kuliah Sistem Operasi semester genap 2008 1. mengedarkan.Hak Cipta © Mahasiswa Fakultas Ilmu Komputer Universitas Indonesia. Genta Moerita (A 0606104265) 2. dan/atau memodifikasi dokumen ini . Yunus Kuntawi Aji (B 0606031616) Silakan menyalin.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->