tugas artikel thread sistem operasi program studi teknik

advertisement
TUGAS ARTIKEL THREAD
SISTEM OPERASI
NAMA
NIM
: OKY KURNIAWAN
: 14111057
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS MERCU BUANA YOGYAKARTA
KATA PENGANTAR
Puji syukur saya panjatkan kehadirat Tuhan Yang Maha Esa karena dengan rahmat, karunia,
serta taufik dan hidayah-Nya kami dapat menyelesaikan artikel tentang Thread ini dengan baik
meskipun banyak kekurangan didalamnya. Dan juga kami berterima kasih pada Bapak Ryan Ari
Setyawan selaku Dosen mata kuliah Sistem Operasi yang telah memberikan tugas ini kepada
penulis.
Kami sangat berharap artikel ini dapat berguna dalam rangka menambah wawasan serta
pengetahuan kita mengenai thread pada sistem operasi. Kami juga menyadari sepenuhnya bahwa di
dalam makalah ini terdapat kekurangan dan jauh dari kata sempurna. Oleh sebab itu, kami berharap
adanya kritik, saran dan usulan demi perbaikan makalah yang telah kami buat di masa yang akan
datang, mengingat tidak ada sesuatu yang sempurna tanpa saran yang membangun.
Semoga makalah sederhana ini dapat dipahami bagi siapapun yang membacanya. Sekiranya
laporan yang telah disusun ini dapat berguna bagi kami sendiri maupun orang yang membacanya.
Sebelumnya kami mohon maaf apabila terdapat kesalahan kata-kata yang kurang berkenan dan
kami memohon kritik dan saran yang membangun demi perbaikan di masa depan.
Yogyakarta, Oktober 2015
Penyusun
Thread
Thread adalah unit dasar dari penggunaan CPU, thread mengandung 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. 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.
Secara informal, proses adalah program yang sedang dieksekusi. Ada dua jenis proses, proses berat
(heavyweight) atau biasa dikenal dengan proses tradisional, dan proses ringan atau kadang disebut
thread.
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.
Keuntungan Thread
1. Responsi
Membuat aplikasi yang interaktif menjadi multithreading dapat membuat sebuah program terus
berjalan meskipun sebagian dari program tersebut diblok atau melakukan operasi yang panjang,
karena itu dapat meningkatkan respons kepada pengguna. Sebagai contohnya dalamweb
browser yang multithreading, sebuah thread dapat melayani permintaan pengguna sementara thread
lain berusaha menampilkan image.
2. Berbagi sumber daya
Thread berbagi memori dan sumber daya dengan thread lain yang dimiliki oleh proses yang sama.
Keuntungan dari berbagi kode adalah mengijinkan sebuah aplikasi untuk mempunyai beberapa
thread yang berbeda dalam lokasi memori yang sama.
3. Ekonomi
Dalam pembuatan sebuah proses banyak dibutuhkan pengalokasian memori dan sumber daya.
Alternatifnya adalah dengan penggunaan thread, karena thread berbagi memori dan sumber daya
proses yang memilikinya maka akan lebih ekonomis untuk membuat dan context switch thread.
Akan susah untuk mengukur perbedaan waktu antara proses dan thread dalam hal pembuatan dan
pengaturan, tetapi secara umum pembuatan dan pengaturan proses lebih lama dibandingkan thread.
4. Utilisasi arsitektur multiprocessor
Keuntungan dari multithreading bisa 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 ).
User Thread
User thread didukung oleh kernel dan diimplementasikan oleh thread library ditingkat pengguna.
Library mendukung untuk pembentukan thread, penjadualan, dan managemen yang tidak didukung
oleh kernel. User thread didukung diatas kernel dan diimplementasi oleh thread library pada user
level. Library menyediakan fasilitas untuk pembuatan thread, penjadwalan thread, dan manajemen
thread tanpa dukungan dari kernel. Karena kernel tidak menyadari user-level thread maka semua
pembuatan dan penjadwalan thread dilakukan di user space tanpa intervensi dari kernel. Oleh
karena itu, user -level thread biasanya cepat untuk dibuat dan diatur. Tetapi user thread mempunyai
kelemahan yaitu apabila kernelnya merupakan thread tunggal maka apabila salah satu user-level
thread menjalankan blocking system call maka akan mengakibatkan seluruh proses diblok walaupun
ada thread lain yang bisa jalan dalam aplikasi tersebut. Contoh user-thread libraries adalah POSIX
Pthreads, Mach C-threads, dan Solaris threads.
Kernel Threads
Kernel thread didukung secara langsung oleh sistem operasi. Pembentukan thread, penjadwalan,
dan manajemen dilakukan oleh kernel dalam ruang kernel. Karena managemen thread telah
dilakukan oleh sistem operasi maka pembuatan dan pengaturan kernel thread lebih lambat
dibandingkan user thread. Keuntungannya adalah thread diatur oleh kernel, karena itu jika sebuah
thread menjalankan blocking system call maka kernel bisa menjadwalkan thread lain di aplikasi
untuk melakukan eksekusi. Keuntungan lainnya adalah pada lingkungan multiprocessor, kernel bisa
menjadwal thread-thread pada processor yang berbeda. Contoh sistem operasi yang mendukung
kernel thread adalah Windows NT, Solaris, Digital UNIX.
Multithreading Models
1. One-to-One
One-to-One model memetakan setiap user thread ke kernel thread. Ia menyediakan lebih
banyak concurrency dibandingkan Many-to-One model. Keuntungannya sama dengan keuntungan
kernel thread. Kelemahannya model ini adalah setiap pembuatan user thread membutuhkan
pembuatan kernel thread. Karena pembuatan thread bisa menurunkan performa dari sebuah aplikasi
maka implmentasi dari model ini membatasi jumlah thread yang dibatasi oleh sistem. Contoh sistem
operasi yang mendukung One-to-One model adalah Windows NT dan OS/2.
2. Many-to-One model
Many-to-One model memetakan banyak user-level thread ke saru kernel thread. Pengaturan thread
dilakukan di user space, oleh karena itu ia efisien tetapi ia mempunyai kelemahan yang sama
dengan user thread. Selain itu karena hanya satu thread yang bisa mengakses thread pada suatu
waktu maka multiple thread tidak bisa berjalan secara pararel pada multiprocessor. User-level thread
yang diimplementasi pada sistem operasi yang tidak mendukung kernel thread menggunakan Manyto-One model. Contoh: Solaris Green Threads dan GNU Portable Threads.
3. Many-to-Many model
Many-to-many model multiplexes banyak user-level thread ke kernel thread yang jumlahnya lebih
kecil atau sama banyaknya dengan user-level thread. Jumlah kernel thread bisa spesifik untuk
sebagian aplikasi atau sebagian mesin. Many-to-One model mengijinkan developer ntuk membuat
user thread sebanyak yang ia mau tetapi concurrency tidak dapat diperoleh karena hanya satu thread
yang bisa dijadwal oleh kernel pada suatu waktu. One-to-One menghasilkan concurrency yang lebih
tetapi developer harus hati-hati untuk tidak menciptakan terlalu banyak thread dalam suatu
aplikasi(dalam beberapa hal, developer hanya bisa membuat thread dalam jumlah yang terbatas).
Many-to-Many model tidak menderita kelemahan dari 2 model di atas. Developer bisa membuat
user thread sebanyak yang diperlukan, dan kernel thread yang bersangkutan bisa bejalan secara
pararel pada multiprocessor. Dan juga ketika suatu thread menjalankan blocking system call maka
kernel dapat menjadwalkan thread lain untuk melakukan eksekusi. Contoh sistem operasi yang
mendukung model ini adalah Solaris, IRIX, dan Digital UNIX.
Thread Pools
Pada web server yang multithreading ada 2 masalah yang timbul :
1. Ukuran waktu yang diperlukan untuk menciptakan thread untuk melayani permintaan yang
diajukan terlebih pada kenyataannya thread dibuang ketika ia seketika sesudah ia menyelesaikan
tugasnya.
2. Pembuatan thread yang tidak terbatas jumlahnya dapat menurunkan performa dari sistem.
Solusinya adalah dengan penggunaan thread pools, cara kerjanya adalah dengan membuat beberapa
thread pada proses startup dan menempatkan mereka ke pools, dimana mereka duduk diam dan
menunggu untuk bekerja. Jadi ketika server menerima permintaan maka maka ia akan
membangunkan thread dari pool dan jika threadnya tersedia maka permintaan tersebut akan
dilayani. Ketika thread sudah selesai mengerjakan tugasnya maka ia kembali ke pool dan menunggu
pekerjaan lainnya. Bila tidak thread yang tersedia pada saat dibutuhkan maka server menunggu
sampai ada 1 thread yang bebas.
Keuntungan thread pool :
1. Biasanya lebih cepat untuk melayani permintaan dengan thread yang ada dibanding dengan
menunggu thread baru dibuat.
2. Thread pool membatasi jumlah thread yang ada pada suatu waktu. Hal ini pentingpada sistem
yang tidak bisa mendukung banyak thread yang berjalan secara concurrent .
Jumlah thread dalam pool bisa tergantung dari jumlah CPU dalam sistem, jumlah memori fisik,
dan jumlah permintaan klien yangconcurrent
Thread Cancellation
Thread cancellation adalah tugas untuk memberhentikan thread sebelum ia menyelesaikan
tugasnya. Sebagi contohnya jika dalam program java kita hendak mematikan JVM (Java Virtual
Machine) maka sebelum JVM-nya dimatikan maka seluruh thread yang berjalan dihentikan terlebuh
dahulu. Thread yang akan diberhentikan biasa disebut target thread.
Pemberhentian target thread bisa terjadi melalui 2 cara yang berbeda :
1. Asynchronous cancellation: suatu thread seketika itu juga memberhentikan target thread.
2. Defered cancellation: target thread secara perodik memeriksa apakah dia harus berhenti, cara
ini memperbolehkan target thread untuk memberhentikan dirinya sendiri secara terurut.
Hal yang sulit dari pemberhentian thread ini adalah ketika terjadi situasi dimana sumber daya sudah
dialokasikan untuk thread yang akan diberhentikan. Selain itu kesulitan lain adalah ketika thread
yang diberhentikan sedang meng-update data yang ia bagi dengan thread lain. Hal ini akan menjadi
masalah yang sulit apabila digunakan asynchronous cancellation. Sistem operasi akan mengambil
kembali sumber daya dari thread yang diberhentikan tetapi seringkali sistem operasi tidak
mengambil kembali semua sumber daya dari thread yang diberhentikan.
Alternatifnya adalah dengan menggunakan deffered cancellation. Cara kerja dari deffered
cancellation adalah dengan menggunakan 1 thread yang berfungsi sebagai pengindikasi bahwa
target thread hendak diberhentikan. Tetapi pemberhentian hanya akan terjadi jika target thread
memeriksa apakah ia harus berhenti atau tidak. Hal ini memperbolehkan thread untuk memeriksa
apakah ia harus berhenti pada waktu dimana ia bisa diberhentikan secara aman yang aman. Pthread
merujuk tersebut sebagai cancellation points .
Pada umumnya sistem operasi memperbolehkan proses atau thread untuk diberhentikan
secara asynchronous. Tetapi Pthread API menyediakan deferred cancellation. Hal ini berarti sistem
operasi yang mengimplementasikan Pthread API akan mengijinkan deferred cancellation.
Thread Java
Threads di Java dibuat dengan cara :
a. meng-extends class Threads
b. men-implement interface Runnable
Threads di Java diatur oleh Java Virtual Machine (JVM). Keunggulan Java Threads adalah:
a. JVM menggunakan prioritas preemptive berdasarkan algoritma penjadualan.
b. Semua threads di Java mempunyai prioritas. Prioritas tertinggi dijadualkan untuk dieksekusi oleh
JVM.
c. Jika ada 2 thread yang prioritasnya sama, digunakan algoritma First In First Out (FIFO).
Keadaan Threads di Java dibagi menjadi 4 keadaan :
a. new: sebuah thread pada keadaan ini ada ketika objek dari thread tersebut dibuat.
b runnable: memanggil start() method untuk mengalokasikan memori bagi thread baru dalam JVM
dan memanggil run() method untuk membuat objek.
c. block: sebuah thread akan diblok jika menampilkan sebuah kalimat pengeblokan. Contohnya:
sleep() atau suspend().
d. dead: sebuah thread dipindahkan ke keadaan dead ketika run() method berhenti atau ketika stop()
method dipanggil.
Thread Linux
Ketika pertama kali dikembangkan, Linux tidak didukung dengan threading di dalam kernelnya,
tetapi dia mendukung proses-proses sebagai entitas yang dapat dijadwalkan melalui clone() system
calls. Sekarang Linux mendukung penduplikasian proses menggunakan system call clone() dan
fork(). Clone() mempunyai sifat mirip dengan fork(), kecuali dalam hal pembuatan copy dari proses
yang dipanggil dimana ia membuat sebuah proses yang terpisah yang berbagi address space dengan
proses yang dipanggil. Pembagian address space dari parent processmemungkinkan cloned
task bersifat mirip dengan thread yang terpisah. Pembagian address space ini dimungkinkan karena
proses direpresentasikan di dalam Kernel Linux.
Di dalam Kernel Linux setiap proses direpresentasikan sebagai sebuah struktur data yang unik. Jadi,
daripada menciptakan yang baru maka struktur data yang baru mengandung pointer yang menunjuk
ke tempat dimana data berada. Jadi ketika fork() dipanggil, proses yang baru akan tercipta beserta
duplikasi dari segala isi di struktur data di parent process, namun ketika clone() dipanggil, ia tidak
menduplikasi parent processnya tetapi menciptakan pointer ke struktur data pada parent
process yang memungkinkan child process untuk berbagi memori dan sumber daya dari parent
processnya. Project LinuxThread menggunakan system call ini untuk mensimulasi thread di user
space. Sayangnya, pendekatan ini mempunyai beberapa kekurangan, khususnya di area signal
handling, scheduling, dan interprocess synchronization primitive.Untuk meningkatkan kemampuan
Thread Linux, dukungan kernel dan penulisan ulang pustaka thread sangat diperlukan.
Dua projectyang saling bersaing menjawab tantangan ini. Sebuah tim yang terdiri dari pengembang
dari IBM membuat NGPT (Next Generation POSIX Threads). Sementara pengembang dari Red
Hat membuat NPTL (Native POSIX Thread Library).Sebenarnya Linux tidak membedakan antara
proses dan thread. Dalam kenyataannya, Linux lebih menggunakan istilah task dibandingkan proses
dan thread ketika merujuk kepada pengaturan alur pengontrolan di dalam program.
Penjadwalan CPU
Penjadwalan CPU adalah pemilihan proses dari antrian ready untuk dapat dieksekusi. Penjadwalan
CPU juga merupakan konsep darimultiprogramming, dimana CPU digunakan secara bergantian
untuk proses yang berbeda. Suatu proses terdiri dari dua siklus yaitu Burst I/O danBurst CPU yang
dilakukan bergantian hingga proses selesai. Penjadwalan CPU mungkin dijalankan ketika proses:
1. running ke waiting time
2. running ke ready state
3. waiting ke ready state
4. terminates
Proses 1 dan 4 adalah proses Non Preemptive, dimana proses tersebut tidak bisa di- interrupt,
sedangkan 2 dan 3 adalah proses Preemptive, dimana proses boleh di interrupt.
Pada saat CPU menganggur, maka sistem operasi harus menyeleksi proses-proses yang ada di
memori utama (ready queue) untuk dieksekusi dan mengalokasikan CPU untuk salah satu dari
proses tersebut. Seleksi semacam ini disebut dengan shortterm scheduler (CPU scheduler).
·
Kriteria Penjadwalan
Algoritma penjadwalan CPU yang berbeda mempunyai property yang berbeda. Dalam memilih
algoritma yang digunakan untuk situasi tertentu, kita harus memikirkan properti yang berbeda untuk
algoritma yang berbeda. Banyak kriteria yang dianjurkan utnuk membandingkan penjadwalan CPU
algoritma. Kriteria yang biasanya digunakan dalam memilh adalah :
1. CPU Utilization
Kita ingin menjaga CPU sesibuk mungkin. CPU utilization akan mempunyai range dari 0 ke 100
persen. Di sistem yang sebenarnya seharusnya ia mempunyai range dari 40 persen samapi 90 persen
2. Throughput
Jika cpu sibuk mengeksekusi proses, jika begitu kerja telah dilaksanakan. Salah satu ukuran kerja
adalah banyak proses yang diselesaikan per unit waktu, disebut througput. Untuk proses yang lama
mungkin 1 proses per jam ; untuk proses yang sebentar mungkin 10 proses perdetik.
3. Turnaround time
Dari sudur pandang proses tertentu, kriteria yang penting adalah berapa lama untuk mengeksekusi
proses tersebut. Interval dari waktu yang dijinkan dengan waktu yang dibutuhkan untuk
menyelesaikan sebuah prose disebut turn around time. Trun around time adalah jumlah periode
untuk menunggu untuk bisa ke memori, menunggu di ready queue, eksekusi di CPU, dan
melakukan I/O.
4. Waiting time
Algoritma penjadwalan cpu tidak mempengaruhi waktu untuk melaksanakan proses tersebut atau
I/O; itu hanya mempengaruhi jumlah waktu yang dibutuhkan proses di antrian ready. Waiting time
adalah jumlah periode menghabiskan di antrian ready.
5. Response time
Di sistem yang interaktif, turnaround time mungkin bukan waktu yang terbaik untuk kriteria. Sering
sebuah proses bisa memproduksi output diawal, dan bisa meneruskan hasil yang baru sementara
hasil yang sebelumnya telah diberikan ke user. Ukuran yang lain adalah waktu dari pengiriamn
permintaan sampai respon yang pertama di berikan. Ini disebut response time, yaitu waktu untuk
memulai memberikan respon, tetapi bukan waktu yang dipakai output untu respon tersebut.
Biasanya yang dilakukan adalah memaksimalkan CPU utilization dan throughput, dan minimalkan
turnaround time, waiting time, dan response time dalam kasus tertentu kita mengambil rata-rata.
· Algoritma Penjadwalan
Penjadwalan CPU menyangkut penentuan proses-proses yang ada dalam ready queue yang akan
dialokasikan pada CPU. Terdapat beberapa algoritma penjadwalan CPU seperti dijelaskan pada
poin-poin di bawah ini.
§ First Come-First Served
Proses yang pertama kali meminta jatah waktu untuk menggunakan CPU akan dilayani terlebih
dahulu. Pada skema ini, proses yang meminta CPU pertama kali akan dialokasikan ke CPU pertama
kali. Rata-rata waktu tunggu (Average Waiting Time=AWT) cukup tinggi. Misalnya terdapat tiga
proses yang dapat dengan urutan P1, P2, dan P3 dengan waktu CPU-burst dalam milidetik yang
diberikan sebagai berikut :
Process
P1
P2
P3
Burst Time
24
3
3
Gant Chart dengan penjadwalan FCFS adalah sebagai berikut :
Waktu tunggu untuk P1 adalah 0, P2 adalah 24 dan P3 adalah 27 sehingga rata-rata waktu tunggu
adalah (0 + 24 + 27)/3 = 17 milidetik. Sedangkan apabila proses datang dengan urutan P2, P3,
dan P1, hasil penjadwalan CPU dapat dilihat pada gant chart berikut
Waktu tunggu sekarang untuk P1 adalah 6, P2 adalah 0 dan P3 adalah 3 sehingga rata-rata waktu
tunggu adalah (6 + 0 + 3)/3 = 3 milidetik. Rata-rata waktu tunggu kasus ini jauh lebih baik
dibandingkan dengan kasus sebelumnya. Pada penjadwalan CPU dimungkinkan terjadi Convoy
effect apabila proses yang pendek berada pada proses yang panjang. Algoritma FCFS termasuk nonpreemptive. karena, sekali CPU dialokasikan pada suatu proses, maka proses tersebut tetap akan
memakai CPU sampai proses tersebut melepaskannya, yaitu jika proses tersebut berhenti atau
meminta I/O.
§ Shortest Job
Pada penjadwalan SJF, proses yang memiliki CPU burst paling kecil dilayani terlebih dahulu.
Terdapat dua skema :
1. Non preemptive, bila CPU diberikan pada proses, maka tidak bisa ditunda sampai CPU burst
selesai.
2. Preemptive, jika proses baru datang dengan panjang CPU burst lebih pendek dari sisa waktu
proses yang saat itu sedang dieksekusi, proses ini ditunda dan diganti dengan proses baru. Skema
ini disebut dengan Shortest-Remaining- Time-First (SRTF).
SJF adalah algoritma penjadwalan yang optimal dengan rata-rata waktu tunggu yang minimal.
Misalnya terdapat empat proses dengan panjang CPU burst dalam milidetik.
Process
P1
P2
P3
P4
Arrival Time
0.0
2.0
4.0
5.0
Burst Time
7
4
1
4
Waktu tunggu untuk P1 adalah 0, P2 adalah 26, P3 adalah 3 dan P4 adalah 7 sehingga rata-rata
waktu tunggu adalah (0 + 6 + 3 + 7)/4 = 4 milidetik. Sedangkan Penjadwalan proses dengan
algoritma SRTF (preemptive) dapat dilihat pada gant chart berikut :
Waktu tunggu untuk P1 adalah 9, P2 adalah 1, P3 adalah 0 dan P4 adalah 4 sehingga rata-rata
waktu tunggu adalah (9 + 1 + 0 + 4)/4 = 3 milidetik.
Meskipun algoritma ini optimal, namun pada kenyataannya sulit untuk diimplementasikan karena
sulit untuk mengetahui panjang CPU burst berikutnya. Namun nilai ini dapat diprediksi. CPU
burst berikutnya biasanya diprediksi sebagai suatu rata-rata eksponensial yang ditentukan dari CPU
burst sebelumnya atau “Exponential Average”.
dengan:
τ n+1 = panjang CPU burst yang diperkirakan
τ 0 = panjang CPU burst sebelumnya
τ n = panjang CPU burst yang ke-n (yang sedang berlangsung)
α = ukuran pembanding antara τ n+1 dengan τ n (0 sampai 1)
Grafik hasil prediksi CPU burst dapat dilihat pada Gambar dibawah:
Sebagai contoh, jika α = 0,5, dan
CPU burst (τ n ) = 6 4 6 4 13 13 13 . . .
τ n = 10 8 6 6 5 9 11 12 . . .
Pada awalnya τ 0 = 6 dan τ n = 10, sehingga :
τ 2 = 0,5 * 6 + (1 - 0,5) * 10 = 8
Nilai yang dapat digunakan untuk mencari τ 3
τ 3 = 0,5 * 4 + (1 - 0,5) * 8 = 6
· Dispatcher
Dispatcher adalah suatu modul yang akan memberikan kontrol pada CPU terhadap penyeleksian
proses yang dilakukan selama short-term scheduling. Fungsi-fungsi yang terkandung di dalam-nya
meliputi:
§ Switching context;
§ Switching ke user-mode;
Waktu yang diperlukan oleh dispatcher untuk menghentikan suatu proses dan memulai untuk
menjalankan proses yang lainnya disebutdispatch latency. Karena dispatcher digunakan setiap
berpindah proses,dispatcher harus secepat mungkin.
· Priority
Algoritma SJF adalah suatu kasus khusus dari penjadwalan berprioritas. Tiaptiap proses dilengkapi
dengan nomor prioritas (integer). CPU dialokasikan untuk proses yang memiliki prioritas paling
tinggi (nilai integer terkecil biasanya merupakan prioritas terbesar). Jika beberapa proses memiliki
prioritas yang sama, maka akan digunakan algoritma FCFS. Penjadwalan berprioritas terdiri dari
dua skema yaitu non preemptive dan preemptive. Jika ada proses P1 yang datang pada
saat P0 sedang berjalan, maka akan dilihat prioritas P1. Seandainya prioritasP1 lebih besar
dibanding dengan prioritas P0, maka pada non-preemptive, algoritma tetap akan
menyelesaikan P0 sampai habis CPU burst-nya, dan meletakkan P1 pada posisi head queue.
Sedangkan pada preemptive, P0 akan dihentikan dulu, dan CPU ganti dialokasikan untukP1.
Misalnya terdapat lima proses P1, P2, P3, P4 dan P5 yang datang secara berurutan dengan CPU
burst dalam milidetik.
Process Burst
Time
Priority
P1
10
3
P2
1
1
P3
2
3
P4
1
4
P5
5
2
Waktu tunggu untuk P1 adalah 6, P2 adalah 0, P3 adalah 16, P4 adalah 18 dan P5 adalah 1
sehingga rata-rata waktu tunggu adalah (6 + 0 +16 + 18 + 1)/5 = 8.2 milidetik.
· Multiprocessor
Jelaskan Sistem Real Time , Sistem Hard Realtime, Soft Realtime, Gambarkan Grafiknya
Ø Sistem Real Time
Real time system disebut juga dengan sistem waktu nyata. Sistem yang harus menghasilkan
respon yang tepat dalam batas waktu yang telah ditentukan. Jika respon komputer melewati batas
waktu tersebut, maka terjadi degradasi performansi atau kegagalan sistem. Sebuah Real time system
adalah sistem yang kebenarannya secara logis didasarkan pada kebenaran hasil-hasil keluaran
sistem dan ketepatan waktu hasil-hasil tersebut dikeluarkan. Aplikasi penggunaan sistem seperti ini
adalah untuk memantau dan mengontrol peralatan seperti motor, assembly line, teleskop, atau
instrumen lainnya. Peralatan telekomunikasi dan jaringan komputer biasanya juga membutuhkan
pengendalian secara Real time.
Komponen
dari
1.
2.
Sistem
3.
Bahasa
4. Sistem Komunikasi.
Real
time
Perangkat
Operasi
Pemrograman
system
ini
Real
Real
adalah:
keras,
time,
time,
Suatu sistem komputasi dinamakan real-time jika sistem tersebut dapat mendukung eksekusi
program / aplikasi dengan waktu yang memiliki batasan, atau dengan kata lain suatu sistem realtime harus memiliki :
a. Batasan waktu dan memenuhi deadline, artinya bahwa aplikasi harus menyelesaikan tugasnya
dalam waktu yang telah dibatasi atau ditentukan.
b. Dapat diprediksi, artinya bahwa sistem harus bereaksi terhadap semua kemungkinan kejadian
selama kejadian tersebut dapat diprediksi.
c. Proses bersamaan, artinya jika ada beberapa proses yang terjadi bersamaan, maka
semua deadline nya harus terpenuhi.
d. Dapat mengerjakan hal-hal yang penting saja, yang tidak penting tidak perlu dikerjakan.
e. Membuat processor agar bekerja lebih cepat, sehingga dapat ditingkatkan jumlah task yang
diselesaikan.
f. Menemukan tingkat effisiensi waktu.
Ø Sistem Hard Realtime
Sistem hard real-time dibutuhkan untuk menyelesaikan critical task dengan jaminan waktu
tertentu. Jika kebutuhan waktu tidak terpenuhi, maka aplikasi akan gagal. Dalam definisi lain
disebutkan bahwa kontrol sistem hard real-time dapat mentoleransi keterlambatan tidak lebih dari
100 mikro detik.Secara umum, sebuah proses di kirim dengan sebuah pernyataan jumlah waktu
dimana dibutuhkan untuk menyelesaikan atau menjalankan I/O. Kemudian penjadwal dapat
menjamin proses untuk selesai atau menolak permintaan karena tidak mungkin dilakukan.
Mekanisme ini dikenal dengan resource reservation. Oleh karena itu setiap operasi harus dijamin
dengan waktu maksimum. Pemberian jaminan seperti ini tidak dapat dilakukan dalam sistem
dengan secondary storage atau virtual memory, karena sistem seperti ini tidak dapat meramalkan
waktu yang dibutuhkan untuk mengeksekusi suatu proses. Diagramhard real-time dapat dilihat
seperti Gambar berikut ini.
Contoh:
Dalam kehidupan sehari-hari adalah pada sistem pengontrol pesawat terbang. Dalam hal ini,
keterlambatan sama sekali tidak boleh terjadi,karena dapat berakibat tidak terkontrolnya pesawat
terbang. Nyawa penumpang yang ada dalam pesawat tergantung dari sistem ini, karena jika sistem
pengontrol tidak dapat merespon tepat waktu, maka dapat menyebabkan kecelakaan yang
merenggut korban jiwa.
Ø Soft Realtime
Komputasi soft real-time memiliki sedikit kelonggaran. Dalam sistem ini,proses yang kritis
menerima prioritas lebih daripada yang lain. Walaupun menambah fungsi soft real-time ke sistem
time sharing mungkin akan mengakibatkan ketidakadilan pembagian sumber daya dan
mengakibatkan delay yang lebih lama, atau mungkin menyebabkan starvation, hasilnya adalah
tujuan secara umum sistem yang dapat mendukung multimedia, grafik berkecepatan tinggi, dan
variasi tugas yang tidak dapat diterima di lingkungan yang tidak mendukung komputasi soft realtime. Diagram soft real-time dapatdilihat seperti gambar berikut ini.
Contoh:
Penerapan sistem ini dalam kehidupan sehari-hari adalah pada alat penjual/pelayan
otomatis. Jika mesin yang menggunakan sistem ini telah lama digunakan, maka mesin tersebut
dapat mengalami penurunan kualitas,misalnya waktu pelayanannya menjadi lebih lambat
dibandingkan ketika masih baru. Keterlambatan pada sistem ini tidak menyebabkan kecelakaan atau
akibat fatal lainnya, melainkan hanya menyebabkan kerugian keuangan saja. Jika pelayanan mesin
menjadi lambat, maka para pengguna dapat saja merasa tidak puas dan akhirnya dapat menurunkan
pendapatan pemilik mesin.
Setelah batas waktu yang diberikan telah habis, pada sistem hard realtime,aplikasi yang
dijalankan langsung dihentikan. Akan tetapi, pada sistem softreal-time, aplikasi yang telah habis
masa waktu pengerjaan tugasnya,dihentikan secara bertahap atau dengan kata lain masih diberikan
toleransi waktu.
Mengimplementasikan fungsi soft real-time membutuhkan design yang hati-hati dan aspek
yang berkaitan dengan sistem operasi. Pertama,sistem harus punya prioritas penjadualan, dan proses
real-time harus memiliki prioritas tertinggi, tidak melampaui waktu, walaupun prioritas non realtime dapat terjadi.Kedua, dispatch latency harus lebih kecil. Semakin kecil latency, semakin cepat
real-time proses mengeksekusi.
Untuk menjaga dispatch tetap rendah, kita butuh agar system call untuk preemptible. Ada
beberapa cara untuk mencapai tujuan ini. Pertama adalah dengan memasukkan preemption points di
durasi system call yang lama, yang memeriksa apakah prioritas utama butuh untuk dieksekusi. Jika
sudah, maka contex switch mengambil alih, ketika high priority proses selesai, proses yang
diinterupsi meneruskan dengan system call. Points premption dapat diganti hanya di lokasi yang
aman di kernel dimana kernel struktur tidak dapat dimodifikasi.
Metoda yang lain adalah dengan membuat semua kernel preemptible. Karena operasi yang
benar dapat dijamin, semua struktur data kernel harus diproteksi dengan mekanisme sinkronisasi.
Dengan metode ini, kernel dapat selalu di preemptible, karena setiap data kernel yang sedang
di update diproteksi dengan pemberian prioritas yang tinggi. Jika ada proses dengan prioritas tinggi
ingin membaca atau memodifikasi data kernel yang sedang dijalankan, prioritas yang tinggi harus
menunggu sampai proses dengan prioritas rendah tersebut selesai. Situasi seperti ini dikenal
dengan priority inversion. Kenyataanya, serangkaian proses dapat saja mengakses sumber daya
yang sedang dibutuhkan oleh proses yang lebih tinggi prioritasnya. Masalah ini dapat diatasi
dengan priority-inheritance protocol, yaitu semua proses yang sedang mengakses sumber daya
mendapat prioritas tinggi sampai selesai menggunakan sumber daya. Setelah selesai, prioritas
proses ini dikembalikan menjadi seperti semula.
Penjadwalan AMP
Asymetric
multiprocessing
Asymmetric
Multiprocessing, atau AMP, adalah pengganti
sementara perangkat
lunak untuk menangani beberapa CPU sebelumSymmetric Multiprocessing atau SMP yang tersedia.
Pendekatan pertama untuk penjadwalan multiprosessor adalah penjadwalan asymmetric
multiprocessing atau biasa disebut juga sebagai penjadwalan Master Slave MultiProcessor. Dimana
pada metode ini satu prosesor bertindak sebagai master dan prosesor lainnya sebagai slave. Master
Processor bertugas untuk menjadualkan dan mengalokasikan proses yang akan dijalankan
oleh Slave Processors. Master Processor melakukan pekerjaan yang berhubungan dengan System,
Slave Processor melayani user requests dalam pengeksekusian program. Pemrosesan yang banyak
tidak menyebabkan penurunan performance. Metode ini sederhana karena hanya satu prosesor yang
mengakses struktur data sistem dan juga mengurangi data sharing. Sebagai contoh,
prosesor master memilih proses yang akan dieksekusi, kemudian mencari prosesor yang available,
dan memberikan instruksi start processor. Prosesor slave memulai eksekusi pada lokasi memori
yang dituju. Saat slave mengalami sebuah kondisi tertentu, prosesor slave memberi interupsi kepada
prosesormaster dan berhenti untuk menunggu perintah selanjutnya. Perlu diketahui bahwa
prosesor slave yang berbeda dapat ditujukan untuk suatu proses yang sama pada waktu yang
berbeda. Master processor dapat mengeksekusi OS dan menangani I/O, sedangkan sisanya
processor tidak punya kemampuan I/O dan disebut sebagai Attached Processor (Aps). APs
mengeksekusi kodekode user dibawah pengawasan master processor.
Penjadwalan SMP
Penjadwalan SMP adalah pendekatan kedua untuk penjadwalan prosesor jamak. Pada
metode ini setiap prosesor menjadwalkan dirinya sendiri (self scheduling). Penjadwalan terlaksana
dengan menjadwalkan setiap prosesor untuk memeriksa antrian ready dan memilih suatu proses
untuk dieksekusi. Jika suatu sistem prosesor jamak mencoba untuk mengakses dan
mengupdate suatu struktur data, penjadwal dari prosesor-prosesor tersebut harus diprogram dengan
hati-hati, kita harus yakin bahwa dua prosesor tidak memilih proses yang sama dan proses tersebut
tidak hilang dari antrian. Secara virtual, semua sistem operasi modern mendukung SMP, termasuk
Windows XP, Windows 2000, Windows Vista, Solaris, Linux, dan Mac OS X.
a. Jelaskan Load Balancing
Dalam sistem SMP, sangat penting untuk menjaga keseimbangan workload (banyaknya task yang
harus diselesaikan oleh prosesor)antara semua prosesor untuk memaksimalkan keuntungan
memiliki multiprocessor. Jika tidak, mungkin satu atau lebih prosesor idle disaat prosesor lain harus
bekerja
keras
dengan workload yang
tinggi. Load
balancing adalah
usaha
untuk
menjaga workload terdistribusi sama rata untuk semua prosesor dalam sistem SMP. Perlu
diperhatikan bahwa load balancing hanya perlu dilakukan pada sistem dimana setiap prosesor
memiliki antrian tersendiri( private queue) untuk proses-proses yang berstatus ready. Pada sistem
dengan antrian yang biasa (common queue), load balancing tidak diperlukan karena sekali prosesor
menjadi idle, prosesor tersebut segera mengerjakan proses yang dapat dilaksanakan dari antrian
biasa tersebut. Perlu juga diperhatikan bahwa pada sebagian besar sistem operasi kontemporer
mendukung SMP, jadi setiap prosesor bisa memiliki private queue. Ada dua jenis load
balancing, yakni:
· Push migration, pada kondisi ini ada suatu task spesifik yang secara berkala
memeriksa load dari tiap-tiap prosesor. Jika terdapat ketidakseimbangan, maka dilakukan perataan
dengan memindahkan( pushing) proses dari yang kelebihan muatan ke prosesor yangidle atau yang
memiliki muatan lebih sedikit.
· Pull migration, kondisi ini terjadi saat prosesor yang idle menarik( pulling) proses yang sedang
menunggu dari prosesor yang sibuk.
Kedua pendekatan tersebut tidak harus mutually exclusive dan dalam kenyataannya sering
diimplementasikan secara paralel pada sistem load-balancing.
b. Jelaskan Symetric Multhithreading
SMT (Symetric Multithreading) adalah strategi alternatif untuk menjalankan
beberapa thread secara bersamaan. Sistem SMP mengizinkan beberapa thread untuk berjalan secara
bersamaan dengan menyediakan banyak physical processor. Ada sebuah strategi alternatif yang
lebih cenderung untuk menyediakan logical processor daripada physical processor. Strategi ini
dikenal sebagai Symetric Multithreading (SMT). SMT juga biasa disebut teknologi hyperthreading
dalam prosessor intel. Ide dari SMT adalah menciptakan banyak logical prosessor dalam suatu
physical.
Prosessor yang sama mempresentasikan beberapa prosessor kepada sistem operasi. Setiap
logical prosessor mempunyai state arsitekturnya sendiri yang mencakup general purpose dan
machine state register. Lebih jauh lagi, setiap logical prosessor bertanggung jawab pada penanganan
interupsinya sendiri, yang brarti bahwa interupsi cenderung dikirimkan ke logical prosessor dan
ditangani oleh logical processor bukan physical prosessor. Denagn kata lain, setiap logical prosessor
membagi resource dari physical prosessornya seperti chace dan bus.
Gambar diatas mengilustrasikan suatu tipe arsitektur SMT dengan dua physical prosessor dengan
masing-masing punya ua logical processor. Dari sudut pandang sistem operasi pada sistem ini
terdapat empat prosessor.
Perlu diketahui bahwa SMT adalah fitur yang disediakan dalam hardware, bukan software.
Sehingga hardware harus menyediakan representasi state arsitektur dari setiap logical prosessor
sebagaimana representasi dari penanganan interupsinya. Sistem operasi tidak perlu didesain khusus
jika berjalan pada sistem SMT, akan tetapi performa yang diharapkan tidak selalu terjadi pada
sistem operasi yang berjalan pada SMT. Misalnya suatu sistem memiliki 2 physical prosessor,
keduanya idle, penjadwal pertama kali akan lebih memilih untuk membagi thread ke physical
prosessor daripada membaginya ke logical processor dalam physical prosessor yang sama, sehingga
logical prosessor pada suatu physical prosessor bisa menjadi sibuk sedangkan physical prosesso
yang lain menjadi idle.
· Microcernels, kategori kernel, keuntungan kernel
Mikrokernel
Dalam pengetahuan ilmu komputer, mikrokernel merupakan seperangkat perangkat lunak
dalam jumlah minimum yang meyediakan beragam mekanisme dasar yang dibutuhkan untuk
bekerja sebagai sebuah sistem operasi, seperti halnya manajemen pengalamatan ruang tingkat
rendah, manajemen thread, dan komunikasi antar proses. Dalam implementasinya mikrokernel
merupakan satu-satunya perangkat lunak yang berjalan dengan tingkat kewenangan tertinggi
(umumnya disebut sebagai modus supervisor atau modus kernel) dari serangkaian level
kewenangan yang tersedia pada perangkat kerasnya. Layanan yang disediakan oleh sebuah sistem
operasi beberapa diantaranya adalah device driver, protokol jaringan, sistem berkas, dan kode
antarmuka pengguna yang berada dalam ruang pengguna
Mikrokernel sangat erat terkait dengan exokernel , serta memiliki banyak kesamaan dengan
hypervisor, namun implementasinya lebih bersifat minimalis, dan secara spesifik untuk mendukung
pengimplementasian mesin virtual. Mikrokernel L4 sering juga disebut sebagaihypervisor, yang
mengindikasikan kemungkinan pengimplementasian sebuah mikrokernel sebagai hypervisor. Istilah
nanokernel dalam sejarahnya digunakan untuk membedakan mikrokernel saat ini dengan istilah
mikrokernel sebelumnya yang menyediakan layanan sistem aktual, namun secara prinsip
minimalitas menurut Jochen Liedtke dalam disain mikrokernel L4 menyebutkan bahwa istilahistilah tersebut memiliki arti yang kurang lebih sama.
Karena sebuah mikrokernal harus dapat meletakkan layanan-layanan sistem operasi pada level
teratas, fungsionalitas yang harus dimiliki oleh mikrokernel setidaknya melingkupi:
· Mekanisme pengaturan pengalamatan ruang, dibutuhkan untuk mengatur proteksi ingatan.
· Mekanisme eksekusi secara abstrak untuk mengatur alokasi CPU biasanya adalah thread atau
pengaktifan penjadual; dan
· Komunikasi antarproses dibutuhkan untuk menyediakan mekanisme pemanggilan peladen yang
berjalan pada alamat ruang spesifik.
Pada umumnya mikrokernel mendukung proses dan menajemen memori yang minimal, sebagai
tambahan untuk fasilitas komunikasi. Fungsi utama mikrokernel adalah mendukung fasilitas
komunikasi antara program klien dan bermacam-macam layanan yang juga berjalan di user space.
Komunikasi yang dilakukan secara tidak langsung, didukung oleh sistem message passing, dengan
bertukar pesan melalui mikrokernel.
Salah satu keuntungan mikrokernel adalah ketika layanan baru akan ditambahkan ke user space,
kernel tidak perlu dimodifikasi. Kalau pun harus, perubahan akan lebih sedikit. Hasil sistem
operasinya lebih mudah untuk ditempatkan pada suatu desain perangkat keras ke desain lainnya.
Mikrokernel juga mendukung keamanan reliabilitas lebih, karena kebanyakan layanan berjalan
sebagai pengguna proses. Jika layanan gagal, sistem operasi lainnya tetap terjaga.
Beberapa sistem operasi yang menggunakan microkernel:
· IBM AIX, sebuah versi UNIX dari IBM
· Amoeba, sebuah kernel yang dikembangkan untuk tujuan edukasi
· Kernel Mach, yang digunakan di dalam sistem operasi GNU/Hurd, NexTSTEP, OPENSTEP,
dan Mac OS/X
· Minix, kernel yang dikembangkan oleh Andrew Tanenbaum untuk tujuan edukasi
· Symbian OS, sebuah sistem operasi yang populer digunakan pada hand phone, handheld
device, embedded device, dan PDA Phone.
Kelebihan Mikrokernel
1. Ketika layanan baru akan ditambahkan ke user-space,kernel tidak perlu dimodifikasi.
2. Mendukung keamanan reliabilitas lebih, karena sebagianbesar pada level pengguna, SO jadi
terjaga.
3. Interface yang seragam. Proses tidak lagi dibedakan, baik antara kernel-level maupun userlevel,karena semuanya berkomunikasi via message passing.
4. Extensibility. Bisa menambahkan fitur-fitur baru tanpa perlu melakukan kompilasi ulang.
5. Flexibility. Fitur-fitur yang sudah ada bisa dikurangi, atau dimodifikasi sesuai dengan kebutuhan
sehingga menjadi lebih efisien. Misalnya tidak semua pengguna membutuhkan security yang sangat
ketat, atau kemampuan untuk melakukan distributed computing.
6. Portability. Pada mikro kernel, semua atau sebagian besar kode yang prosesor-spesifik berada di
dalamnya. Jadi, proses porting ke prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada
kelompok desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai seberapa lama itu
bisa bertahan? Karena itulah, portability adalah salah satu isu yang sangat penting.
7. Reliability. Semakin besar suatu software, maka tentulah semakin sulit untuk menjamin
reliabilitynya. Desain dengan pendekatan berlapis sangatlah membantu, dan dengan pendekatan
mikro kernel bisa lebih lagi. Mikro kernel dapat diuji secara ekstensif karena dia menggunakan API
yang sedikit,sehingga bisa meningkatkan kualitas code di luar kernel.
8. Support for object-oriented OS. Model mikro kernel sangat sesuai untuk mengembangkan sistem
operasi yang berbasis object-oriented. Contoh sistem operasi yang menggunakan mikro kernel
adalah Mac OS X dan QNX.
Kinerja Mikrokernel
Untuk mengatur kegiatan proses mereka perlu saling berkomunikasi. Linux mendukung berbagai
mekanisme komunikasi antar proses (KAP). Sinyal dan pemipaan merupakan dua di antaranya, tapi
linux juga mendukung system sistem ke lima mekanisme KAP. Manajemen I/O berguna Untuk
mengelola perangkat masukan/keluaran, dimana perangkat tersebut digunakan proses tertenty,
sehingga perlu dijaga agar proses lain tidak memakainya. Sistem operasi perlu mengetahui status
operasi masukan/keluaran dan lokasi memori utama yang digunakan untuk transfer data.
Rancangan Mikrokernel
a. Manajemen memory level bawah (lowlevel):Memetakan setiap page virtual ke frame fisik.
Sebagian besar tugas manajemen memory terjadi dalam user space.
b. Komunikasi antar proses (Interprocess Communication) atau thread dalam suatu SO mikrokernel
adalah melalui message.
Suatu message menyertakan:
§ Header yang mengidetifikasi proses pengiriman dan penerimaan, dan
§ Body yang mengandung data langsung, pointer ke suatu block data, atau beberapa informasi
kontrol mengenai proses.
c. Manajemen I/O & Interrupt
Di dalam mikrokernel, adalah mungkin menangani interupsi hardware sebagai message dan
menyertakan port I/O dalam ruang alamat. - Proses user-level tertentu dilewatkan ke interrupt &
kernel memelihara pemetaan tersebut.
ü Kategori Cernels
Kernel adalah suatu perangkat lunak yang menjadi bagian utama dari sebuah sistem operasi.
Ada 4 kategori kernel:
1. Monolithic kernel. Kernel yang menyediakan abstraksi perangkat keras yang kaya dan
tangguh.
2. Microkernel. Kernel yang menyediakan hanya sekumpulan kecil abstraksi perangkat keras
sederhana, dan menggunakan aplikasi-aplikasi yang disebut sebagai server untuk menyediakan
fungsi-fungsi lainnya.
3. Hybrid (modifikasi dari microkernel). Kernel yang mirip microkernel, tetapi ia juga
memasukkan beberapa kode tambahan di kernel agar ia menjadi lebih cepat.
4. Exokernel. Kernel yang tidak menyediakan sama sekali abstraksi hardware, tapi ia
menyediakan sekumpulan pustaka yang menyediakan fungsi-fungsi akses ke perangkat keras secara
langsung atau hampir-hampir langsung. Keuntungan Cernels
Salah satu keuntungan kernel yang bersifat modular, berganti-ganti hardware menjadi lebih mudah,
karena anda tinggal menge-probe suatu modul, atau jika belum ada anda tinggal mem-build satu
modul saja. Kerugiannya adalah relatif rentan terhadapat masalah security, karena biasanya script
kiddies memasukkan suatu modul ke dalam kernel (dengan harapan proses yang dimilikinya tidak
diketahui oleh admin sistem yang bersangkutan).
Download