MAKALAH SISTEM OPERASI THREAD Pengertian
MAKALAH SISTEM OPERASI
THREAD
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.
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 masingmasing. 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
browser mempunyai thread untuk
web
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.
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
secara bergantian tetapi hal ini berlangsung
pararel, tetapi pada
menjalankan setiap thread
sangat cepat sehingga menciptakan ilusi
kenyataannya hanya satu thread yang dijalankan CPU pada
satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).
Kesimpulan
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.
THREAD
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.
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 masingmasing. 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
browser mempunyai thread untuk
web
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.
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
secara bergantian tetapi hal ini berlangsung
pararel, tetapi pada
menjalankan setiap thread
sangat cepat sehingga menciptakan ilusi
kenyataannya hanya satu thread yang dijalankan CPU pada
satu-satuan waktu (satu-satuan waktu pada CPU biasa disebut time slice atau quantum).
Kesimpulan
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.