Sistem Operasi 04TPLE005 Sesi 2
1. Apa yang di maksud dengan thread?
Thread adalah prinsip yang memperbolehkan sebagian dari program untuk berjalan secara independen dengan sebagian program lainnya. Dalam threading anda dapat menjalankan beberapa pointer (alamat dalam komputer) sekaligus. Artinya dua atau lebih bagian dari kode dapat dijalankan secara simultan.
2. Perbedaan antara proses dengan thread tunggal dengan proses thread yang banyak?
Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu, sedangkan proses dengan thread tunggal tidak bisa mengerjakan lebih dari satu tugas pada satu satuan waktu.
3. Sebutkan macam - macam thread!
Model MultiTrading:
One to one: Memetakan setiap user thread ke dalam 1 kernel threa.
Kelebihan: Model one-to-one lebih sinkron daripada model many-to-one karena mengizinkan thread lain untuk berjalan ketika suatu thread membuat pemblokingan terhadap sistem pemanggilan, hal ini juga membuat multiple thread bisa berjalan secara parallel dalam multiprosesor .
Kekurangan: Dalam pembuatan user thread diperlukan 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 ini ada pada Windows NT dan OS/2.
One to Many: memetakan beberapa tingkatan thread user hanya ke satu buah kernel thread.
Kelebihan: Managemen proses thread dilakukan oleh (di ruang) pengguna, sehingga menjadi lebih efisien.
Kekurangan: multi thread tidak dapat berjalan atau bekerja secara paralel di dalam multiprosesor karena hanya satu thread saja yang bisa mengakses kernel dalam suatu waktu.
Model ini ada pada Solaris Green dan GNU Portable.
Many to Many : Membolehkan setiap tingkatan user thread dipetakan ke banyak kernel thread.
Kelebihan:
* Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Developer dapat membuat user thread sebanyak yang diperlukan dan kernel thread yang bersangkutan dapat berjalan secara parallel pada multiprocessor.
* Dan ketika suatu thread menjalankan blocking system call maka kernel dapat menjadwalkan thread lain untuk melakukan eksekusi.
Kekurangan:
* Developer dapat membuat user thread sebanyak mungkin, tetapi konkurensi tidak dapat diperoleh karena hanya satu thread yang dapat dijadwalkan oleh kernel pada suatu waktu.
Model ini ada pada Solaris, IRIX, dan Digital UNIX.
4. Jelaskan tindakan yang di ambil oleh sebuah kernel saat alih konteks antara kernel level thread!
- Perpindahan antar proses melibatkan penyimpanan konteks dari proses yang sebelumnya dan proses berikutnya. hal ini harus dapat dilakukan dengan cepat untuk mencegah terbuangnya waktu CPU, versi. baru dari linux mengganti perpindahan konteks perangkat keras ini menggunakan piranti lunak yang mengimplementasikan sederet instruksi mov untuk menjamin validasi data yang disimpan serta potensi untuk melakukan optimasi. untuk mengubah konteks proses digunakan makro switch. makro tersebut akan mengganti proses dari proses yang ditunjuk oleh prev task menjadi next task .makro switch di jalankan oleh schedule dan merupakan salah satu rutin kernel yang sangan tergantung pada perangkat keras.
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 :
1. 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.
2. 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.
3. Multithreading menghasilkan program yang lebih kompleks. Menggunakan multiple thread
sendiri tidak akan menciptakan kerumitan, tapi interaksi antar thread-lah yang mengakibatkan
kompleksitas tersebut.
4. Thread yang banyak bisa saling berinterferensi ketika saling berbagi sumber daya hardware
seperti cache.
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 :
1. 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.
2. 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.
3. Multithreading menghasilkan program yang lebih kompleks. Menggunakan multiple thread
sendiri tidak akan menciptakan kerumitan, tapi interaksi antar thread-lah yang mengakibatkan
kompleksitas tersebut.
4. Thread yang banyak bisa saling berinterferensi ketika saling berbagi sumber daya hardware
seperti cache.
6. Apa yang di maksud penjadwalan CPU?
Penjadwalan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Penjadwalan CPU merupakan konsep dari multiprogramming, dimana CPU digunakan secara bergantian untuk proses yang berbeda. Suatu proses terdiri dari dua siklus yaitu Burst I/O dan Burst CPU yang dilakukan bergantian hingga proses selesai.
7. Sebutkan kriteria penjadwalan yang optimal!
a. Adil (fairness)
Adalah proses-proses yang diperlakukan sama, yaitu mendapat jatah waktu pemroses yang sama dan tak ada proses yang tak kebagian layanan pemroses sehingga mengalami kekurangan waktu.
b. Efisiensi (eficiency)
Efisiensi atau utilisasi pemroses dihitung dengan perbandingan (rasio) waktu sibuk pemroses.
c. Waktu tanggap (response time).
Waktu tanggap berbeda untuk :
1) Sistem interaktif
Didefinisikan sebagai waktu yang dihabiskan dari saat karakter terakhir dari perintah dimasukkan atau transaksi sampai hasil pertama muncul di layar. Waktu tanggap ini disebut terminal response time.
2) Sistem waktu nyata
Didefinisikan sebagai waktu dari saat kejadian (internal atau eksternal) sampai instruksi pertama rutin layjkusnendaranan yang dimaksud dieksekusi, disebut event response time.
3) Turn around time
Adalah waktu yang dihabiskan dari saat program atau job mulai masuk ke system sampai proses diselesaikan sistem. Waktu yang dimaksud adalah waktu yang dihabiskan di dalam sistem, diekspresikan sebagai penjumlah waktu eksekusi (waktu pelayanan job) dan waktu menunggu, yaitu : Turn arround time = waktu eksekusi + waktu menunggu.
4) Throughput
Adalah jumlah kerja yang dapat diselesaikan dalam satu unit waktu. Cara untuk mengekspresikan throughput adalah dengan jumlah job pemakai yang dapat dieksekusi dalam satu unit / interval waktu.
Kriteria-kriteria tersebut saling bergantung dan dapat pula saling bertentangan sehingga tidak dimungkinkan optimasi semua kriteria secara simultan. Contoh : untuk memberi waktu tanggap kecil memerlukan penjadwalan yang sering beralih ke antara proses-proses itu. Cara ini meningkatkan overhead sistem dan mengurangi throughput.
Oleh karena itu dalam menentukan kebijaksanaan perancangan penjadwalan sebaiknya melibatkan kompromi diantara kebutuhan-kebutuhan yang saling bertentangan. Kompromi ini bergantung sifat dan penggunaan sistem komputer.
8. Apa yang di maksud SJF dan berikan contoh algoritmanya?
SJF (SHORTEST JOB FIRST)
Pada algoritma ini setiap proses yang ada di ready queue akan dieksekusi berdasarkan burst time terkecil. Hal ini mengakibatkan waiting time yang pendek untuk setiap proses dan karena hal tersebut maka waiting time rata-ratanya juga menjadi pendek, sehingga dapat dikatakan bahwa algoritma ini adalah algoritma yang optimal.
Tabel Contoh Shortest Job First
Process Arrival Time Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4CONTOH KASUS
1. Ada 4 buah proses yang datang berurutan yaitu P1 dengan arrival time pada 0.0 ms dan burst time 7 ms, P2 dengan arrival time pada 2.0 ms dan burst time 4 ms, P3 dengan arrival time pada 4.0 ms dan burst time 1 ms, P4 dengan arrival time pada 5.0 ms dan burst time 4 ms. Hitunglah waiting time rata-rata dan turnaround time dari keempat proses tersebut dengan mengunakan algoritma SJF.
Average waiting time rata-rata untuk ketiga proses tersebut adalah sebesar (0 +6+3+7)/4=4 ms.
Average waiting time rata-rata untuk ketiga prses tersebut adalah sebesar (9+1+0+2)/4=3 ms.2. Misalnya ada 2 buah proses yang datang berurutan yaitu P1 dengan arrival time pada 0.0 ms dan burst time 10 ms, P2 dengan arrival time pada 2.0 ms dan burst time 2 ms.
Process Arrival Time Burst Time P1 0.0 10 P2 2.0 2
3. waiting time PSJF nya :
P1 = 0 + ( 4 ms – 2 ms ) = 2 ms
P2 = 0
Average waiting time : (2 ms + 0 ms ) / 2 = 2 ms
Average turn around : (12 ms + 0 ) / 2 = 12 ms
Tabel Solusi
Process Arrival Time Burst Time Waktu Mulai Waktu selesai Waiting Time Turn Around P1 0 10 0 12 2 12 P2 2 2 0 4 0 0 Average 2 12 Ada beberapa kekurangan dari algoritma ini yaitu:
- Susahnya untuk memprediksi burst time proses yang akan dieksekusi selanjutnya.
- Proses yang mempunyai burst time yang besar akan memiliki waiting time yang besar pula karena yang dieksekusi terlebih dahulu adalah proses dengan burst time yang lebih kecil.
Algoritma ini dapat dibagi menjadi dua bagian yaitu :
- Preemptive .Jika ada proses yang sedang dieksekusi oleh CPU dan terdapat proses di ready queue dengan burst time yang lebih kecil daripada proses yang sedang dieksekusi tersebut, maka proses yang sedang dieksekusi oleh CPU akan digantikan oleh proses yang berada di ready queue tersebut. Preemptive SJF sering disebut juga Shortest-Remaining- Time-First scheduling.
- Non-preemptive .CPU tidak memperbolehkan proses yang ada di ready queue untuk menggeser proses yang sedang dieksekusi oleh CPU meskipun proses yang baru tersebut mempunyai burst time yang lebih kecil.
9. Sebutkan jenis penjadwalan!
- Penjadwal jangka pendek (short-term scheduller). Penjadwalan jangka pendek bertugas menjadwalkan alokasi pemroses di antara proses-proses Ready yang berada di memori utama. sasaran utama penjadwal jangka pendek adalah memaksimumkan kinerja sistem untuk memenuhi satu kumpulan kriteria yang diharapkan. Penjadwal ini dijalankan setiap terjadi pengalihan proses untuk memilih proses berikutnya yang harus dijalankan.

