Nama :
Novan Nurdiana
Kuis
part, 5
Thread
1.
Apa yang di
maksud thread?
Jawaban :
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.
2.
Perbedaan antara
proses dengan thread tunggal dengan proses dengan thread yang banyak adalah?
Sebuah proses adalah sebuah peristiwa adanya
sebuah program yang dapat dieksekusi. Sebagai sebuah eksekusi proses, maka hal
tersebut membutuhkan perubahan keadaan. Keadaan dari sebuah proses dapat
didefinisikan oleh aktivitas proses tersebut. Suatu proses adalah lebih dari
kode program, dimana kadang kala dikenal sebagai bagian tulisan. Proses juga
termasuk aktivitas yang sedang terjadi, sebagaimana digambarkan oleh nilai pada
program counter dan isi dari daftar prosesor/ processor’s register. Suatu
proses umumnya juga termasuk process stack, yang berisikan data temporer
(seperti parameter metoda, address yang kembali, dan variabel lokal) dan sebuah
data section, yang berisikan variabel global. Setiap proses mungkin menjadi
satu dari beberapa state berikut, antara lain: new, ready, running, waiting,
atau terminated. Setiap proses direpresentasikan ada sistem operasi berdasarkan
proses-control-block (PCB)-nya.
3.
Sebutkan
macam-macam thread!
Dalam sub bab sebelumnya telah dibahas
pengertian dari thread, keuntungannya, tingkatan atau levelnya seperti pengguna
dan kernel. Maka dalam subbab ini pembahasan akan dilanjutkan dengan
jenis-jenis thread tersebut dan contohnya baik pada Solaris mau pun Java.
Sistem-sistem yang ada sekarang sudah
banyak yang bisa mendukung untuk kedua pengguna dan kernel thread, sehingga
model-model multithreading-nya pun menjadi beragam. Implementasi multithreading
yang umum akan kita bahas ada tiga, yaitu model many-to-one, one-to-one, dan
many-to-many.

Gambar XXX Model Multithreading
Model many-to-one ini memetakan
beberapa tingkatan pengguna thread hanya ke satu buah kernel thread. Managemen
proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi efisien,
tetapi apabila sebuah thread melakukan sebuah pemblokingan terhadap sistem
pemanggilan, maka seluruh proses akan berhenti (blocked). Kelemahan dari model
ini adalah multihreads tidak dapat berjalan atau bekerja secara paralel di
dalam multiprosesor dikarenakan hanya satu thread saja yang bisa mengakses
kernel dalam suatu waktu.

Gambar XXX Model Many to One
Model one-to-one memetakan setiap
thread pengguna ke dalam satu kernel thread. Hal ini membuat model one-to-one
lebih sinkron daripada model many-to-one dengan mengizinkan thread lain untuk
berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan;
hal ini juga mengizinkan multiple thread untuk berjalan secara parallel dalam
multiprosesor. Kelemahan model ini adalah dalam pembuatan thread pengguna
dibutuhkan pembuatan korespondensi thread pengguna. Karena dalam proses
pembuatan kernel thread dapat mempengaruhi kinerja dari aplikasi maka
kebanyakan dari implementasi model ini membatasi jumlah thread yang didukung
oleh sistem. Model one-to-one diimplementasikan oleh Windows NT dan OS/2.

Gambar XXX Model One to One
4.
Jelaskan tindakan
yang di ambil oleh sebuah kernel saat alih konteks antara kernel level thread?
Sebuah kernel akan menyimpan
konteks dari proses lama kedalam PCBnya, kemudian mengisi konteks yang telah
disimpan dari proses baru yang telah terjadwal untuk berjalan ketika alih
konteks terjadi saat proses sedang berlangsung. karena sistem ini melakukan pekerjaan
yang tidak perlu maka pergantian waktu konteks merupakan murni overhead.
Kecepatannya pengalihan ini bervariasi dari tiap mesin. Hal ini bergantung pada
kecepatan memori, jumlah register yang harus di copy, dan keberadaan instruksi
khusus. Tingkat kecepatan pengalihan ini umumnya berkisar antara 1 sampai 1000
micro detik
5.
Sebutkan
Keuntungan dan kerugian Multithreading?
Keuntungan dari
sistem yang menerapkan multithreading dapat kita kategorikan menjadi 4
bagian:
bagian:
a) 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.
diblok atau melakukan operasi lain yang panjang. Umpamanya, sebuah thread dari web browser
dapat melayani permintaan pengguna sementara thread yang lain berusaha menampilkan
gambar.
b) 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.
sumber daya. Keuntungannya adalah mengizinkan sebuah aplikasi untuk mempunyai beberapa
thread yang berbeda dalam lokasi memori yang sama.
c) 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.
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.
d) 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 kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.
Adapun kerugian dari multithreading adalah :
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 kenyataannya hanya satu thread yang dijalankan CPU pada satu-satuan waktu.
Adapun kerugian dari multithreading adalah :
·
Jika digunakan
secara berlebihan, multithreading akan berdampak pada pemborosan
resource dan CPU yang dialokasikan untuk switching threads. Misalnya jika heavy disk I/O
terlibat, akan lebih cepat jika hanya memiliki 1 atau 2 thread yang melaksanakan tugas secara
berurutan, daripada menggunakan multithread yang masing-masing mengeksekusi sebuah task
pada waktu yang sama.
resource dan CPU yang dialokasikan untuk switching threads. Misalnya jika heavy disk I/O
terlibat, akan lebih cepat jika hanya memiliki 1 atau 2 thread yang melaksanakan tugas secara
berurutan, daripada menggunakan multithread yang masing-masing mengeksekusi sebuah task
pada waktu yang sama.
·
Sistem yang memiliki kecepatan prosesor dan
memory yang cenderung sama, sehingga tidak
ada efisiensi yang hilang (mengacu kepada latency), tidak akan memperoleh peningkatan
bandwidth yang signifikan jika menggunakan multithreading.
ada efisiensi yang hilang (mengacu kepada latency), tidak akan memperoleh peningkatan
bandwidth yang signifikan jika menggunakan multithreading.
·
Multithreading
menghasilkan program yang lebih kompleks. Menggunakan multiple thread
sendiri tidak akan menciptakan kerumitan, tapi interaksi antar thread-lah yang mengakibatkan
kompleksitas tersebut.
sendiri tidak akan menciptakan kerumitan, tapi interaksi antar thread-lah yang mengakibatkan
kompleksitas tersebut.
·
Thread yang banyak bisa saling berinterferensi
ketika saling berbagi sumber daya hardware
seperti cache
seperti cache
·
Tidak ada komentar:
Posting Komentar