Sistem Operasi Thread
BAB
II
PEMBAHASAN
2.1. PENGERTIAN THREAD
Thread dalam sistem operasi dapat
diartikan sebagai sekumpulan perintah (instruksi) yang dapat dilaksanakan
(dieksekusi) secara sejajar dengan ulir lainnya, dengan menggunakan cara time
slice (ketika satu CPU melakukan perpindahan antara satu ulir ke ulir
lainnya) atau multiprocess (ketika ulir-ulir tersebut dilaksanakan oleh
CPU yang berbeda dalam satu sistem).
Ulir sebenarnya mirip dengan proses, tapi cara berbagi
sumber daya antara proses dengan ulir sangat berbeda. Multiplethread
dapat dilaksanakan secara sejajar pada sistem komputer. Secara umum multithreading
melakukan time-slicing (sama dengan time-division multipleks), di
mana sebuah CPU bekerja pada ulir yang berbeda, di mana suatu kasus ditangani
tidak sepenuhnya secara serempak, untuk CPU tunggal pada dasarnya benar-benar
melakukan sebuah pekerjaan pada satu waktu.
Thread saling berbagi bagian program, bagian data dan sumber
daya sistem operasi dengan thread lain yang mengacu pada proses yang sama.
Thread terdiri atas ID thread, program counter, himpunan register, dan stack.
Dengan banyak kontrol thread proses dapat melakukan lebih dari satu pekerjaan
pada waktu yang sama.
2.2. MODEL MULTITHREAD
Beberapa
terminologi yang akan di bahas , yaitu :
·
User (pengguna) thread
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.
Adapun kelemahannya
yang dialami yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level thread menjalankan blocking system call maka akan
mengakibatkan seluruh proses diblok walau pun ada thread lain yang dapat jalan dalam aplikasi tersebut
·
Kernel tread
Kernel thread didukung langsung oleh sistem
operasi. Pembuatan, penjadualan, dan managemen thread dilakukan oleh kernel pada kernel space. Pembuatan dan pengaturan kernel thread lebih lambat dibandingkan user
thread.
Keuntungannya
adalah jika sebuah thread
menjalankan blocking system call
maka kernel dapat menjadualkan thread
lain di aplikasi untuk melakukan eksekusi. Pada lingkungan multiprocessor, kernel dapat
menjadual thread-thread pada processor yang berbeda.
Contoh
sistem operasi yang mendukung kernel thread
adalah Windows NT, Solaris, Digital UNIX.
a.
Berdasarkan Pemetaan Thread
Model multithreading berdasarkan dengan pemetaan dibedakan menjadi tiga
bagian, yaitu:
1)
Many to
One
Model ini memetakan beberapa thread tingkatan user ke sebuah thread
tingkatan kernel. Pengaturan thread
dilakukan dalam ruang user sehingga
efisien. Hanya satu thread user yang dapat mengakses thread kernel pada satu saat. Jadi Multiple thread tidak dapat berjalan secara paralel pada
multiprosesor. Contoh dari many to one
adalah Solaris Green Threads dan GNU Portable Threads. Model Many to One ditunjukkan pada gambar 2.3.
Gambar 2.3. Many to
One
2)
One to
One
Model ini memetakan setiap thread tingkatan user ke setiap thread. One to One menyediakan lebih banyak concurrency dibandingkan model Many to One. Keuntungannya sama dengan
keuntungan thread kernel. Kelemahan model ini ialah setiap pembuatan thread user
memerlukan tambahan thread kernel.
Karena itu, jika mengimplementasikan
sistem ini maka akan menurunkan kinerja dari sebuah aplikasi sehingga biasanya
jumlah thread dibatasi dalam sistem.
Adapun contoh dari one to one, yaitu Windows NT/XP/2000, Linux, Solaris 9.
Gambar 2.4. menunjukkan model One to One.
Gambar 2.4. One to One
3)
Many to
Many
Model ini memultipleks banyak thread tingkatan user ke thread kernel
yang jumlahnya sedikit atau sama dengan tingkatan user. Model ini mengizinkan developer
membuat thread sebanyak yang developer inginkan 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. Model Many to Many ditunjukkan pada gambar
dibawah ini.
Gambar 2.5. Many to Many
Jenis-Jenis
Proses Thread
Pada proses thread terdapat dua jenis thread, yaitu:
1. Single Thread Process
Sebuah proses tradisional atau heavyweight process mempunyai single
thread yang berfungsi sebagai pengendali. Dapat diartikan sebagai proses
yang bekerja secara berurutan sesuai dengan urutan masing-masing thread
(terstruktur) dan hanya mengerjakan satu tugas dalam satu waktu. Di bawah ini
merupakan gambar single thread.
Gambar 2.1. Single Thread
2. Multithread Process
Merupakan
satu atau beberapa thread yang
dijalankan secara bersamaan
(multiproses), dimana masing-masing thread
tersebut dijalankan pada jalur masing-masing. Setiap thread pada multithread
menjalankan kode atau script program
secara berurutan. Multithread dapat
diartikan juga sebagai suatu proses dengan thread banyak dapat mengerjakan lebih dari
satu tugas pada satu satuan waktu.
Multithread sering
pula disebut dengan multiproses atau multitasking pada sistem operasi. Gambar multithread ditunjukkan pada gambar 2.2.
Gambar 2.2. Multitread
Banyak
perangkat lunak yang berjalan pada PC 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.
Kadang
kala ada situasi dimana sebuah aplikasi diperlukan untuk 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 single thread 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 multithreading.
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.
2.3. KEUNTUNGAN
THREAD
Terdapat empat keuntungan
utama dari program yang multithreading,
yaitu sebagai berikut:
1. Responsiveness
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 user. Sebagai contohnya dalam web
browser yang multithreading, sebuah thread dapat melayani permintaan user sementara thread lain berusaha
menampilkan image.
2. Resource sharing
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.
3. Economy
Dalam
pembuatan sebuah proses
banyak dibutuhkan pengalokasian memori dan sumber daya.
Alternatifnya adalah dengan useran thread, karena thread berbagi memori dan
sumber daya proses yang memilikinya maka akan
lebih ekonomis untuk
membuat dan context switch
thread. Akan sulit untuk
mengukur perbedaan waktu antara
proses dan thread dalam hal
pembuatan dan pengaturan, tetapi secara umum pembuatan dan pengaturan proses
lebih lama dibandingkan
thread. Pada Solaris, pembuatan proses lebih lama 30 kali dibandingkan
pembuatan thread, dan context switch proses 5 kali lebih lama
dibandingkan context switch thread.
4.
Utilization
of multiprocessor architectures
Keuntungan
dari multithreading dapat sangat
meningkat pada arsitektur multiprocessor, dimana setiap thread
dapat berjalan secara pararel di atas processor
yang berbeda. Pada arsitektur processor
tunggal, CPU menjalankan setiap
thread secara bergantian tetapi hal ini berlangsung sangat cepat sehingga menciptakan ilusi
pararel, tetapi pada kenyataannya
hanya satu thread yang dijalankan CPU pada
satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).
BAB
III
KESIMPULAN
3.1. KESIMPULAN
Thread adalah sebuah alur kontrol dari sebuah proses.
Thread terbagi menjadi dua jenis yaitu Single Thread dan Multithread. Dilihat
dari kegunaannya multithread adalah thread yang paling banyak dipakai
akhir-akhir ini. Suatu proses yang multithreaded mengandung beberapa perbedaan
alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded
meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis,
dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor. User level
thread adalah thread yang tampak oleh programmer dan tidak diketahui oleh
kernel. User level thread secara tipikal dikelola oleh sebuah library thread di
ruang user. Kernel level thread didukung dan dikelola oleh kernel sistem
operasi. Secara umum, user level thread lebih cepat dalam pembuatan dan
pengelolaan dari pada kernel thread. Ada tiga perbedaan tipe dari model yang
berhubungan dengan user dan kernel thread.
- Model
many to one: memetakan beberapa user level thread hanya ke satu buah
kernel thread.
- Model
one to one: memetakan setiap user thread ke dalam satu kernel thread.
berakhir.
- Model
many to many: mengizinkan pengembang untuk membuat user thread sebanyak
mungkin, konkurensi tidak dapat tercapai karena hanya satu thread yang
dapat dijadualkan oleh kernel dalam satu waktu.
DAFTAR
PUSTAKA
1. 703junior. (2010, September 25). User Thread dan
Kernel Thread. Retrieved from 703JUNIOR'S BLOG:
https://703junior.wordpress.com/2010/09/25/sistem-operasi/
2.
informatika, i.
(2015, Desember 13). proses dan thread. Retrieved from Berbagi Ilmu:
http://irfantek.blogspot.com/2015/12/makalah-proses-dan-thread.html
3.
Waskita, A. A.
(2012, Juni 16). THREAD. Retrieved from SISTEM OPERASI:
http://tugasqte.blogspot.com/2012/06/thread.html