Laporan Tugas Scheduling Pengantar Sistem Operasi

advertisement
Laporan Tugas Scheduling
Pengantar Sistem Operasi
Kelas E
Anggota Kelompok:




Cindy Alicia Sahara (5214100172)
Ratih Kinanti A (5214100174)
Patricia Hanna S (5214100177)
Indriarti Kusumanita (5214100178)
Institut Teknologi Sepuluh Nopember
Jurusan Sistem Informasi
Materi ke-3: Semaphor
Semaphore adalah sebuah konsep kodingan yang dibentuk oleh E.W Djikstra pada tahun 1960an. Model Dijkstra adalah operasi dari rel kereta api: anggap saja ada sebuah rel kereta
terbentang dimana pada rel itu hanya boleh ada satu kereta yang lewat pada satu waktu.
Yang mengatur pekerjaan rel ini adalah Semaphore. Sebuah kereta harus menunggu sampai
sebuah Semaphore memberi sinyal bahwa kereta tersebut bisa lewat. Ketika kereta sedang
berada di rel tersebut, Semaphore kemudian akan menghindari kereta lain agar tidak masuk ke
dalam rel selama masih ada kereta yang menggunakan rel tersebut. Kereta yang telah
meninggalkan rel kemudian akan merubah status Semaphore agar dapat mengizinkan kereta lain
lewat rel tersebut.
Jadi, Semaphore pada dasarnya adalah pendekatan yang diajukan oleh Djikstra, dengan prinsip
bahwa dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda
sederhana. Semaphore diperiksa oleh semua kernel thread sebelum kernel thread tersebut
mencoba untuk mengakses struktur data.
Semaphore mempunyai dua sifat, yaitu:
1. Semaphore dapat diinisialisasi dengan nilai non-negatif.
2. Terdapat dua operasi terhadap semaphore, yaitu Wait dan Signal.
Terdapa dua jenis Semaphore, yaitu:
1. Binary semaphore. Semaphore ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai
semaphore primitif
2. Counting semaphore. Semaphore ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem
operasi yang tidak secara langsung mengimplementasikan semaphore ini, tetapi dengan
memanfaatkan binary semaphore
Prinsip semaphore :
– Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana
– Proses dipaksa berhenti sampai proses memperoleh penanda tertentu
– Variabel khusus untuk penandaan ini disebut Semaphore
Keuntungan menggunakan Semaphore:
1. Dari segi programming, penanganan masalah sinkronisasi dengan Semaphore umumnya rapi
dan teratur, sehingga mudah untuk dibuktikan kebenarannya
2. Semaphore diimplementasikan dalam hard code sehingga penggunaannya bersifat portabel
Kerugian menggunakan Semaphore:
Busy waiting. Apabila suatu proses menempati critical section, dan ada proses lain yang ingin
masuk critical section, maka akan terjadi iterasi secara terus-menerus pada entry section. Hal ini
akan menimbulkan masalah pada sistem yang menggunakan konsep multiprogramming.
Contoh Semaphore
Terdapat 2 buah thread seperti dibawah ini :
thread A :
count = count+2
thread B :
count = count-1
Thread A dan B mengakses variabel yang sama, yaitu variabel count sehingga kedua thread
tersebut harus berjalan secara bergantian. Karena itulah digunakan binary semaphore dengan
nilai awal 1.
thread A :
kunci (mutex);
count = count+2
buka (mutex)
thread B :
kunci (mutex);
count = count-1
buka(mutex)
Thread yang mengeksekusi kunci terlebih dahulu akan berjalan terus, sedangkan thread yang
selanjutnya akan menunggu sampai thread yang berjalan terlebih dahulu mengeksekusi buka,
setelah itu kedua thread berjalan lagi dengan normal.
Monitor
Monitor adalah suatu tipe abstrak yang memiliki tugas untuk mengatur aktivitas serta
managemen resource oleh beberapa thread. Monitor pertama kali dikenalkan pada tahun
1970. Monitor terdiri atas data-data private dengan fungsi public yang dapat mengakses data
tersebut. Method yang terdapat dalam suatu monitor sudah dibuat sedemikian rupa agar hanya
ada satu method yang dapat bekerja dalam suatu waktu. Hal ini dilakukan untuk menjaga agar
semua operasi dalam monitor bersifat mutual exclusion.
Monitor memiliki beberapa status, yaitu
1. Enter : Kondisi dimana thread memasuki monitor
2. Acquire : Kondisi dimana thread memasuki ruang kontrol
3. Owning : Kondisi dimana thread menyelesaikan tugasnya dengan membagi resource yang
berada di ruang kontrol
4. Release : Kondisi dimana thread belum menyelesaikan tugasnya namun waktunya sudah
habis, maka thread melepaskan kendali atas monitor
5. Waiting queue : Tempat thread menunggu thread lain selesai
6. Release and exit : Kondisi dimana thread sudah menyelesaikan tugasnya dan keluar dari
monitor
Karena masalah sinkronisasi begitu rumit dan beragam, monitor menyediakan tipe
data condition untuk programmer yang ingin menerapkan sinkronisasi yang sesuai untuk
masalah yang dihadapinya. Condition memiliki operasi-operasi:
1. Wait, sesuai namanya thread yang memanggil fungsi ini akan dihentikan kerjanya.
2. Signal, jika suatu thread memanggil fungsi ini, satu (dari beberapa) thread yang sedang
menunggu akan dibangunkan untuk bekerja kembali. Operasi ini hanya membangunkan tepat
satu buah thread yang sedang menunggu. Jika tidak ada thread yang sedang menunggu, tidak
akan terjadi apa-apa (bedakan dengan operasi buka pada semaphore).
Monitor juga dapat disebut sebagai mini-OS, karena konsep monitor sangat mirip dengan sebuah
sistem operasi. Satu dapat mempertimbangkan inisialisasi sebagaimana data yang diinisialisasi
ketika sistem boot up, data pribadi dan kode sebagai struktur data internal dan fungsi dari sebuah
sistem operasi, dan prosedur monitor sebagai panggilan sistem. Program-program, tentu saja,
benang yang membuat permintaan layanan. Oleh karena itu, monitor bisa dianggap sebagai miniOS dengan layanan terbatas.
Kelebihan monitor
1. Dapat mengatasi sinkronisasi tanpa perlu melibatkan programmer.
2. Kompilator pada bahasa pemrograman yang telah mengimplementasikan monitor akan
memastikan bahwa resource yang dapat diakses oleh beberapa thread dilindungi oleh monitor,
sehingga prinsip mutual exclusion tetap terjaga.
3. Kompilator bisa memeriksa kemungkinan adanya deadlock.
4. Pengecekan error yang berhubungan dengan mutex dapat dilakukan secara terpusat hanya pada
modul monitor saja sehingga lebih efisien.
5. Ketika program monitor sudah benar tanpa error maka akses terhadap critical resource oleh
berbagai macam proses akan selalu benar.
Kelemahan monitor
1. Bila setiap signal csignal (fungsi sinkronisasi dalam monitor) selalu hilang maka proses yang
ada dalam antrian juga akan di blok.
2. Kurang efisien dalam mengembalikan proses yang sudah di blok.
3. Memerlukan mekanisme penjadwalan proses yang benar-benar handal karena pengaturan
proses dalam monitor yang sangat ketat.
Bentuk dasar monitor:
monitor example
i : integer;
c : condition;
Procedure producer(x);
.
.
End;
Procedure consumer(x);
.
.
End;
End monitor;
Contoh penggunaan monitor pada Java Virtual Machine (JVM), Java Virtual Machine memakai
monitor untuk sinkronisasi thread.
Synchronized Statements. Untuk membuat sebuah synchronized statement, gunakan keyword
synchronized dengan ekspresi yang me-refer ke suatu object contoh:
void reverseOrder()
{
synchronized(this)
{
/*ekspresi method*/
}
}
Synchronized Methods. untuk membuat suatu synchronized methods, cukup dengan
menambahkan keyword synchronized di depan nama method tersebut pada deklarasinya contoh:
synchronized void reverseOrder()
{
/*ekspresi method*/
}
Implementasi monitor dengan semaphore:
Message Passing
Message passing adalah model programming parallel dimana pesan yang disampaikan untuk
dapat berhungan dengan mengirimkan dan menerima pesan satu sama lainnya. Sebuah pesan
yang dikirim akan disampaikan ke penerima dan kemudian memproses request tersebut dan
dikirimkan pesan balasan. Pesan balasan akan memicu request lainnya dan berlanjut ke pesan
berikutnya dan seterusnya.
Sistem ini disebut juga sebagai proses berkomunikasi antar bagian sistem untuk membagi
variable yang dibutuhkan. Ini menyediakan dua operasi yaitu mengirim dan menerima pesan.
Agar kedua sistem dapat berkomunikasi, maka harus dibuat sebuah link komunikasi antar
keduanya. Sistem berkirim pesan sangat penting dalam sistem operasi dan dapat
diimplementasikan dalam banyak hal seperti pembagian memori, pembagian bus, dan
melaksanakan proses yang membutuhkan pengerjaan bersama antara beberapa bagian sistem
operasi.
Terdapat dua macam jenis komunikasi yang dapat dilakukan yaitu:
Komunikasi langsung
Setiap proses yang ingin berkomunikasi harus memiliki nama yang bersifat eksplisit baik
penerimaan atau pengirim. Dalam konteks ini, pengiriman dan penerimaan pesan secara
primitivedijabarkan sebagai :
– Send (P, message) – mengirim sebuah pesan ke proses P.
– Receive (Q, message) – menerima sebuah pesan dari proses Q.
Komunikasi langsung memiliki sifat:
1. Sebuah jaringan didirikan secara otomatis diantara setiap pasang dari proses yang ingin
dikomunikasikan. Proses tersebut harus mengetahui identitas dari semua yang ingin
dikomunikasikan.
2. Sebuah jaringan adalah terdiri dari penggabungan dua proses.
3. Diantara setiap pesan dari proses terdapat tepat sebuah jaringan.
Komunikasi tidak langsung
Pada komunikasi tidak langsung, pesan akan dikirimkan pada dan diterima dari/ melalui mailbox
(kotak surat) atau terminal-terminal. Sebuah mailbox dapat dilihat secara abstrak sebagai sebuah
objek didalam setiap pesan yang dapat ditempatkan dari proses dan dari setiap pesan yang bisa
dipindahkan. Setiap mail box memiliki sebuah identifikasi (identitas) yang unik, sebuah proses
dapat berkomunikasi dengan beberapa proses lain melalui sebuah nomor dari mailbox yang
berbeda. Pengirim dan penerima dijabarkan sebagai berikut:
– Send (A, message) – mengirim pesan ke mailbox A.
– Receive (A, message) – menerima pesan dari mailbox A.
Komunikasi tidak langsung mempunyai sifat:
1. Sebuah link dibangun diantara sepasang proses dimana kedua proses tersebut membagi
mailbox.
2. Sebuah link mungkin dapat berasosiasi dengan lebih dari dua proses.
3. Diantara setiap pasang proses komunikasi, mungkin terdapat link yang berbeda-beda, dimana
setiap link berhubungan pada satu mailbox.
Mailbox mungkin dapat dimiliki oleh sebuah proses atau sistem operasi. Jika mailbox dimiliki
oleh proses, maka kita mendefinisikan antara pemilik (yang hanya dapat menerima pesan melalui
mailbox) dan pengguna dari mailbox (yang hanya dapat mengirim pesan ke mailbox).
Selama setiap mailbox mempunyai kepemilikan yang unik, maka tidak akan ada kebingungan
tentang siapa yang harus menerima pesan dari mailbox. Ketika proses yang memiliki mailbox
tersebut diterminasi, mailbox akan hilang. Semua proses yang mengirim pesan ke mailbox ini
diberi pesan bahwa mailbox tersebut tidak lagi ada. Dengan kata lain, mempunyai mailbox
sendiri yang independent, dan tidak melibatkan proses yang lain. Maka sistem operasi harus
memiliki mekanisme yang mengizinkan proses untuk melakukan hal-hal dibawah ini:
– Membuat mailbox baru.
– Mengirim dan menerima pesan melalui mailbox.
– Menghapus mailbox.
SEMAPHORE
Cindy Alicia Sahara (5214100172)
Ratih Kinanti A (5214100174)
Patricia Hanna S (5214100177)
Indriarti Kusumanita (5214100178)
ASAL USUL
-Dibentuk oleh E.W Djikstra pada
tahun 1960-an
- Dibuat berdasarkan
pengaturan rel kereta api
dengan penggunaan
semaphore.
- Ketika kereta sedang berada di
rel tersebut, Semaphore
kemudian akan menghindari
kereta lain agar tidak masuk ke
dalam rel selama masih ada
kereta yang menggunakan rel
tersebut
PENGERTIAN
SEMAPHORE adalah alat untuk sinkronisasi yang tidak membutuhkan
busy waiting. Semaphore S berupa variable integer. Semaphore hanya
dapat diakses melalui operasi atomic yang tak dapat diinterupsi sampai
kode selesai. Operasi dari semaphore S adalah wait dan signal
berikut :
wait (S ):
while S 0 do no-op;
S--;
signal (S ):
S++;
SIFAT
Semaphore mempunyai dua sifat, yaitu:
1. Semaphore dapat diinisialisasi dengan nilai nonnegatif.
2. Terdapat dua operasi terhadap semaphore, yaitu
Wait dan Signal.
JENIS
1.1. Binary semaphore. Semaphore ini hanya
memiliki nilai 1 atau 0. Sering juga disebut
sebagai semaphore primitif
2. Counting semaphore. Semaphore ini memiliki
nilai 0, 1, serta integer lainnya. Banyak sistem
operasi yang tidak secara langsung
mengimplementasikan semaphore ini.
PRINSIP
– Dua proses atau lebih dapat bekerja sama
dengan menggunakan penanda-penanda
sederhana. Variabel untuk penandaan ini disebut
semaphore.
– Proses dipaksa berhenti sampai proses
memperoleh penanda tertentu
FUNGSI
1. Mutual Exclusion.
Sesuai dengan prinsip mutual exclusion, jika
suatu thread sedang berada dalam critical
section-nya, thread lain harus menunggu thread
tersebut keluar dari critical section-nya sebelum
dapat memasuki critical section-nya sendiri. Di
sinilah semaphore digunakan, thread yang akan
memasuki critical section-nya akan memanggil
fungsi kunci terlebih dahulu.
FUNGSI
2. Resource Controller.
Saat thread ingin memakai resource ia akan
memanggil fungsi kunci. Jika resource masih
tersedia, thread bisa langsung menggunakannya,
sebaliknya jika semua resource sedang dipakai,
thread tersebut harus menunggu. Setelah
resource selesai dipakai thread akan memanggil
fungsi buka sehingga resource yang bebas
bertambah.
FUNGSI
3. Sinkronisasi Antar-Proses.
Ada kalanya suatu thread memerlukan resource
yang dihasilkan oleh thread lainnya. Oleh karena
itu dibutuhkan suatu mekanisme untuk
mengatur urutan eksekusi thread. Mekanisme
ini dilakukan dengan memanfaatkan
semaphore.
KEUNTUNGAN
1. Dari segi programming, penanganan masalah
sinkronisasi dengan Semaphore umumnya rapi
dan teratur, sehingga mudah untuk dibuktikan
kebenarannya
2. Semaphore diimplementasikan dalam hard
code sehingga penggunaannya bersifat portabel
KERUGIAN
Busy waiting. Apabila suatu proses menempati
critical section, dan ada proses lain yang ingin
masuk critical section, maka akan terjadi iterasi
secara terus-menerus pada entry section. Hal ini
akan menimbulkan masalah pada sistem yang
menggunakan konsep multiprogramming.
IMPLEMENTASI
Terdapat 2 buah thread yang berjalan bersamaan
Thread A dan B mengakses variabel yang sama,
yaitu count sehingga thread A dan B harus berjalan
satu-satu. Untuk itu digunakan semaphore mutex
yang berupa binary semaphore dengan nilai awal 1.
IMPLEMENTASI
Thread manapun yang mengeksekusi kunci terlebih
dahulu akan jalan terus, sedangkan thread yang tiba
belakangan akan menunggu sampai thread yang
sudah berjalan terlebih dahulu mengeksekusi buka,
setelah itu kedua thread berjalan lagi dengan
normal.
TERIMA KASIH
Download