Posted by : Save Our Nature
Selasa, 25 Maret 2014
Multithreading Models
Beberapa
terminologi yang akan dibahas:
a. Thread
pengguna: Thread yang pengaturannya dilakukan oleh pustaka thread
pada tingkatan pengguna. Karena pustaka yang menyediakan fasilitas untuk
pembuatan dan penjadwalan thread, thread pengguna cepat dibuat
dan dikendalikan.
b. Thread Kernel: Thread
yang didukung langsung oleh kernel. Pembuatan, penjadwalan dan manajemen thread
dilakukan oleh kernel pada kernel space. Karena dilakukan oleh
sistem operasi, proses pembuatannya akan lebih lambat jika dibandingkan dengan thread
pengguna.
Model-model
Multithreading:
a. Model Many-to-One. Model
ini memetakan beberapa thread tingkatan pengguna ke sebuah thread.
tingkatan kernel. Pengaturan thread dilakukan dalam ruang pengguna
sehingga efisien. Hanya satu thread pengguna yang dapat mengakses thread
kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan
secara paralel pada multiprosesor. Contoh: Solaris Green Threads dan GNU
Portable Threads.
b. Model One-to-One. Model
ini memetakan setiap thread tingkatan pengguna ke setiap thread.
Ia menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahan model ini
ialah setiap pembuatan thread pengguna memerlukan tambahan thread kernel.
Karena itu, jika mengimplementasikan sistem ini maka akan menurunkan kinerja
dari sebuah aplikasi sehingga biasanya jumlah thread dibatasi dalam
sistem. Contoh: Windows NT/XP/2000 , Linux, Solaris 9.
c. Model Many-to-Many. Model
ini memultipleks banyak thread tingkatan pengguna ke thread kernel
yang jumlahnya sedikit atau sama dengan tingkatan pengguna. 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. Keuntungan dari sistem ini ialah
kernel thread yang bersangkutan dapat berjalan secara paralel pada
multiprosessor.
Keuntungan dari
sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4 bagian:
1. 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.
2. 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.
3. 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.
4. 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 kenyataanya hanya satu thread yang dijalankan
CPU pada satu-satuan waktu.
Pustaka Thread
Pustaka
Thread atau yang lebih familiar dikenal dengan Thread Library bertugas
untuk menyediakan API untuk programmer dalam menciptakan dan memanage thread.
Ada dua cara dalam mengimplementasikan pustaka thread :
a. Menyediakan API dalam level
pengguna tanpa dukungan dari kernel sehingga pemanggilan fungsi tidak melalui system
call. Jadi, jika kita memanggil fungsi yang sudah ada di pustaka, maka akan
menghasilkan pemanggilan fungsi call yang sifatnya lokal dan bukan system
call.
b. Menyediakan API di level kernel
yang didukung secara langsung oleh sistem operasi. Pemanggilan fungsi call akan
melibatkan system call ke kernel.
Ada
tiga pustaka thread yang sering digunakan saat ini, yaitu: POSIX
Pthreads, Java, dan Win32. Implementasi POSIX standard dapat dengan cara user
level dan kernel level, sedangkan Win32 adalah kernel level. Java API thread
dapat diimplementasikan oleh Pthreads atau Win32.
Pembatalan
Thread (Thread Cancellation)
Thread Cancellation ialah pembatalan thread
sebelum tugasnya selesai. Umpamanya, jika dalam program Java hendak
mematikan Java Virtual Machine (JVM). Sebelum JVM dimatikan, maka seluruh thread
yang berjalan harus dibatalkan terlebih dahulu. Contoh lain adalah di
masalah search. Apabila sebuah thread mencari sesuatu dalam database
dan menemukan serta mengembalikan hasilnya, thread sisanya akan
dibatalkan. Thread yang akan diberhentikan biasa disebut target
thread.
Pemberhentian target Thread dapat
dilakukan dengan 2 cara:
a. Asynchronous
cancellation. Suatu thread seketika itu juga membatalkan target
thread.
b. Deferred cancellation.
Suatu thread secara periodik memeriksa apakah ia harus batal, cara
ini memperbolehkan target thread untuk membatalkan dirinya secara
terurut.
Penjadwalan Thread
Begitu dibuat, thread baru dapat dijalankan dengan berbagai
macam penjadwalan. Kebijakan penjadwalanlah yang menentukan setiap proses, di
mana proses tersebut akan ditaruh dalam daftar proses sesuai proritasnya dan
bagaimana ia bergerak dalam daftar proses tersebut.
Untuk menjadwalkan thread,
sistem dengan model mulithreading many to many atau many to one menggunakan:
a. Process
Contention Scope (PCS). Pustaka thread menjadwalkan thread pengguna
untuk berjalan pada LWP (lightweight process) yang tersedia.
b. System Contention Scope
(SCS). SCS berfungsi untuk memilih satu dari banyak thread ,
kemudian menjadwalkannya ke satu thread tertentu(CPU / Kernel).
REFERENCE :
LIHAT JUGA :
ok min
BalasHapusalat cuci ultrasonic