Minggu, 15 Maret 2020

Kuis part, 5


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 counterregister set, dan stack. Sebuah thread berbagi code sectiondata 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.
http://iim6.tripod.com/ibam-os-html/img/5-3.png
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.
http://iim6.tripod.com/ibam-os-html/img/5-4.png
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.
http://iim6.tripod.com/ibam-os-html/img/5-5.png
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:
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.
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.
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.
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 :
·         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.
·          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.
·         Multithreading menghasilkan program yang lebih kompleks. Menggunakan multiple thread
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
·          

Tidak ada komentar:

Posting Komentar