SISTIM OPERASI
DISUSUN OLEH
NAMA : Rayhan Ahadi Nifri
NIM : 21343035
Depertemen : Elektronika
Prodi : Informatika
Dosen Pengampu : Muhammad Adri S.Pd.,M.T
Topik utama rancangan sistem operasi adalah berkaitan dengan
manajemen proses dan thread :
A. PRINSIP KONKURENSI
Pada sebuah sistem multiprogramming, berprosesor tunggal, proses
digilirkan berdasarkan waktu untuk merealisasikan yang simultan. Walaupun
pengolahan paralel yang sebenarnya tidak dapat dicapai, dan walaupun terdapat
sejumlah overhead yang terjadi dalam peralihan antarproses, eksekusi secara
bergiliran memberikan keuntungan yang penting dalam mencapai efisiensi
pengolahan dan dalam penstrukturan program. Pada sistem prosesor jamak,
tidak hanya bergiliran proses saja yang dimungkikan, namun juga
menumpangtindihkan proses tersebut dapat dilakukan.
Berikut ini adalah kesulitan yang mungkin timbul:
2. Interaksi Proses
Cara proses berinteraksi dapat diklasifikasikan berdasarkan derajat
pengetahuan keberadaan proses lainya. Tabel 5.1 memberikan tiga
derajat pengetahuan dan masing-masing konsekuensinya :
Mutual
ekslusion
Starvation
Mutual
Hasil satu proses ekslusion
Poses
menggunakan dapat
mengetahui
bergantung pada informasi
keberadaan
Kooperasi yang diperoleh dari proses Deadlock
proses lainnya
dengan bagi- lainnya.
secara tidak
pakai
lansung
Starvation
(misalnya objek
Timing proses dapat
bagi-pakai)
terpengaruh
Koherensi data
b) Usaha kedua
Masalah ada usaha pertama adalah usaha tersebut menyimpan
nama proses yang dapat masuk ke bagan kritisnya. Pada saat kita
benar-benar memerlukan informasi keadaan tentang kedua proses
tersebut akibatnya, setiap proses perlu memiliki kunci-kunci sendiri ke
bagian kritis itu sehingga apabila proses musnah, maka proses lainnya
masih dapat mengakses bagian kritiisnya untuk memenuhi persyaratan
ini sebuah vektor boolean flag di dfenisikan, dengan flag (0)
berhubungan dengan P0 dan flag (1) yang berhubungan dengan P1,
masing-masng proses dapat memeriksa flag lainnya, namun tiidak
dapat mengubahnya, ketika sebuah proses mungkinkan untuk
memasuki bagian kritis, secara perodik memeriksa flag lain nya tidak
dalam bagian kritis proses dengan langsung men-set flag-nya sendiri
ke true dan melanjutkan kebagian kritis pada saat meninggalkan
bagan krits nya, proses itu mengubah tulisan d atas papan tulisnya
menjadi (false) karena sekarang kedua proses itu berada di bagian
kritisnya, programnya menjadi salah.masalah nya adalah solusi yang
diajukan tidak indenpenden terhadap kecepatan eksekusi proses
relatif.
c) Usaha ketiga
Karena sebuah proses dapat menggantikan keadaandari proses lainnya telah
diperiksa namun sebelum proses lainya dapat memasukkan bagian
kritis, upaya kedua gagal mungkin. Seperti pada kasus sebelumnya,
apabiala sebuah proses mengalami kegagalan di dalam bagian kritis,
termasuk kode flag settingnya yang mengontrol bagian kritis, proses
lainnya akan diblokir.apabila suatu proses mengalami kegagalan di luar
bagian kritisnya, proses lain nya tidak akan diblokir. Usaha ini dapat
menjamin mutual exclusion namun menimbulkan masalah lainnya.
Setiap proses itu akan salingmengira bahwa proses lainnya telah masuk
ke bagian kritisnya yang mana hal ini akan menimbulkan deadlock.
d) Usaha keempat
Dalam usaha ketiga, sebuah proses menyetel keadaannya tanpa mengetahui
keadaan proses lainnya. Deadlock akan terjadi karena semua proses
menunntut haknya untuk dapat memasuki bagian kritisnya. Proses
menyetel flagnya untuk mengindikasikan keinginannya untuk masuk ke
bagian kritisnya. Usaha ini hampir sama dengan solusi yg benar namun
masih mengandung cacat. Mutual exlusion masih dijamin, dengan
menggunakan pemikiran yang sama seperti pada usaha ketiga.
2. Algoritma Peterson
Algoritma Dekker mampu menyelesaikan masalah mutual excluesion namun
dengan menggunakan program agak rumit yang sulit dipahami dan
kebenarannya sangat sulit dibuktikan. Peterson(PETE81) telah
memberikan solusi yangg singkat dan baik sekali. Flag variable array global
mengindikasikan bahwa posisi setiap proses dalam kaitannya dengan
mutual exclusion dan variable global turn memecahkan konflik yang
simultan. Bahwa mutual exclusion dijaga dapat dibuktian dengan mudah.
Apabila P0 itu menyetel flag(0)-nya ke true, P1 tidak bisa masuk bagian
krisisnya. Apabila P1 telah ada di dalam bagiannya, maka :
1. P1 tidak berminat memasuki bagian krisinya. Hal itu tidak mungkin
terjadi karena P1 mengimplemtasikan flag (1) = false
2. P1 sedang menunggu bagian kritisnya. Hal ini juga tidak mungkin
terjadi karna apabila turn=1, P1 dapat memasuki bagian kritisnya.
3. P1 sedangmenggunakan bagian kritisnya secara berulang-ulangdan
kemudian memonopoli akses ke bagian kritis itu. Hal ini tidak
mungkin terjadi, karena P1 mempunyai kewajiban memberikan
kesempatan kepada P0 dengan cara menyetel turn menjadi 0
sebelum memasuki bagian kritisnya.
C. MUTUAL EXCLUSION : DUKUNGAN HARDWARE
1. Interrup Disabling
Dalam sebuah mesin uniprosesor, proses konkuren tidak dapat
ditumpang-tindihkan. Proses tersebut hanya dapat digilirkan saja.disampng
itu suatu proses akan terus menerus berjalan sampai memanggiln layanan
sistem operasi atau sampai diinterupsi. Karna itu untuk menjamin mutual
exclusion maka penting untuk mencegah proses untuk mengizinkan dan
tidak mengizinkan interupsi.
b) Instruksi Exchange
Instruksi exchange dapat ditentukan : Procedure exchange(var
r:register;var m:memori);
D. SEMAPHORE
Prinsip dasarnya : dua proses atau lebih dapat berkooperasi dengan
menggunakan sinyal sederhana, sedemikian rupa sehingga suatu proses dapat
dipaksa berhenti pada posisi tertentu sampai proses tersebut menerima sinyal
tertentu. Persyaratan koordinasi yang kompleks dapat dipenuhi oleh struktur
sinyal yang sesuai. Pada pensinyalan, digunakan secara khusus yang disebut
semaphore. Untuk mengirimkan sinyal melalui semaphore s, proses melakukan
eksekusi primitive signal (s); apabila sinyal yang dimaksud belum ditransmisikan,
maka proses akan dihetikan sampai transmisi itu terjadi.
Untuk mencapai efek yang ditentukan, kita dapat melihat semaphore
sebagai variabel yang mempunyai nilai integer pada tiga operasi berikut ini :
2. Masalah Producer/Consumer
Masalah yang paling umum yang dihadapi dalam proses proses
kongkuren ; masalah produser/consumer. Pernyataan umumnya adalah:
terdapat suatu proses atau lebih yang membuat beberapa jenis data
(record caracter) dan menempatkannya di dalam buffer. Terdapat suatu
consumer yang mengambil item item tersebut dari buffer pada saat
tertentu. Sistem terpaksa mencegah terjadinya tumpang tindih pada
operasi buffer. Dengan kata lain hanya satu agen (Producer atau
consumer) yang dapat mengakses buffer pada suatu saat tertentu. Kita
akan meninjau beberapa solusi bagi masalah ini untuk menjelaskan baik
kelebihan atau pun kekurangan yang di miliki semaphore.
Gambar 5.3 menjelaskan struktur buffer b. Produser dapat
menghasilkan item dan menyimpannya di dalam buffer menurut
kecepatanya. Setiap waktu, suatu indeks (in) ke dalam bufffer di naikan.
Consumer terus melanjutkan kegiatannya dengan cara yang sama,
namun harus yakin bahwa dirinya tidak mencoba melakukan
pembacaan terhadap buffer yang kosong.
Karena itu, consumer perlu meyakinkan bahwa produser telah
melakukan kegiatanya lebih dahulu daripada dirinya (in > out) sebelum
melakukan pembacaan.
3. Implementasi semaphore
Penting sekali bahwa operasi wait dan sinyal diimlementasikan sebagai
primitive atomik, salah satu caranya adalah dengan mengimplementasikan
operasi tersebut dalan hardware dan firmware. Untuk menutupi
kekurangannya, diberikan pula beberapa teknik lainnya. Masalah penting yang
dihadapi adalah masalah muntual exclusion : pada suatu saat tertentu hanya
satu proses yang dapat memanipulasi satu semaphore baik dengan operasi
siyal maupun operasi wait. Jadi, software apa pun, misalnya algoritma Dekker
atau algoritma Peterson,dapat digunakan: hal ini akan menyebabkan terjadinya
overhead pengolahan yang cukup berpengaruh.
Prinsip-prinsip Kongkurensi
Kongkurensi merupakan kegiatan yang berhubungan dengan :
Ø Alokasi waktu pemroses untuk proses-proses yang aktif.
Ø Pemakaian bersama dan persaingan untuk mendapatkan sumber daya.
Ø Komunikasi antar proses.
B. MUTUAL EXCLUSION
Pengertian
Merupakan kondisi dimana terdapat sumber daya yang tidak dapat dipakai bersama pada
waktu yang bersamaan (misalnya : printer, disk drive) maka terdapat jaminan hanya satu
proses yang mengakses sumber daya pada satu interval tertentu.
Critical Section
Beberapa proses memiliki suatu segmen kode dimana jika segmen itu dieksekusi, maka
proses-proses itu dapat saling mengubah variabel, mengupdate suatu tabel, menulis ke
suatu file, dan lain sebagainya, dan hal ini dapat membawa proses tersebut ke dalam
bahaya race condition. Segmen kode yang seperti inilah yang disebut Critical Section.
Sedangkan race condition sendiri adalah kondisi dimana ada beberapa proses yang
memanipulasi suatu data secara kongkuren, sehingga data tersebut tidak sinkron lagi.
Nilai akhirnya akan tergantung pada proses mana yang terakhir dieksekusi. Maka
dibutuhkan sinkronisasi.
Metode-metode dan Algoritma untuk Menjamin Mutual Exclusion
a. Disabling interrupt / mematikan interupsi
Dengan cara mematikan interupsi yang masuk pada saat proses sedang berada pada
critical section-nya. Cara ini kadang cukup berguna untuk kernel tetapi tidak untuk
user. Dan cara inipun tidak terlalu baik untuk CPU yang jumlahnya lebih dari satu,
dimana disable interrupt hanya mengenai CPU yang sedang menjalankan proses itu
dan tidak berpengaruh terhadap CPU lain
b. Lock variables
Setiap proses yang akan mengakses ke critical section-nya harus meng-cek lock
variable. Jika 0 berarti proses dapat memasuki critical section-nya dan jika 1 maka
proses harus menunggu sampai lock variable = 0. Kelemahannya adalah 2 proses
masih dapat memasuki critical section-nya pada saat yang bersamaan. Sewaktu satu
proses meng-cek lock variable = 0, pada saat akan men-set 1 ada interupsi untuk
melaksanakan proses lain yang juga ingin memasuki critical sectionnya, maka akan
terjadi race condition.
c. Strict alternation
Dengan mengamati variable turn untuk menentukan siapa yang akan memasuki
critical section-nya bukanlah ide yang baik jika proses lebih lambat dari yang lain.
d. Peterson’s Solution
Proses tidak akan diteruskan sampai while terpenuhi, bila interested[other] = TRUE,
maka proses akan menunggu sampai FALSE.
Kelemahannya : jika proses memanggil enter_region-nya secara hampir bersamaan,
yang disimpan di turn adalah data yang ditulis terakhir.
e. Test and Set Lock Instruction / Instruksi TSL
Dengan bantuan hardware, menentukan siapa yang berhak memasuki critical_region
(section)
C. SINKRONISASI
Pengertian
Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang
bersamaan. Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsitensi data
karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk
mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan
terhindar dari deadlock dan starvation. Sinkronisasi umumnya dilakukan dengan bantuan
perangkat sinkronisasi. Penyelesaian terhadap masalah ini sangat penting karena
perkembangan teknologi sistem komputer menuju ke sistem multiprocessing, terdistribusi
dan paralel yang mengharuskan adanya proses-proses kongkuren.
Prinsip Kerja Call Sleep Dan Call Wake Up Pada Kasus Produser Dan Consumer
Dua proses berbagi sebuah buffer dengan ukuran yang tetap. Salah satunya
produser, meletakkan informasi ke buffer yang lainnya. Konsumen mengambil informasi
dari buffer. Ini juga dapat digeneralisasi untuk masalah yang memiliki m buah produsen
dan n buah konsumen, tetapi kita hanya akan memfokuskan kasus dengan satu
produsen dan satu konsumen karena diasumsikan dapat menyederhanakan solusi.
Masalah akan timbul ketika produsen ingin menaruh barang yang baru tetapi
buffer sudah penuh. Solusi untuk produsen adalah istirahat (sleep) dan akan
dibangunkan ketika konsumen telah mengambil satu atau lebih barang dari buffer.
Biasanya jika konsumen ingin mengambil barang dari buffer dan melihat bahwa buffer
sedang kosong, maka konsumen istirahat (sleep) sampai produsen meletakkan barang
pada buffer dan membangunkan (wake up) consumer.
Untuk mengetahui jumlah barang di buffer, kita membutuhkan sebuah variabel
kita namakan count. Jika jumlah maksimum dairi barang yang dapat ditampung buffer
adalah N, kode produser pertama kali akan mencoba untuk mengetahui apakah nilai
count sama dengan nilai N. Jika itu terjadi maka produsen akan istirahat (sleep), tetapi
jika nilai count tidak sama dengan N, produsen akan terus menambahkan barang dan
menaikkan nilai count.