- Penjadwal jangka menengah (medium-term scheduller). Setelah eksekusi selama suatu waktu, proses mungkin ditunda karena permintaan layanan masukan/keluaran atau memanggil suatu system call. Proses-proses yang tertunda tidak dapat membuat suatu kemajuan untuk menuju selesai sampai ondisi yang menyebabkannya hilang. Agar ruang memori dapat bermanfaat maka proses dipindah dari memori utama ke memori sekunder sehingga tersedia ruang yang lebih besar untuk proses yang lain. Kapasitas memori utama terbatas untuk sejumlah proses yang aktif. Aktivitas pemindahan proses yang tertunda dari memori utama ke memori sekunder disebut swapping. Penjadwal jangka menengah bertugas menangani proses swapping . Proses yang mempunyai kepentingan kecil saat itu adalah proses yang tertunda. Tetapi begitu kondii yang membuat proses tertunda hilang dan proses dimasukkan kembali ke memori utama dan Ready. Penjadwal jangka menengah mengendalikan transisi dari suspended ke ready (dari state suspend ke Ready dari proses yang mengalami swapping).

- Penjadwal jangka panjang (long-term scheduller). Penjadwal jangka panjang bekerja terhadap antrian batch dan memilih batch berikutnya yang harus dieksekusi sistem. Batch biasanya berupa proses-proses dengan penggunaan sumber daya yang intensif (yaitu waktu pemroses, memori, perangkat masukan/keluaran), program ini mempunyai prioritas yang rendah, dan biasa digunakan sebagai pengisi (agar pemroses sibu) selama periode aktivitas proses-proses interaktif rendah. Sasaran utama penjadwal jangka panjang adalah memberi keseimbangan proses-proses campuran. Tipe-tipe penjadwal dapat dikaitkan dengan state proses.
10. Definisikan perbedaan antara penjadwalan secara preemptive dan non preemptive!
Penjadwalan Non Preemptive
Jika proses sedang menggunakan CPU, proses tersebut akan membawa CPU sampai proses tersebut melepaskannya (berhenti dalam keadaan wait). Dapat dikatakan bahwa Non-Preemptive ini merupakan proses yang hanya dapat melakukan proses sekali run saja kemudian diselesaikan sampai akhir proses tersebut tanpa ada proses yang menyela proses ini.
Penjadwalan PreemptivePada saat proses sedang menggunakan CPU, CPU dapat diambil alih oleh proses lain.
Dalam hal ini harus selalu dilakukan perbaikan data. Proses ini adalah kebalikan dari proses Non-preemptive tadi yakni saat proses ini bekerja, maka proses dapat disela oleh proses lain sehingga prose ini akan kembali di proses setelah CPU menyelesaikan proses yang menyela tadi.
Jika proses sedang menggunakan CPU, proses tersebut akan membawa CPU sampai proses tersebut melepaskannya (berhenti dalam keadaan wait). Dapat dikatakan bahwa Non-Preemptive ini merupakan proses yang hanya dapat melakukan proses sekali run saja kemudian diselesaikan sampai akhir proses tersebut tanpa ada proses yang menyela proses ini.
Penjadwalan PreemptivePada saat proses sedang menggunakan CPU, CPU dapat diambil alih oleh proses lain.
Dalam hal ini harus selalu dilakukan perbaikan data. Proses ini adalah kebalikan dari proses Non-preemptive tadi yakni saat proses ini bekerja, maka proses dapat disela oleh proses lain sehingga prose ini akan kembali di proses setelah CPU menyelesaikan proses yang menyela tadi.
