Operating System Thread Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan Dosen : Caca E. Supriana, S.Si
[email protected]
Threads z Thread adalah sebuah alur kontrol dari sebuah proses. z Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. z Keuntungan dari multithreaded meliputi peningkatan respon dari pengguna, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor.
Threads zSuatu proses adalah sebuah program yang menjalankan eksekusi thread tunggal. zSebagai contoh, jika sebuah proses menjalankan sebuah program Word Processor, ada sebuah thread tunggal dari instruksi-instruksi yang sedang dilaksanakan.
Threads z Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread_ID, program counter,register set, dan stack. z Sebuah thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. z Thread juga sering disebut lightweight process.
Threads
Proses Vs Threads z Proses biasanya independen sedangkan thread ada sebagai sebuah subset dari proses z Proses membawa keadaan (state) informasi sementara beberapa thread dalam sebuah proses berbagi keadaan informasi, memori dan sumber daya z Proses ada dalam ruang alamat yang terpisah sedangkan thread berbagi ruang alamat (address space) z Proses berinteraksi dengan proses lain hanya melalui mekanisme inter-proses yang disediakan oleh sistem z Context switching (cara penggunaan sebuah sumber daya CPU secara bersama) antar thread lebih cepat dibandingkan dengan proses
Keuntungan Thread
1. Responsi 2. Berbagi sumber daya 3. Ekonomi 4. Utilisasi arsitektur multiprosesor
Keuntungan Thread (1) z Responsi: Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus berjalan meski pun sebagian dari program tersebut diblok atau melakukan operasi yang panjang, karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalam web browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread lain berusaha menampilkan image. z Berbagi sumber daya: thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama. Keuntungan dari berbagi kode adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa thread yang berbeda dalam lokasi memori yang sama.
Keuntungan Thread (2) z Ekonomi: dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya. Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread. z Utilisasi arsitektur multiprocessor : Keuntungan dari multithreading dapat sangat meningkat pada arsitektur multiprocessor, dimana setiap thread dapat berjalan secara pararel di atas processor yang berbeda.
User Thread z User thread didukung di atas kernel dan diimplementasi oleh thread library pada user level. Library menyediakan fasilitas untuk pembuatan thread, penjadualan thread, dan managemen thread tanpa dukungan dari kernel. z Karena kernel tidak menyadari user-level thread maka semua pembuatan dan penjadualan thread dilakukan di user space tanpa intervensi dari kernel. Oleh karena itu, user-level thread biasanya cepat untuk dibuat dan diatur.
Kernel Thread zKernel thread didukung langsung oleh sistem operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space. zKarena pengaturan thread dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user thread.
Multithreading Models (1) z Model many to one: memetakan beberapa pengguna level thread hanya ke satu buah kernel thread. z Manajemen thread dilakukan di user space, sangat efisien tapiseluruh proses akan di blok jika satu thread melakukan blocking system call
Multithreading Models (2) z Model one to one: memetakan setiap thread pengguna ke dalam satu kernel thread berakhir. z Mengikinkan banyak thread berjalan secara paralel dalam multiprosesor z Kekurangannya adalah setiap thread berasosiasi dengan kernel thread yang dapat membebani aplikasi
Multithreading Models (3) z Model many to many: mengijinkan pengembang untuk membuat thread pengguna sebanyak mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang dapat dijadualkan oleh kernel dalam satu waktu. z Ketika sebuah thread melakukan blocking system call maka kernel akan melakukan penjadwalan thread lain untuk dieksekusi
Cancellation z Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan tugasnya. z Contohnya jika dalam program java kita hendak mematikan Java Virtual Machine (JVM) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebih dahulu. z Thread yang akan diberhentikan biasa disebut target thread.
Cancellation zAsynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread. zDefered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Penanganan Sinyal Sebuah sinyal digunakan di sistem UNIX untuk notify sebuah proses kalau suatu peristiwa telah terjadi. Sebuah sinyal dapat diterima secara synchronous atau asynchronous tergantung dari sumber dan alasan kenapa peristiwa itu memberi sinyal. Semua sinyal (asynchronous dan synchronous) mengikuti pola yang sama: z Sebuah sinyal dimunculkan oleh kejadian dari suatu peristiwa. z Sinyal yang dimunculkan tersebut dikirim ke proses. z Sesudah dikirim, sinyal tersebut harus ditangani.
Penanganan Sinyal z Contoh dari sinyal synchronous adalah ketika suatu proses melakukan pengaksesan memori secara ilegal atau pembagian dengan nol, sinyal dimunculkan dan dikirim ke proses yang melakukan operasi tersebut. z Contoh dari sinyal asynchronous misalnya kita mengirimkan sinyal untuk mematikan proses dengan keyboard (ALT-F4) maka sinyal asynchronous dikirim ke proses tersebut.
Thread Pools Keuntungan thread pool : z Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan menunggu thread baru dibuat. z Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini penting pada sistem yang tidak dapat mendukung banyak thread yang berjalan secara concurrent. Contoh penggunaan thread pools adalah pada web server yang multithreading
Thread Specific Data z Thread yang dimiliki oleh suatu proses memang berbagi data tetapi setiap thread mungkin membutuhkan duplikat dari data tertentu untuk dirinya sendiri dalam keadaan tertentu. Data ini disebut thread-specific data.
Studi Kasus Thread : Windows 2000 (1) z Windows 2000 mengimplementasikan Win32 API (Application Programming Interface), yang merupakan API utama pada keluarga sistem operasi keluaran Microsoft z Sebuah aplikasi windows menggunakan proses yang terpisah dimana setiap proses mempunyai satu atau lebih thread. z Windows menggunakan model pemetaan thread one to one tetapi juga mendukung penggunaan model many to many
Studi Kasus Thread : Windows 2000 (2) Komponen umum dari sebuah thread adalah : z ID thread yang mengidentifikasi sebuah thread secara unik z Register set yang merepresentasikan status prosesor z User stack yang digunakan saat thread sedang berjalan dalam user mode z Area penyimpanan khusus yang digunakan oleh macammacam pustaka run-time atau file DLL (Dynamic Link Libraries)
Studi Kasus Thread : Windows 2000 (3) Struktur data primer dari sebuah thread adalah : z ETHREAD (executive thread block) : berisi pointer ke proses asal thread dan alamat rutin dimana thread dimulai z KTHREAD (kernel thread block) : berisi penjadwalan dan sinkronisasi informasi untuk thread. z TEB (thread environment block) : struktur data tempat user yang diakses ketika thread berjalan dalam user mode. TEB berisi user mode stack dan array untuk thread data tertentu.