Proses merupakan sebuah program yang mengeksekusi
thread tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk
menjalankan satu tugas pada satu waktu. Banyak sistem operasi modern telah
memiliki konsep yang dikembangkan agar memungkinkan sebuah proses untuk
mengeksekusi multi-threads. Misalnya user melakukan pekerjaan secara bersamaan
yaitu mengetik dan menjalankan pemeriksaan ejaan didalam proses yang sama.
Thread merupakan unit dasar dari penggunaan CPU, yang terdiri dari Thread ID, program counter, register
set, dan stack. Sebuah thread berbagi code section, data
section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh
proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread
tunggal yang berfungsi sebagai pengendali. Perbedaannya ialah proses dengan
thread yang banyakmengerjakan lebih dari satu tugas pada satu satuan waktu.
Pada umumnya, perangkat lunak yang berjalan pada
komputer modern dirancang secara multithreading. Sebuah aplikasi biasanya
diimplementasi sebagai proses yang terpisah dengan beberapa thread yang
berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread
untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi
sebagai penerima data dari network.
Terkadang ada sebuah aplikasi yang perlu
menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server
dapat mempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web
server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia
hanya dapat melayani satu klien pada pada satu satuan waktu. Bila ada klien
lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien
sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi
multi-threading. Dengan ini maka sebuah web server akan membuat thread yang
akan mendengar permintaan klien, ketika permintaan lain diajukan maka web
server akan menciptakan thread lain yang akan melayani permintaan tersebut
[MDGR2006].
Model Multithreading
Dukungan thread disediakan pada tingkat user yaitu user threads atau tingka kernel untuk
kernel threads. User Threads
disediakan oleh kernel dan diatur tanpa dukungan kernel, sedangkan kernel therads didukung dan diatur
secara langusng oleh sistem operasi. Hubungan antara user threads dan kernel
threads terdiri dari tiga model relasi, yaitu:
Model Many to One: Model
Many-to-One 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
multiprocessor. Thread tingkat pengguna yang diimplementasi pada sistem operasi
yang tidak mendukung thread kernel menggunakan model Many-to-One.
Model One to One: Model
One-to-One memetakan setiap thread tingkatan pengguna ke thread kernel. Ia
menyediakan lebih banyak concurrency dibandingkan model Many-to-One.
Keuntungannya sama dengan keuntungan thread kernel. Kelemahannya model ini
ialah setiap pembuatan thread pengguna memerlukan pembuatan thread kernel.
Karena pembuatan thread dapat menurunkan kinerja dari sebuah aplikasi maka
implmentasi dari model ini, jumlah thread dibatasi oleh sistem. Contoh sistem
operasi yang mendukung model One-to-One ialah Windows NT dan OS/2.
Model Many To Many: Model
ini me-multipleks banyak thread tingkatan pengguna ke thread kernel yang
jumlahnya lebih sedikit atau sama dengan tingkatan pengguna. thread. Jumlah
thread kernel spesifik untuk sebagian aplikasi atau sebagian mesin. Many-to-One
model mengizinkan developer untuk membuat user thread sebanyak yang ia mau
tetapi concurrency (berjalan
bersama) tidak dapat diperoleh karena hanya satu thread yang dapat dijadwal
oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih tetapi developer harus hati-hati untuk
tidak menciptakan terlalu banyak thread dalam suatu aplikasi (dalam beberapa
hal, developer hanya dapat membuat thread dalam jumlah yang terbatas). Model
Many-to-Many tidak mengalami kelemahan dari dua model di atas. Developer dapat
membuat user thread sebanyak yang diperlukan, dan kernel thread yang
bersangkutan dapat bejalan secara paralel pada multiprocessor. Dan juga ketika
suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan
thread lain untuk melakukan eksekusi. Contoh sistem operasi yang mendukung
model ini adalah Solaris, IRIX, dan Digital UNIX.
Tidak ada komentar:
Posting Komentar